CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Crée les informations d’identification d’une base de données. Les informations d’identification d’une base de données ne sont pas mappées à un compte de connexion de serveur ou à un utilisateur de la base de données. Les informations d’identification sont utilisées par la base de données pour accéder à l’emplacement externe chaque fois que la base de données effectue une opération nécessitant un accès.

Conventions de la syntaxe Transact-SQL

Syntaxe

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

Arguments

credential_name

Spécifie le nom des informations d’identification délimitées à la base de données en cours de création. credential_name ne peut pas commencer par le signe numérique (#). Les informations d’identification système commencent par ##. La longueur maximale de credential_name est de 128 caractères.

IDENTITY = 'identity_name'

Spécifie le nom du compte à utiliser lors d'une connexion en dehors du serveur.

  • Pour importer un fichier à partir du Stockage Blob Azure ou d’Azure Data Lake Storage avec une clé partagée, le nom de l’identité doit être SHARED ACCESS SIGNATURE. Pour plus d’informations sur les signatures d’accès partagé, consultez Utilisation des signatures d’accès partagé (SAP). N’utilisez que IDENTITY = SHARED ACCESS SIGNATURE pour une signature d’accès partagé.
  • Pour importer un fichier à partir de Stockage Blob Azure en utilisant une identité managée, le nom de l’identité doit être MANAGED IDENTITY.
  • Quand vous utilisez Kerberos (Windows Active Directory ou MIT KDC), n’utilisez pas le nom de domaine dans l’argument IDENTITY. Il doit s’agir simplement du nom du compte.
  • Si, dans une instance SQL Server, vous créez des informations d’identification au niveau de la base de données avec une clé d’accès de stockage utilisée comme SECRET, IDENTITY est ignoré.
  • WITH IDENTITY n’est pas requis si le conteneur dans le stockage Blob Azure est activé pour l’accès anonyme. Pour obtenir un exemple d’interrogation du stockage Blob Azure, consultez Importation dans une table à partir d’un fichier stocké dans le stockage Blob Azure.

Important

La seule source de données externe PolyBase qui prend en charge l’authentification Kerberos est Hadoop. Toutes les autres sources de données externes (SQL Server, Oracle, Teradata, MongoDB, ODBC générique) prennent en charge seulement l’authentification de base.

  • Pour charger des données dans Azure Synapse Analytics, n’importe quelle valeur valide peut être utilisée pour IDENTITY.
  • Dans un pool SQL serverless Azure Synapse Analytics, les informations d’identification délimitées à la base de données peuvent spécifier une identité managée d’espace de travail, un nom de principal de service ou un jeton de signature d’accès partagé (SAP). L’accès via une identité utilisateur, activée par l’authentification directe De Microsoft Entra, est également possible avec des informations d’identification délimitées à la base de données, tout comme l’accès anonyme au stockage disponible publiquement. Pour plus d’informations, consultez Types d’autorisation de stockage pris en charge.
  • Dans un pool SQL dédié Azure Synapse Analytics, les informations d’identification délimitées à la base de données peuvent spécifier un jeton de signature d’accès partagé (SAP), une identité d’application personnalisée, une identité managée de l’espace de travail ou une clé d’accès au stockage.

SECRET = 'secret'

Spécifie le secret requis pour l'authentification sortante. SECRET est obligatoire pour importer un fichier à partir du stockage Blob Azure. Pour effectuer le chargement du Stockage Blob Azure vers Azure Synapse Analytics ou Parallel Data Warehouse, le secret doit être la clé de stockage Azure.

Avertissement

La valeur de clé SAP peut commencer par un point d’interrogation (« ? »). Quand vous utilisez la clé SAP, vous devez supprimer le caractère « ? » initial. Sinon, vos efforts risquent d’être vains.

Notes

Les informations d’identification délimitées à la base de données sont un enregistrement qui contient les informations d’authentification exigées pour la connexion à une ressource en dehors de SQL Server. La plupart des informations d'identification incluent un utilisateur et un mot de passe Windows.

Pour protéger les informations sensibles à l’intérieur des informations d’identification délimitées à la base de données, une clé principale de base de données (DMK) est requise. Le DMK est une clé symétrique qui chiffre le secret dans les informations d’identification délimitées à la base de données. La base de données doit avoir un DMK avant la création d’informations d’identification délimitées à la base de données. Un DMK doit être chiffré avec un mot de passe fort. Azure SQL Database crée un DMK avec un mot de passe fort et sélectionné de manière aléatoire dans le cadre de la création des informations d’identification délimitées à la base de données ou dans le cadre de la création d’un audit de serveur. Les utilisateurs ne peuvent pas créer le DMK sur une base de données logique master . Le mot de passe de clé principale est inconnu de Microsoft et n’est pas détectable après la création. Pour cette raison, la création d’un DMK avant de créer des informations d’identification délimitées à la base de données est recommandée. Pour plus d’informations, consultez CREATE MASTER KEY (Transact-SQL).

Lorsque IDENTITY correspond à un utilisateur Windows, le secret peut être le mot de passe. Le secret est chiffré à l’aide de la clé principale du service (SMK). Si le SMK est régénéré, le secret est rechiffré à l’aide du nouveau SMK.

Lors de l’octroi d’autorisations pour une signature d’accès partagé (SAP) à utiliser avec une table externe PolyBase, sélectionnez Conteneur et Objet comme types de ressources autorisés. En l’absence d’octroi, l’erreur 16535 ou 16561 peut s’afficher lorsque vous tentez d’accéder à table externe.

Des détails sur les informations d’identification délimitées à la base de données sont consultables dans la vue de catalogue sys.database_scoped_credentials.

Voici certaines applications d’informations d’identification délimitées à la base de données :

autorisations

Exige l’autorisation CONTROL sur la base de données.

SQL Server 2022

Dans SQL Server 2022 (16.x), un nouveau type de connecteur a été introduit, qui utilise des appels d’API REST en remplacement d’HADOOP. Pour le Stockage Blob Azure et Azure Data Lake Gen 2, la seule méthode d’authentification est SHARED ACCESS SIGNATURE.

Pour plus d’informations, consultez CRÉER UNE SOURCE DE DONNÉES EXTERNES.

Exemples

R. Création d’informations d’identification délimitées à la base de données pour votre application

L’exemple suivant crée des informations d’identification délimitées à la base de données nommées AppCred. Les informations d’identification délimitées à la base de données contiennent l’utilisateur Windows Mary5 et un mot de passe.

-- 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. Création d’informations d’identification délimitées à la base de données pour une signature d’accès partagé

L’exemple suivant crée des informations d’identification délimitées à la base de données qui peuvent être utilisées pour créer une source de données externe, qui peut effectuer des opérations en bloc, telles que BULK INSERT et 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. Création d’informations d’identification délimitées à la base de données pour la connectivité de PolyBase à Azure Data Lake Store

L’exemple suivant crée des informations d’identification délimitées à la base de données qui peuvent être utilisées pour créer une source de données externe, qui peut être utilisée par PolyBase dans Azure Synapse Analytics.

Azure Data Lake Store utilise une application Microsoft Entra pour l’authentification de service à service.

Créez une application Microsoft Entra et documentez votre client_id, OAuth_2.0_Token_EndPoint et Key avant d’essayer de créer des informations d’identification délimitées à la base de données.

-- 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>'
;