適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Microsoft Fabric SQL Database
データベースの資格情報を作成します。 データベースの資格情報は、サーバー ログインまたはデータベース ユーザーにマップされません。 アクセスを必要とする操作がデータベースで実行されている場合はいつも、データベースでは資格情報を使用して外部の場所へのアクセスが行われます。
構文
CREATE DATABASE SCOPED CREDENTIAL credential_name
WITH IDENTITY = 'identity_name'
[ , SECRET = 'secret' ]
[ ; ]
引数
credential_name
作成するデータベース スコープの資格情報の名前を指定します。
credential_name 番号 (#
) 記号で始めることはできません。 システム資格情報は、 ##
で始まります。
credential_nameの最大長は 128 文字です。
IDENTITY = 'identity_name'
サーバーの外部に接続するときに使用するアカウントの名前を指定します。
- 共有キーを使用して Azure Blob Storage または Azure Data Lake Storage からファイルをインポートするには、ID 名が
SHARED ACCESS SIGNATURE
である必要があります。 Shared Access Signature の詳細については、「Shared Access Signatures (SAS) の使用」をご覧ください。 Shared Access Signature 用にIDENTITY = SHARED ACCESS SIGNATURE
を使うだけです。 - マネージド ID を使用して Azure Blob Storage からファイルをインポートするには、ID 名が
MANAGED IDENTITY
である必要があります。 - Kerberos (Windows Active Directory または MIT KDC) を使用する場合は、
IDENTITY
引数にドメイン名を使用しないでください。 アカウント名にしておけば問題ありません。 - SQL Server インスタンスで、
SECRET
として使用されるストレージ アクセス キーを使用してデータベース スコープの資格情報を作成する場合、IDENTITY
は無視されます。 -
WITH IDENTITY
は、Azure Blob Storage 内のコンテナーで匿名アクセスが有効になっている場合は必要ありません。OPENROWSET BULK
を使用して Azure Blob Storage にクエリを実行する例については、「Azure Blob Storage に格納されているファイルからテーブルにインポートする」を参照してください。 - SQL Server 2022 (16.x) 以降のバージョンでは、REST-API コネクタによって HADOOP が置き換えられます。 Azure Blob Storage と Azure Data Lake Gen 2 の場合、サポートされている認証方法は Shared Access Signature のみです。 詳細については、「 CREATE EXTERNAL DATA SOURCE (Transact-SQL)」を参照してください。
- SQL Server 2019 (15.x) では、Kerberos 認証をサポートする PolyBase 外部データ ソースは Hadoop のみです。 他のすべての外部データ ソース (SQL Server、Oracle、Teradata、MongoDB、汎用 ODBC) は、基本認証のみをサポートします。
- Azure Synapse Analytics の SQL プールには、次の注意事項があります。
- Azure Synapse Analytics にデータを読み込むには、任意の有効な値を
IDENTITY
に使用できます。 - Azure Synapse Analytics サーバーレス SQL プールでは、データベース スコープの資格情報で、ワークスペースのマネージド ID、サービス プリンシパル名、または Shared Access Signature (SAS) トークンを指定できます。 Microsoft Entra パススルー認証によって有効になっているユーザー ID を介したアクセスは、パブリックに使用可能なストレージへの匿名アクセスと同様に、データベース スコープの資格情報を使用して行うこともできます。 詳しくは、「サポートされているストレージ承認の種類」を参照してください。
- Azure Synapse Analytics 専用 SQL プールでは、データベース スコープの資格情報で、Shared Access Signature (SAS) トークン、カスタム アプリケーション ID、ワークスペースマネージド ID、またはストレージ アクセス キーを指定できます。
- Azure Synapse Analytics にデータを読み込むには、任意の有効な値を
認証 | T-SQL | サポートされています | メモ |
---|---|---|---|
Shared Access Signature (SAS) | CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = 'secret'; |
SQL Server 2022、Azure SQL Managed Instance、Azure Synapse Analytics、Azure SQL Database | |
マネージド ID | CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'MANAGED IDENTITY'; |
Azure SQL Database、SQL マネージド ID | |
ユーザー ID を使用した Microsoft Entra パススルー認証 | CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'USER IDENTITY'; |
Azure SQL データベース | Azure Synapse で、「Microsoft Entra Connect: パススルー認証」を参照してください |
S3 アクセス キーの基本認証 | CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'S3 ACCESS KEY', SECRET = '<accesskey>:<secretkey>'; |
SQL Server 2022 | |
Kerberos (Windows Active Directory または MIT KDC) または ODBC データ ソース用 |
CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = '<identity_name>', SECRET = '<secret>' ; |
Hadoop のみのバージョンの SQL |
SECRET = 'secret'
送信の認証に必要なシークレットを指定します。
SECRET
は、Azure Blob Storage からファイルをインポートするために必要です。 Azure Blob Storage から Azure Synapse Analytics または Parallel Data Warehouse に読み込むには、シークレットが Azure Storage キーである必要があります。
警告
SAS キーの値は '?' (疑問符) で始まる可能性があります。 SAS キーを使用する場合は、先頭の '?' を削除する必要があります。 そうしないと、作業がブロックされる可能性があります。
解説
データベース スコープ資格情報は、SQL Server 外部のリソースへの接続に必要な認証情報を含むレコードです。 通常、資格情報には Windows ユーザーとパスワードが含まれます。
データベース スコープ資格情報内の機密情報を保護するには、データベース マスター キー (DMK) が必要です。 DMK は、データベース スコープ資格情報のシークレットを暗号化する対称キーです。 データベース スコープの資格情報を作成するには、データベースに DMK が必要です。 DMK は強力なパスワードで暗号化する必要があります。 Azure SQL Database では、データベース スコープ資格情報の作成の一環として、またはサーバー監査の作成の一環として、強力でランダムに選択されたパスワードを持つ DMK が作成されます。 ユーザーは論理 master
データベースに DMK を作成できません。 マスター キーのパスワードは Microsoft では不明であり、作成後は検出できません。 このため、データベース スコープ資格情報を作成する前に DMK を作成することをお勧めします。 詳細については、「CREATE MASTER KEY (Transact-SQL)」を参照してください。
IDENTITY が Windows ユーザーの場合、このシークレットはパスワードにすることができます。 シークレットは、サービス マスター キー (SMK) を使用して暗号化されます。 SMK が再生成された場合、シークレットは新しい SMK を使用して再暗号化されます。
PolyBase 外部テーブルで使用するために共有アクセス署名 (SAS) にアクセス許可を付与する場合は、許可されるリソースの種類として [コンテナー] と [オブジェクト] の両方を選びます。 許可されていない場合は、外部テーブルにアクセスしようとすると、エラー 16535 または 16561 が表示されることがあります。
データベース スコープの資格情報に関する情報は、sys.database_scoped_credentials カタログ ビューで確認できます。
ここでは、データベース スコープ資格情報のアプリケーションをいくつか示します。
SQL Server は、PolyBase を使用するパブリックではない Azure Blob Storage または Kerberos でセキュリティ保護された Hadoop クラスターにアクセスするために、データベース スコープの資格情報を使います。 詳しくは、「CREATE EXTERNAL DATA SOURCE (Transact-SQL)」をご覧ください。
Azure Synapse Analytics は、PolyBase を使用するパブリックではない Azure Blob Storage にアクセスするために、データベース スコープの資格情報を使います。 詳しくは、「CREATE EXTERNAL DATA SOURCE (Transact-SQL)」をご覧ください。 Azure Synapse ストレージ認証の詳細については、「Synapse SQL で外部テーブルを使用する」を参照してください。
SQL Database では、 なクエリ 機能にデータベース スコープの資格情報が使用されます。 これは、複数のデータベース シャード間でクエリする機能です。
SQL Database は、データベース スコープの資格情報を使って、Azure Blob Storage に拡張イベント ファイルを書き込みます。
SQL Database は、エラスティック プールにデータベース スコープ資格情報を使用します。 詳しくは、エラスティック データベースでの急増の緩和に関する記事をご覧ください
BULK INSERT (Transact-SQL) と OPENROWSET (Transact-SQL) では 、データベース スコープの資格情報を使用して、Azure Blob Storage からデータにアクセスします。 詳しくは、「Azure BLOB ストレージのデータに一括アクセスする例」をご覧ください。
PolyBaseAzure SQL Managed Instance のデータ仮想化機能を使用して、データベース スコープの資格情報使用します。
BACKUP TO URL
とRESTORE FROM URL
の場合は、代わりに CREATE CREDENTIAL (Transact-SQL) を使用してサーバー レベルの資格情報を使用します。
アクセス許可
データベースに対する CONTROL 権限が必要です。
例
A。 アプリケーションのデータベース スコープ資格情報を作成する
次の例では、AppCred
というデータベース スコープ資格情報を作成します。 データベース スコープ資格情報には Windows ユーザー Mary5
とパスワードが含まれます。
-- Create a db master key if one does not already exist, using your own password.
CREATE MASTER KEY ENCRYPTION BY PASSWORD='<EnterStrongPasswordHere>';
-- Create a database scoped credential.
CREATE DATABASE SCOPED CREDENTIAL AppCred WITH IDENTITY = 'Mary5',
SECRET = '<EnterStrongPasswordHere>';
B. Shared Access Signature のデータベース スコープ資格情報を作成する
次の例では、BULK INSERT (Transact-SQL) や OPENROWSET (Transact-SQL) などの一括操作を実行できる、外部データ ソースの作成に使用できるデータベース スコープ資格情報を作成します。
-- Create a db master key if one does not already exist, using your own password.
CREATE MASTER KEY ENCRYPTION BY PASSWORD='<EnterStrongPasswordHere>';
-- Create a database scoped credential.
CREATE DATABASE SCOPED CREDENTIAL MyCredentials
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = 'QLYMgmSXMklt%2FI1U6DcVrQixnlU5Sgbtk1qDRakUBGs%3D';
C: Azure Data Lake Store への PolyBase 接続のデータベース スコープ資格情報を作成する
次の例では、Azure Synapse Analytics で PolyBase によって使用できる外部データ ソースの作成に使用できるデータベース スコープ資格情報を作成します。
Azure Data Lake Store では、サービス間認証に Microsoft Entra アプリケーションを使用します。
Microsoft Entra アプリケーションを作成し データベース スコープの資格情報を作成する前に、client_id、OAuth_2.0_Token_EndPoint、およびキーを文書化します。
-- Create a db master key if one does not already exist, using your own password.
CREATE MASTER KEY ENCRYPTION BY PASSWORD='<EnterStrongPasswordHere>';
-- Create a database scoped credential.
CREATE DATABASE SCOPED CREDENTIAL ADL_User
WITH
IDENTITY = '<client_id>@<OAuth_2.0_Token_EndPoint>',
SECRET = '<key>'
;