CREATE CREDENTIAL (Transact-SQL)CREATE CREDENTIAL (Transact-SQL)

適用対象:○SQL Server (2008 以降) ○Azure SQL Database (Managed Instance のみ) ×Azure SQL Data Warehouse ×Parallel Data Warehouse APPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database (Managed Instance only) noAzure SQL Data Warehouse noParallel Data Warehouse

サーバー レベルの資格情報を作成します。Creates a server-level credential. 資格情報は、SQL Server 外部のリソースへの接続に必要な認証情報を含むレコードです。A credential is a record that contains the authentication information that is required to connect to a resource outside SQL Server. 通常、資格情報には Windows ユーザーとパスワードが含まれます。Most credentials include a Windows user and password. たとえば、どこかにデータベースのバックアップを保存するには、その場所にアクセスするための特別な資格情報を SQL Server で提供することが必要な場合があります。For example, saving a database backup to some location might require SQL Server to provide special credentials to access that location. 詳しくは、「資格情報 (データベース エンジン)」をご覧ください。For more information, see Credentials (Database Engine).

注意

データベース レベルで資格情報を作成するには、CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL) を使います。To make the credential at the database-level use CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL). サーバーの複数のデータベースで同じ資格情報を使う必要がある場合は、サーバー レベルの資格情報を使います。Use a server-level credential when you need to use the same credential for multiple databases on the server. データベースの移植性を高めるには、データベース スコープの資格情報を使います。Use a database-scoped credential to make the database more portable. 新しいサーバーにデータベースを移動するとき、データベース スコープの資格情報はそれと共に移動します。When a database is moved to a new server, the database scoped credential will move with it. SQL DatabaseSQL Database ではデータベース スコープの資格情報を使います。Use database scoped credentials on SQL DatabaseSQL Database.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

  
CREATE CREDENTIAL credential_name   
WITH IDENTITY = 'identity_name'  
    [ , SECRET = 'secret' ]  
        [ FOR CRYPTOGRAPHIC PROVIDER cryptographic_provider_name ]  

引数Arguments

