CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)
適用対象: SQL Server
Azure SQL データベース
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
データベースの資格情報を作成します。 データベースの資格情報は、サーバー ログインまたはデータベース ユーザーにマップされません。 アクセスを必要とする操作がデータベースで実行されている場合はいつも、データベースでは資格情報を使用して外部の場所へのアクセスが行われます。
構文
CREATE DATABASE SCOPED CREDENTIAL credential_name
WITH IDENTITY = 'identity_name'
[ , SECRET = 'secret' ]
[ ; ]
Note
SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。
引数
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 は無視されます。
- Azure Blob Storage 内のコンテナーで匿名アクセスが有効になっている場合は、WITH IDENTITY を使用する必要はありません。 Azure Blob Storage に対するクエリの例については、「Azure Blob Storage に格納されているファイルからテーブルへのインポート」を参照してください。
重要
Kerberos 認証をサポートする PolyBase 外部データ ソースは Hadoop だけです。 他のすべての外部データ ソース (SQL Server、Oracle、Teradata、MongoDB、汎用 ODBC) は、基本認証のみをサポートします。
- データを 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、またはストレージ アクセス キーを指定できます。
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 と OPENROWSET は、データベース スコープの資格情報を使って、Azure Blob Storage のデータにアクセスします。 詳しくは、「Azure BLOB ストレージのデータに一括アクセスする例」をご覧ください。
PolyBaseAzure SQL Managed Instance のデータ仮想化機能を使用して、データベース スコープの資格情報使用します。
BACKUP TO URL と RESTORE FROM URL の場合は、代わりに CREATE CREDENTIAL (Transact-SQL) 経由でサーバー レベルの資格情報を使用します。
アクセス許可
データベースに対する CONTROL 権限が必要です。
SQL Server 2022
SQL Server 2022 (16.x) 以降、Hadoop に代わりに REST-API 呼び出しを使用する新しい種類のコネクタが導入されました。 Azure Blob Storage と Azure Data Lake Gen 2 の場合、サポートされている認証方法は SHARED ACCESS SIGNATURE
のみです。
詳しくは、「CREATE EXTERNAL DATA SOURCE」をご覧ください。
例
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 や OPENROWSET など、一括操作できる外部データ ソースの作成に使用できるデータベース スコープ資格情報を作成します。
-- 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>'
;