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

S’APPLIQUE À : ouiSQL Server ouiAzure SQL Database (Managed Instance uniquement) nonAzure Synapse Analytics (SQL DW) nonParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database (Managed Instance only) noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Crée des informations d’identification au niveau du serveur.Creates a server-level credential. Les informations d’identification sont un enregistrement qui contient les informations d’authentification requises pour la connexion à une ressource en dehors de SQL Server.A credential is a record that contains the authentication information that is required to connect to a resource outside SQL Server. La plupart des informations d'identification incluent un utilisateur et un mot de passe Windows.Most credentials include a Windows user and password. Par exemple, pour enregistrer une sauvegarde de base de données à un certain emplacement, il peut être nécessaire que SQL Server fournisse des informations d’identification spéciales afin d’accéder à cet emplacement.For example, saving a database backup to some location might require SQL Server to provide special credentials to access that location. Pour plus d’informations, consultez Informations d’identification (moteur de base de données).For more information, see Credentials (Database Engine).

Notes

Pour créer les informations d’identification au niveau de la base de données, utilisez CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).To make the credential at the database-level use CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL). Utilisez des informations d’identification au niveau du serveur quand vous avez besoin d’utiliser les mêmes informations d’identification pour plusieurs bases de données sur le serveur.Use a server-level credential when you need to use the same credential for multiple databases on the server. Utilisez des informations d’identification délimitées à la base de données afin d’accroître la portabilité de la base de données.Use a database-scoped credential to make the database more portable. Quand une base de données est déplacée vers un nouveau serveur, les informations d’identification délimitées à la base de données le sont également.When a database is moved to a new server, the database scoped credential will move with it. Utilisez des informations d’identification délimitées à la base de données sur SQL DatabaseSQL Database.Use database scoped credentials on SQL DatabaseSQL Database.

Icône de lien de rubrique Conventions de la syntaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SyntaxeSyntax

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

ArgumentsArguments

credential_name : Spécifie le nom des informations d’identification à créer.credential_name Specifies the name of the credential being created. credential_name ne peut pas commencer par le signe dièse (#).credential_name cannot start with the number (#) sign. Les informations d'identification système commencent avec ##.System credentials start with ##.

Important

Quand vous utilisez une signature d’accès partagé (SAP), ce nom doit correspondre au chemin du conteneur, commencer par https, et ne pas contenir de barre oblique.When using a shared access signature (SAS), this name must match the container path, start with https and must not contain a forward slash. Consultez l’exemple D.See example D.

IDENTITY =’ identity_name  : Spécifie le nom du compte à utiliser lors d’une connexion en dehors du serveur.IDENTITY ='identity_name' Specifies the name of the account to be used when connecting outside the server. Quand les informations d’identification sont utilisées pour accéder à Azure Key Vault, IDENTITY est le nom du coffre de clés.When the credential is used to access the Azure Key Vault, the IDENTITY is the name of the key vault. Consultez l'exemple C ci-dessous.See example C below. Quand les informations d’identification utilisent une signature d’accès partagé, identité est SHARED ACCESS SIGNATURE.When the credential is using a shared access signature (SAS), the IDENTITY is SHARED ACCESS SIGNATURE. Consultez l’exemple D ci-dessous.See example D below.

Important

Azure SQL Database ne prend en charge que les identités de type signature d’accès partagé et Azure Key Vault.Azure SQL Database only supports Azure Key Vault and Shared Access Signature identities. Les identités d’utilisateur Windows ne sont pas prises en charge.Windows user identities are not supported.

SECRET =’ secret  : Spécifie le secret nécessaire pour l’authentification sortante.SECRET ='secret' Specifies the secret required for outgoing authentication.

Quand les informations d’identification sont utilisées pour accéder à Azure Key Vault, l’argument SECRET de CREATE CREDENTIAL exige que le <Client ID> (sans tirets) et le <Secret> d’un principal du service dans Azure Active Directory soient passés ensemble sans espace les séparant.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. Consultez l'exemple C ci-dessous.See example C below. Quand les informations d’identification utilisent une signature d’accès partagé, SECRET est le jeton de signature d’accès partagé.When the credential is using a shared access signature, the SECRET is the shared access signature token. Consultez l’exemple D ci-dessous.See example D below. Pour plus d’informations sur la création d’une stratégie d’accès stockée et une signature d’accès partagé sur un conteneur Azure, consultez Leçon 1 : Créer une stratégie d’accès stockée et une signature d’accès partagé sur un conteneur Azure.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_name : Spécifie le nom d’un fournisseur de gestion de clés d’entreprise (EKM) .FOR CRYPTOGRAPHIC PROVIDER cryptographic_provider_name Specifies the name of an Enterprise Key Management Provider (EKM). Pour plus d’informations sur la gestion des clés, consultez Gestion de clés extensible (EKM).For more information about Key Management, see Extensible Key Management (EKM).

NotesRemarks

Lorsque IDENTITY correspond à un utilisateur Windows, le secret peut être le mot de passe.When IDENTITY is a Windows user, the secret can be the password. Le secret est chiffré à l'aide de la clé principale de service.The secret is encrypted using the service master key. Si la clé principale de service est régénérée, le secret est chiffré de nouveau au moyen de la nouvelle clé principale de service.If the service master key is regenerated, the secret is re-encrypted using the new service master key.

Une fois les informations d’identification créées, vous pouvez les mapper à une connexion SQL ServerSQL Server en utilisant CREATE LOGIN ou ALTER LOGIN.After creating a credential, you can map it to a SQL ServerSQL Server login by using CREATE LOGIN or ALTER LOGIN. Une connexion SQL ServerSQL Server peut être mappée à un seul ensemble d’informations d’identification, mais des informations d’identification peuvent être mappées à plusieurs connexions 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. Pour plus d’informations, consultez Informations d’identification (moteur de base de données).For more information, see Credentials (Database Engine). Des informations d’identification au niveau du serveur peuvent être mappées uniquement à une connexion, et pas à un utilisateur de base de données.A server-level credential can only be mapped to a login, not to a database user.

Des informations sur les informations d’identification sont consultables dans la vue de catalogue sys.credentials.Information about credentials is visible in the sys.credentials catalog view.

En l'absence d'une information d'identification mappée à une connexion pour le fournisseur, l'information d'identification mappée au compte de service SQL ServerSQL Server est utilisée.If there is no login mapped credential for the provider, the credential mapped to SQL ServerSQL Server service account is used.

Une connexion peut avoir plusieurs informations d'identification mappées à elle, à condition qu'elles soient utilisées avec des fournisseurs distinctifs.A login can have multiple credentials mapped to it as long as they are used with distinctive providers. Il ne doit y avoir qu'une seule information d'identification mappée par fournisseur par connexion.There must be only one mapped credential per provider per login. La même information d'identification peut être mappée à d'autres connexions.The same credential can be mapped to other logins.

AutorisationsPermissions

Nécessite l’autorisation ALTER ANY CREDENTIAL.Requires ALTER ANY CREDENTIAL permission.

ExemplesExamples

A.A. Exemple de baseBasic Example

L'exemple ci-dessous crée des informations d'identification nommées AlterEgo.The following example creates the credential called AlterEgo. Les informations d'identification contiennent l'utilisateur Windows Mary5 et un mot de passe.The credential contains the Windows user Mary5 and a password.

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

B.B. Création d'informations d'identification pour EKMCreating a Credential for EKM

L’exemple suivant utilise un compte précédemment créé, User1OnEKM, sur un module EKM au moyen des outils d’administration EKM, avec un type de compte de base et un mot de passe.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. Le compte sysadmin sur le serveur crée des informations d’identification utilisées pour se connecter au compte EKM, et les attribue au compte User1SQL 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. Création d'informations d'identification pour EKM à l'aide d’Azure Key VaultCreating a Credential for EKM Using the Azure Key Vault

L’exemple suivant crée des informations d’identification SQL ServerSQL Server utilisables par le Moteur de base de donnéesDatabase Engine lors de l’accès à Azure Key Vault à l’aide du connecteur SQL Server pour Microsoft Azure Key Vault.The following example creates a SQL ServerSQL Server credential for the Moteur de base de donnéesDatabase Engine to use when accessing the Azure Key Vault using the SQL Server Connector for Microsoft Azure Key Vault. Pour obtenir un exemple complet d’utilisation du connecteur SQL ServerSQL Server, consultez Gestion de clés extensible à l’aide d’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).

