Tutoriel : charger des données externes en tirant parti d’une identité managée
Cet article explique comment créer des tables externes ou ingérer des données à partir de comptes Azure Data Lake Storage (ADLS) Gen2 en tirant parti d’une identité managée.
Prérequis
Vous avez besoin des ressources suivantes pour suivre ce tutoriel :
- Un compte Azure Data Lake Storage (ADLS) Gen2
- Un espace de travail Azure Synapse Analytics et un pool SQL dédié
Octroyer l’accès à l’identité d’espace de travail au compte de stockage
Chaque espace de travail Azure Synapse Analytics crée automatiquement une identité managée qui vous aide à configurer un accès sécurisé à des données externes à partir de votre espace de travail. Pour découvrir plus d’informations sur les identités managées pour Azure Synapse Analytics, visitez Identité de service managée pour Azure Synapse Analytics.
Pour permettre à votre identité managée d’accéder aux données sur des comptes ADLS Gen2, vous devez accorder l’accès à votre identité au compte source. Pour accorder les autorisations appropriées, effectuez ces étapes :
- Dans le portail Azure, recherchez votre compte de stockage.
- Sélectionnez Stockage de données -> Conteneurs, puis accédez au dossier contenant les données source auxquelles la table externe doit accéder.
- Sélectionnez Contrôle d’accès (IAM) .
- Sélectionner Ajouter -> Ajouter une attribution de rôle.
- Dans la liste des rôles de fonction de tâche, sélectionnez Contributeur aux données Blob du stockage, puis Suivant.
- Dans la page Ajouter une attribution de rôle, sélectionnez + Sélectionner des membres. Le volet Sélectionner des membres s’ouvre.
- Tapez le nom de l’identité de votre espace de travail. L’identité de l’espace de travail porte le même nom que votre espace de travail. Une fois affichée, choisissez l’identité de votre espace de travail, puis sélectionnez Sélectionner.
- Dans la page Ajouter une attribution de rôle, vérifiez que la liste des membres inclut votre compte Microsoft Entra ID souhaité. Une fois la vérification effectuée, sélectionnez Vérifier + attribuer.
- Dans la page de confirmation, passez en revue les modifications et sélectionnez Vérifier + attribuer.
L’identité de votre espace de travail est maintenant membre du rôle Contributeur aux données Blob du stockage.
Remarque
Ces étapes s’appliquent également pour sécuriser les comptes ADLS Gen2 configurés pour restreindre l’accès public. Pour découvrir plus d’informations sur la sécurisation de votre compte ADLS Gen2, consultez Configurer des pare-feux et des réseaux virtuels dans Stockage Azure.
Ingérer des données en utilisant COPY INTO
L’instruction T-SQL COPY INTO
fournit une ingestion de données flexible et à haut débit dans vos tables. Il s’agit de la principale stratégie d’ingestion des données dans les tables de votre pool SQL dédié. COPY INTO
permet aux utilisateurs d’ingérer des données à partir d’emplacements externes sans avoir à créer les objets de base de données supplémentaires requis pour les tables externes.
Pour exécuter l’instruction COPY INTO
en tirant parti d’une identité managée par l’espace de travail pour l’authentification, utilisez la commande T-SQL suivante :
COPY INTO <TableName>
FROM 'https://<AccountName>.dfs.core.windows.net/<Container>/<Folder>/ '
WITH
(
CREDENTIAL = (IDENTITY = 'Managed Identity'),
[<CopyIntoOptions>]
);
Où :
<TableName>
est le nom de la table dans laquelle ingérer des données<AccountName>
est le nom de votre compte ADLS Gen2<Container>
est le nom du conteneur dans votre compte de stockage où les données source sont stockées<Folder>
est le dossier (ou le chemin d’accès avec des sous-dossiers) où les données source sont stockées dans votre conteneur. Vous pouvez également fournir un nom de fichier si vous pointez directement vers un seul fichier.<CopyIntoOptions>
est la liste de toutes les autres options que vous souhaitez fournir à l’instruction COPY INTO.
Pour découvrir plus d’informations et explorer la syntaxe complète de COPY INTO, consultez COPY INTO (Transact-SQL).
Interroger des données sur ADLS Gen2 en utilisant des tables externes
Les tables externes permettent aux utilisateurs d’interroger des données à partir de comptes Azure Data Lake Storage (ADLS) Gen2 sans devoir ingérer les données en premier. Les utilisateurs peuvent créer une table externe qui pointe vers les fichiers d’un conteneur ADLS Gen2 et les interroger comme une table utilisateur standard.
Les étapes suivantes décrivent le processus pour créer une table externe pointant vers les données sur ADLS Gen2 à l’aide d’une identité managée pour l’authentification.
Créer les objets de base de données requis
Les tables externes nécessitent la création des objets suivants :
- La clé principale de la base de données qui chiffre le secret des informations d’identification délimitées à la base de données
- Des informations d’identification délimitées à une base de données qui utilise l’identité de votre espace de travail
- Une source de données externe qui pointe vers le dossier source
- Un format de fichier externe qui définit le format des fichiers sources
- Une définition de table externe utilisée pour les requêtes
Pour suivre ces étapes, utilisez l’éditeur SQL dans l’Espace de travail Azure Synapse ou votre client SQL préféré connecté à votre pool SQL dédié. Examinons ces étapes en détail.
Créez la clé principale de base de données
La clé principale de base de données est une clé symétrique qui permet de protéger les clés privées des certificats et des clés asymétriques présentes dans la base de données et des secrets dans les informations d’identification délimitées à la base de données. S’il existe déjà une clé principale dans la base de données, vous n’avez pas besoin d’en créer une. Remplacez <Secure Password>
par un mot de passe sécurisé. Cet mot de passe est utilisé pour chiffrer la clé principale dans la base de données.
Pour créer une clé principale, utilisez la commande T-SQL suivante :
-- Replace <Secure Password> with a secure password
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Secure Password>';
Pour découvrir plus d’informations sur la clé principale de base de données, consultez CREATE MASTER KEY (Transact-SQL).
Créez les informations d’identification incluses dans l’étendue de la base de données
Les informations d’identification délimitées à une base de données utilisent l’identité de votre espace de travail. Elles sont nécessaires pour accéder à l’emplacement externe lorsque la table externe nécessite l’accès aux données source.
Pour créer les informations d’identification délimitées à la base de données, utilisez la commande suivante. Remplacez <CredentialName>
par le nom que vous souhaitez utiliser pour les informations d’identification délimitées à la base de données.
CREATE DATABASE SCOPED CREDENTIAL <CredentialName> WITH IDENTITY = 'Managed Service Identity';
Pour découvrir plus d’informations sur les informations d’identification délimitées à la base de données, consultez CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).
Créer la source de données externe
L’étape suivante consiste à créer une source de données externe qui spécifie où résident les données source utilisées par la table externe.
Pour créer la source de données externe, utilisez la commande T-SQL suivante :
CREATE EXTERNAL DATA SOURCE <ExternalDataSourceName>
WITH (
TYPE = HADOOP,
LOCATION = 'abfss://<Container>@<AccountName>.dfs.core.windows.net/<Folder>/,
CREDENTIAL = <CredentialName>
);
Où :
<ExternalDataSourceName>
est le nom que vous souhaitez utiliser pour votre source de données externe.<AccountName>
est le nom de votre compte ADLS Gen2.<Container>
est le nom du conteneur dans votre compte de stockage où les données source sont stockées.<Folder>
est le dossier (ou le chemin d’accès avec des sous-dossiers) où les données source sont stockées dans votre conteneur. Vous pouvez également fournir un nom de fichier si vous pointez directement vers un seul fichier.<Credential>
est le nom des informations d’identification délimitées à la base de données créés plus tôt.
Pour découvrir plus d’informations sur les sources de données externes, consultez CREATE EXTERNAL DATA SOURCE (Transact-SQL).
Créer le format de fichier externe
L’étape suivante consiste à créer le format de fichier externe. Il spécifie la disposition réelle des données référencées par la table externe.
Pour créer le format de fichier externe, utilisez la commande T-SQL suivante. Remplacez <FileFormatName>
par le nom que vous souhaitez utiliser pour votre format de fichier externe.
CREATE EXTERNAL FILE FORMAT <FileFormatName>
WITH (
FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS (
FIELD_TERMINATOR = ',',
STRING_DELIMITER = '"',
FIRST_ROW = 2,
USE_TYPE_DEFAULT = True
)
);
Dans cet exemple, ajustez les paramètres tels que FIELD_TERMINATOR
, STRING_DELIMITER
et FIRST_ROW
, ainsi que d’autres en fonction des besoins, conformément à vos données source. Pour découvrir d’autres options de mise en forme et en savoir plus sur EXTERNAL FILE FORMAT
, consultez CREATE EXTERNAL FILE FORMAT.
Créer la table externe
Une fois les objets nécessaires créés, ceux-ci contenant les métadonnées pour accéder de manière sécurisée aux données externes, il est temps de créer la table externe. Pour créer la table externe, utilisez la commande T-SQL suivante :
-- Adjust the table name and columns to your desired name and external table schema
CREATE EXTERNAL TABLE <ExternalTableName> (
Col1 INT,
Col2 NVARCHAR(100),
Col4 INT
)
WITH
(
LOCATION = '<Path>',
DATA_SOURCE = <ExternalDataSourceName>,
FILE_FORMAT = <FileFormatName>
);
Où :
<ExternalTableName>
est le nom que vous souhaitez utiliser pour votre table externe.<Path>
est le chemin d’accès des données source lié à l’emplacement spécifié dans la source de données externe.<ExternalDataSourceName>
est le nom de la source de données externe créée antérieurement.<FileFormatName>
est le nom du format de fichier externe que vous avez créé antérieurement.
Veillez à ajuster le nom de la table et le schéma en fonction du nom souhaité et du schéma des données dans vos fichiers sources.
À ce stade, toutes les métadonnées requises pour accéder à la table externe sont créées. Pour tester votre table externe, utilisez une requête telle que celle de l’exemple T-SQL suivant pour valider votre travail :
SELECT TOP 10 Col1, Col2 FROM <ExternalTableName>;
Si tout a été configuré correctement, vous devriez voir les données de vos données source à la suite de l’exécution de cette requête.
Pour découvrir plus d’informations et explorer la syntaxe complète de CREATE EXTERNAL TABLE
, consultez CREATE EXTERNAL TABLE (Transact-SQL).