CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)

適用対象:yesSQL Server (サポートされているすべてのバージョン) YesAzure SQL Database YesAzure SQL Managed Instance yesAzure Synapse Analytics yesAnalytics Platform System (PDW)

データベースの資格情報を作成します。 データベースの資格情報は、サーバー ログインまたはデータベース ユーザーにマップされません。 アクセスを必要とする操作がデータベースで実行されている場合はいつも、データベースでは資格情報を使用して外部の場所へのアクセスが行われます。

Topic link iconTransact-SQL 構文表記規則

構文

CREATE DATABASE SCOPED CREDENTIAL credential_name
WITH IDENTITY = 'identity_name'
    [ , SECRET = 'secret' ]

Note

SQL Server 2014 以前の Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

credential_name 作成するデータベース スコープの資格情報の名前を指定します。 credential_name はシャープ (#) 記号で始めることはできません。 システム資格情報は ## で始まります。

IDENTITY ='identity_name' サーバーの外部に接続するときに使用するアカウントの名前を指定します。 共有キーを使用して Azure Blob Storage からファイルをインポートするには、ID 名が SHARED ACCESS SIGNATURE である必要があります。 データを Azure Synapse Analytics に読み込むには、任意の有効な値を ID に使用できます。 Shared Access Signature の詳細については、「Shared Access Signatures (SAS) の使用」をご覧ください。 Kerberos (Windows Active Directory または MIT KDC) の使用時には、IDENTITY 引数でドメイン名を使用しないでください。 アカウント名にしておけば問題ありません。

重要

Kerberos 認証をサポートする PolyBase 外部データ ソースは Hadoop だけです。 他のすべての外部データ ソース (SQL Server、Oracle、Teradata、MongoDB、汎用 ODBC) は、基本認証のみをサポートします。

注意

Azure Blob Storage 内のコンテナーで匿名アクセスが有効になっている場合は、WITH IDENTITY を使用する必要はありません。 Azure Blob Storage に対するクエリの例については、「Azure Blob Storage に格納されているファイルからテーブルへのインポート」を参照してください。

SECRET ='secret' 送信の認証に必要なシークレットを指定します。 SECRET は、Azure Blob Storage からファイルをインポートするために必要です。 Azure Blob Storage から Azure Synapse Analytics または Parallel Data Warehouse に読み込むには、シークレットが Azure Storage キーである必要があります。

警告

SAS キーの値は '?' (疑問符) で始まる可能性があります。 SAS キーを使用する場合は、先頭の '?' を削除する必要があります。 そうしないと、作業がブロックされる可能性があります。

解説

データベース スコープ資格情報は、SQL Server 外部のリソースへの接続に必要な認証情報を含むレコードです。 通常、資格情報には Windows ユーザーとパスワードが含まれます。

データベース スコープ資格情報を作成する前に、データベースに資格情報を保護するためのマスター キーが必要です。 詳細については、「CREATE MASTER KEY (Transact-SQL)」を参照してください。

IDENTITY が Windows ユーザーの場合、このシークレットはパスワードにすることができます。 シークレットはサービス マスター キーを使用して暗号化されます。 サービス マスター キーが再生成された場合、シークレットは新しいサービス マスター キーを使用して再度暗号化されます。

データベース スコープの資格情報に関する情報は、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 INSERTOPENROWSET は、データベース スコープ資格情報を使用して Azure Blob Storage からデータにアクセスします。 詳しくは、「Azure BLOB ストレージのデータに一括アクセスする例」をご覧ください。

アクセス許可

データベースに対する 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 INSERTOPENROWSET など、一括操作できる外部データ ソースの作成に使用できるデータベース スコープ資格情報を作成します。 Shared Access Signatures は、SQL Server、APS、または Azure Synapse Analytics では PolyBase と共に使用できません。

-- 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 は、Azure Active Directory アプリケーションをサービス間認証に使用します。 データベース スコープ資格情報を作成する前に、AAD アプリケーションを作成し、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>'
;

詳細情報