credential_namecredential_name
作成する資格情報の名前を指定します。Specifies the name of the credential being created. credential_name はシャープ (#) 記号で始めることはできません。credential_name cannot start with the number (#) sign. システム資格情報は ## で始まります。System credentials start with ##. 共有アクセス署名 (SAS) を使用する場合、この名前はコンテナー パスと一致し、https で始まる必要があります。スラッシュを含めることはできません。When using a shared access signature (SAS), this name must match the container path, start with https and must not contain a forward slash. 後述の D の例を参照してください。See example D below.

IDENTITY ='identity_name'IDENTITY ='identity_name'
サーバーの外部に接続するときに使用するアカウントの名前を指定します。Specifies the name of the account to be used when connecting outside the server. Azure Key Vault へのアクセスに資格情報を使うときは、IDENTITY はキー コンテナーの名前です。When the credential is used to access the Azure Key Vault, the IDENTITY is the name of the key vault. 後述の C の例を参照してください。See example C below. 資格情報で Shared Access Signature (SAS) を使っているときは、IDENTITYSHARED ACCESS SIGNATURE です。When the credential is using a shared access signature (SAS), the IDENTITY is SHARED ACCESS SIGNATURE. 後述の D の例を参照してください。See example D below.

重要

Azure SQL Database でサポートされるのは、Azure Key Vault と Shared Access Signature の ID のみです。Azure SQL Database only supports Azure Key Vault and Shared Access Signature identities. Windows ユーザー ID はサポートされません。Windows user identities are not supported.

SECRET ='secret'SECRET ='secret'
送信の認証に必要なシークレットを指定します。Specifies the secret required for outgoing authentication.

Azure Key Vault へのアクセスに資格情報を使うときは、CREATE CREDENTIALSECRET 引数に、Azure Active Directory のサービス プリンシパルの <クライアント ID> (ハイフンなし) と <シークレット> を間のスペースなしで渡す必要があります。When the credential is used to access the Azure Key Vault the SECRET argument of CREATE CREDENTIAL requires the <Client ID> (without hyphens) and <Secret> of a Service Principal in the Azure Active Directory to be passed together without a space between them. 後述の C の例を参照してください。See example C below. 資格情報が Shared Access Signature を使っている場合は、SECRET は Shared Access Signature トークンです。When the credential is using a shared access signature, the SECRET is the shared access signature token. 後述の D の例を参照してください。See example D below. Azure コンテナーで格納済みアクセス ポリシーと Shared Access Signature を作成する方法について詳しくは、「レッスン 1:Azure コンテナーに格納済みアクセス ポリシーと Shared Access Signature を作成する」をご覧ください。For information about creating a stored access policy and a shared access signature on an Azure container, see Lesson 1: Create a stored access policy and a shared access signature on an Azure container.

FOR CRYPTOGRAPHIC PROVIDER cryptographic_provider_nameFOR CRYPTOGRAPHIC PROVIDER cryptographic_provider_name
"拡張キー管理プロバイダー (EKM)" の名前を指定します。Specifies the name of an Enterprise Key Management Provider (EKM). キーの管理について詳しくは、「拡張キー管理 (EKM)」をご覧ください。For more information about Key Management, see Extensible Key Management (EKM).

RemarksRemarks

IDENTITY が Windows ユーザーの場合、このシークレットはパスワードにすることができます。When IDENTITY is a Windows user, the secret can be the password. シークレットはサービス マスター キーを使用して暗号化されます。The secret is encrypted using the service master key. サービス マスター キーが再生成された場合、シークレットは新しいサービス マスター キーを使用して再度暗号化されます。If the service master key is regenerated, the secret is re-encrypted using the new service master key.

資格情報を作成した後、CREATE LOGIN または ALTER LOGIN を使って、この資格情報を SQL ServerSQL Server ログインにマップすることができます。After creating a credential, you can map it to a SQL ServerSQL Server login by using CREATE LOGIN or ALTER LOGIN. 1 つの SQL ServerSQL Server ログインは 1 つの資格情報だけにマップできますが、1 つの資格情報は複数の SQL ServerSQL Server ログインにマップできます。A SQL ServerSQL Server login can be mapped to only one credential, but a single credential can be mapped to multiple SQL ServerSQL Server logins. 詳しくは、「資格情報 (データベース エンジン)」をご覧ください。For more information, see Credentials (Database Engine). サーバー レベルの資格情報は、ログインにのみマップでき、データベース ユーザーにはマップできません。A server-level credential can only be mapped to a login, not to a database user.

資格情報に関する情報は、sys.credentials カタログ ビューで確認できます。Information about credentials is visible in the sys.credentials catalog view.

ログインにマップされたプロバイダーの資格情報がない場合は、 SQL ServerSQL Server サービス アカウントにマップされた資格情報が使用されます。If there is no login mapped credential for the provider, the credential mapped to SQL ServerSQL Server service account is used.

それぞれが異なるプロバイダーで使用される資格情報であれば、1 つのログインに複数の資格情報をマップできます。A login can have multiple credentials mapped to it as long as they are used with distinctive providers. マップされた資格情報は、各ログインで各プロバイダーにつき 1 つだけ存在する必要があります。There must be only one mapped credential per provider per login. 同じ資格情報を他のログインにマップすることはできます。The same credential can be mapped to other logins.

アクセス許可Permissions

ALTER ANY CREDENTIAL 権限が必要です。Requires ALTER ANY CREDENTIAL permission.

使用例Examples

A.A. 基本的な例Basic Example

次の例では、資格情報 AlterEgo を作成します。The following example creates the credential called AlterEgo. この資格情報には Windows ユーザー Mary5 とパスワードが含まれます。The credential contains the Windows user Mary5 and a password.

CREATE CREDENTIAL AlterEgo WITH IDENTITY = 'Mary5',   
    SECRET = '<EnterStrongPasswordHere>';  
GO  

B.B. EKM の資格情報の作成Creating a Credential for EKM

次の例では、以前に EKM 管理ツールを使って EKM モジュール上に作成した User1OnEKM というアカウントを、基本的なアカウントの種類とパスワードと共に使用します。The following example uses a previously created account called User1OnEKM on an EKM module through the EKM's Management tools, with a basic account type and password. サーバーの sysadmin アカウントで、EKM アカウントへの接続に使用する資格情報を作成し、User1 SQL ServerSQL Server アカウントに割り当てます。The sysadmin account on the server creates a credential that is used to connect to the EKM account, and assigns it to the User1SQL ServerSQL Server account:

CREATE CREDENTIAL CredentialForEKM  
    WITH IDENTITY='User1OnEKM', SECRET='<EnterStrongPasswordHere>'  
    FOR CRYPTOGRAPHIC PROVIDER MyEKMProvider;  
GO  
  
/* Modify the login to assign the cryptographic provider credential */  
ALTER LOGIN Login1  
ADD CREDENTIAL CredentialForEKM;  
  
/* Modify the login to assign a non cryptographic provider credential */   
ALTER LOGIN Login1  
WITH CREDENTIAL = AlterEgo;  
GO  

C.C. Azure キー コンテナーを使用する EKM の資格情報の作成Creating a Credential for EKM Using the Azure Key Vault

次の例では、SQL Server コネクタ for Microsoft Azure Key Vault を使って Azure Key Vault にアクセスするときに使う、データベース エンジンDatabase Engine用の SQL ServerSQL Server 資格情報を作成します。The following example creates a SQL ServerSQL Server credential for the データベース エンジンDatabase Engine to use when accessing the Azure Key Vault using the SQL Server Connector for Microsoft Azure Key Vault. SQL ServerSQL Server コネクタの完全な使用例については、「Azure Key Vault を使用する拡張キー管理 (SQL Server)」をご覧ください。For a complete example of using the SQL ServerSQL Server Connector, see Extensible Key Management Using Azure Key Vault (SQL Server).

重要

CREATE CREDENTIALIDENTITY 引数には、資格情報コンテナー名が必要です。The IDENTITY argument of CREATE CREDENTIAL requires the key vault name. CREATE CREDENTIALSECRET 引数には、<クライアント ID> (ハイフンなし) と <シークレット> を、間にスペースを入れずに一緒に渡す必要があります。The SECRET argument of CREATE CREDENTIAL requires the <Client ID> (without hyphens) and <Secret> to be passed together without a space between them.

次の例で、 クライアント ID (EF5C8E09-4D2A-4A76-9998-D93440D8115D) はハイフンを削除した文字列 EF5C8E094D2A4A769998D93440D8115D として入力し、 シークレット は文字列 SECRET_DBEngineとして入力しています。In the following example, the Client ID (EF5C8E09-4D2A-4A76-9998-D93440D8115D) is stripped of the hyphens and entered as the string EF5C8E094D2A4A769998D93440D8115D and the Secret is represented by the string SECRET_DBEngine.

USE master;  
CREATE CREDENTIAL Azure_EKM_TDE_cred   
    WITH IDENTITY = 'ContosoKeyVault',   
    SECRET = 'EF5C8E094D2A4A769998D93440D8115DSECRET_DBEngine'   
    FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov ;  

次の例では、クライアント IDシークレットの文字列に変数を使って、同じ資格情報を作成します。これらの文字列は連結されて SECRET 引数を形成します。The following example creates the same credential by using variables for the Client ID and Secret strings, which are then concatenated together to form the SECRET argument. REPLACE 関数は、クライアント ID からハイフンを取り除く目的で使用されています。The REPLACE function is used to remove the hyphens from the Client ID.

DECLARE @AuthClientId uniqueidentifier = 'EF5C8E09-4D2A-4A76-9998-D93440D8115D';  
DECLARE @AuthClientSecret varchar(200) = 'SECRET_DBEngine';  
DECLARE @pwd varchar(max) = REPLACE(CONVERT(varchar(36), @AuthClientId) , '-', '') + @AuthClientSecret;  
  
EXEC ('CREATE CREDENTIAL Azure_EKM_TDE_cred   
    WITH IDENTITY = 'ContosoKeyVault', SECRET = ''' + @PWD + '''   
    FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov ;');  

D.D. SAS トークンを使用する資格情報の作成Creating a Credential using a SAS Token

適用対象: SQL Server 2014 (12.x)SQL Server 2014 (12.x) から現在のバージョンまで。Applies to: SQL Server 2014 (12.x)SQL Server 2014 (12.x) through current version.

次の例では、SAS トークンを使用して共有アクセス署名資格情報を作成します。The following example creates a shared access signature credential using a SAS token. Azure コンテナーで格納済みアクセス ポリシーと Shared Access Signature を作成してから、Shared Access Signature を使って資格情報を作成するチュートリアルについては、「チュートリアル:Microsoft Azure Blob Storage サービスと SQL Server 2016 データベースの使用」をご覧ください。For a tutorial on creating a stored access policy and a shared access signature on an Azure container, and then creating a credential using the shared access signature, see Tutorial: Using the Microsoft Azure Blob storage service with SQL Server 2016 databases.

重要

CREDENTIAL NAME 引数では、名前がコンテナーのパス (https で始まり、末尾のスラッシュを含まないもの) と一致する必要があります。THE CREDENTIAL NAME argument requires that the name match the container path, start with https and not contain a trailing forward slash. IDENTITY 引数には、名前 SHARED ACCESS SIGNATURE が必要です。The IDENTITY argument requires the name, SHARED ACCESS SIGNATURE. SECRET 引数には、Shared Access Signature トークンが必要です。The SECRET argument requires the shared access signature token.

SHARED ACCESS SIGNATURE シークレットの先頭を ? にすることはできません。The SHARED ACCESS SIGNATURE secret should not have the leading ?.

USE master  
CREATE CREDENTIAL [https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>] -- this name must match the container path, start with https and must not contain a trailing forward slash.  
   WITH IDENTITY='SHARED ACCESS SIGNATURE' -- this is a mandatory string and do not change it.   
   , SECRET = 'sharedaccesssignature' -- this is the shared access signature token   
GO    

参照See Also

資格情報 (データベース エンジン) Credentials (Database Engine)
ALTER CREDENTIAL (Transact-SQL) ALTER CREDENTIAL (Transact-SQL)
DROP CREDENTIAL (Transact-SQL) DROP CREDENTIAL (Transact-SQL)
CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL) CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)
CREATE LOGIN (Transact-SQL) CREATE LOGIN (Transact-SQL)
ALTER LOGIN (Transact-SQL) ALTER LOGIN (Transact-SQL)
sys.credentials (Transact-SQL) sys.credentials (Transact-SQL)
レッスン 2:Shared Access Signature を使用して SQL Server 資格情報を作成する Lesson 2: Create a SQL Server credential using a shared access signature
Shared Access SignaturesShared Access Signatures