Important

L'argument IDENTITY de CREATE CREDENTIAL nécessite le nom du coffre de clés.The IDENTITY argument of CREATE CREDENTIAL requires the key vault name. Concernant l’argument SECRET de CREATE CREDENTIAL, <Client ID> (sans tirets) et <Secret> doivent être passés ensemble sans espace les séparant.The SECRET argument of CREATE CREDENTIAL requires the <Client ID> (without hyphens) and <Secret> to be passed together without a space between them.

Dans l'exemple suivant, l' ID client (EF5C8E09-4D2A-4A76-9998-D93440D8115D) est débarrassé des tirets et entré comme chaîne EF5C8E094D2A4A769998D93440D8115D , tandis que la clé secrète est représentée par la chaîne 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 ;

L’exemple suivant crée les mêmes informations d’identification à l’aide de variables pour les chaînes Client ID et Secret, qui sont ensuite concaténées pour former l’argument 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. La fonction REPLACE est utilisée pour supprimer les tirets de l’ID client.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. Création d’informations d’identification à l’aide d’un jeton SAPCreating a Credential using a SAS Token

S’applique à : SQL Server 2014 (12.x)SQL Server 2014 (12.x) à la version actuelle et aux instances managées dans Azure SQL Database.Applies to: SQL Server 2014 (12.x)SQL Server 2014 (12.x) through current version and managed instances in Azure SQL Database.

L’exemple suivant crée des informations d’identification avec signature d’accès partagé à l’aide d’un jeton SAP.The following example creates a shared access signature credential using a SAS token. Pour un tutoriel montrant comment créer une stratégie d’accès stockée et une signature d’accès partagé sur un conteneur Azure, puis créer des informations d’identification à l’aide de la signature d’accès partagé, consultez Tutoriel : Utiliser le service Stockage Microsoft Azure Blob avec 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.

Important

L’argument CREDENTIAL NAME exige que le nom corresponde au chemin du conteneur, commence par https et ne se termine pas par une barre oblique.THE CREDENTIAL NAME argument requires that the name match the container path, start with https and not contain a trailing forward slash. L’argument IDENTITY nécessite le nom, SHARED ACCESS SIGNATURE.The IDENTITY argument requires the name, SHARED ACCESS SIGNATURE. L’argument SECRET nécessite le jeton de signature d’accès partagé.The SECRET argument requires the shared access signature token.

Le secret de SHARED ACCESS SIGNATURE ne doit pas avoir ? comme premier caractère.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

Voir aussiSee Also