CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics 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' ]

Remarque

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 (12.x) et versions antérieures, consultez la Documentation sur les versions antérieures.

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 dièse (#). Les informations d'identification système commencent avec ##.

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 une clé principale avant la création d’informations d’identification limitées à la base de données. Un DMK doit être chiffré avec un mot de passe fort. Azure SQL Database crée une clé principale de base de données 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 la clé principale 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’une clé principale de base de données 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 de service. 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.

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 :

  • SQL Server utilise des informations d’identification limitées à la base de données pour accéder au Stockage Blob Azure non public ou à des clusters Hadoop sécurisés par Kerberos avec PolyBase. Pour en savoir plus, consultez CREATE EXTERNAL DATA SOURCE (Transact-SQL).

  • Azure Synapse Analytics utilise des informations d’identification limitées à la base de données pour accéder au Stockage Blob Azure non public avec PolyBase. Pour en savoir plus, consultez CREATE EXTERNAL DATA SOURCE (Transact-SQL). Pour plus d’informations sur l’authentification de stockage Azure Synapse, consultez Utiliser des tables externes avec Synapse SQL.

  • SQL Database utilise les informations d’identification délimitées à la base de données pour sa fonctionnalité de requête globale. Il s’agit de la possibilité d’effectuer des requêtes sur plusieurs partitionnements de base de données.

  • SQL Database utilise des informations d’identification limitées à la base de données pour écrire des fichiers d’événements étendus dans Stockage Blob Azure.

  • SQL Database utilise les informations d’identification délimitées à la base de données pour les pools élastiques. Pour plus d’informations, consultez la rubrique expliquant comment maîtriser la croissance spectaculaire des bases de données élastiques.

  • BULK INSERT et OPENROWSET utilisent des informations d’identification limitées à la base de données pour accéder aux données à partir du Stockage Blob Azure. Pour plus d’informations, consultez Exemples d’accès en bloc à des données dans Stockage Blob Azure.

  • Utilisez des informations d’identification délimitées à la base de données avec les fonctionnalités de virtualisation des données PolyBase et Azure SQL Managed Instance.

  • Pour BACKUP TO URL et RESTORE FROM URL, utilisez plutôt des informations d’identification au niveau du serveur via CREATE CREDENTIAL (Transact-SQL).

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, reportez-vous à Créer une source de données externe.

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. Les signatures d’accès partagé ne peuvent pas être utilisées avec PolyBase dans SQL Server, APS ou Azure Synapse Analytics.

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