Utilisez le Kit de développement logiciel (SDK) JavaScript dans Node.js pour gérer les listes de contrôle d’accès dans Azure Data Lake Storage
Cet article explique comment utiliser Node.js pour récupérer, définir et mettre à jour les listes de contrôle d’accès des répertoires et des fichiers.
Package (Gestionnaire de package Node) | Exemples | Envoyer des commentaires
Prérequis
- Abonnement Azure : créez-en un gratuitement.
- Un compte de stockage Azure doté d’un espace de noms hiérarchique (HNS) activé. Pour créer un test, suivez ces instructions.
- Node.js LTS
- Azure CLI version
2.6.0
ou ultérieure. - Une des autorisations de sécurité suivantes :
- Un principal de sécurité Microsoft Entra ID approvisionné qui a reçu le rôle Propriétaire des données d’objet de stockage Blob dans l’étendue du conteneur cible, du compte de stockage, du groupe de ressources parent ou de l’abonnement.
- Utilisateur propriétaire du conteneur ou du répertoire cible auquel vous envisagez d’appliquer les paramètres ACL. Pour définir des listes de contrôle d’accès de façon récursive, cela inclut tous les éléments enfants du conteneur ou du répertoire cible.
- Clé du compte de stockage.
Configuration de votre projet
Cette section vous guide tout au long de la préparation d’un projet pour utiliser la bibliothèque de client Azure Data Lake Storage pour JavaScript.
Installer des packages
Installez les packages pour les bibliothèques de client Azure Data Lake Storage et Identité Azure en utilisant la commande npm install
. Le package @azure/identity est nécessaire pour les connexions sans mot de passe aux services Azure.
npm install @azure/storage-file-datalake
npm install @azure/identity
Charger des modules
Ajoutez le code suivant en haut de votre fichier pour charger les modules requis :
const {
AzureStorageDataLake,
DataLakeServiceClient,
StorageSharedKeyCredential
} = require("@azure/storage-file-datalake");
const { DefaultAzureCredential } = require('@azure/identity');
Se connecter au compte
Pour exécuter les exemples de code de cet article, vous devez créer une instance DataLakeServiceClient qui représente le compte de stockage. Vous pouvez autoriser l’objet client avec les informations d’identification Microsoft Entra ID ou avec une clé de compte.
Vous pouvez utiliser la bibliothèque de client d'identité Azure pour JavaScript pour authentifier votre application avec Microsoft Entra ID.
Remarque
Si vous utilisez Microsoft Entra ID pour autoriser l'accès, assurez-vous que le rôle de propriétaire de données Storage Blob a été attribué à votre principal de sécurité. Pour en savoir plus sur l’application des autorisations de liste de contrôle d’accès et les conséquences de leur modification, consultez Modèle de contrôle d’accès dans Azure Data Lake Storage.
Vous devrez d’abord attribuer l’un des rôles Contrôle d’accès en fonction du rôle (Azure RBAC) suivants à votre principal de sécurité :
Role | Capacité de paramétrage ACL |
---|---|
Propriétaire des données Blob du stockage | Tous les répertoires et fichiers du compte. |
Contributeur aux données Blob du stockage | Seuls les répertoires et les fichiers appartenant au principal de sécurité. |
Ensuite, créez une instance DataLakeServiceClient et transmettez une nouvelle instance de la classe DefaultAzureCredential.
function GetDataLakeServiceClientAD(accountName) {
const dataLakeServiceClient = new DataLakeServiceClient(
`https://${accountName}.dfs.core.windows.net`,
new DefaultAzureCredential()
);
return dataLakeServiceClient;
}
Pour en savoir plus sur l’utilisation de DefaultAzureCredential
pour autoriser l’accès aux données, consultez Vue d’ensemble : authentifier des applications JavaScript auprès d’Azure à l’aide du Kit de développement logiciel (SDK) Azure.
Obtenir et définir la liste de contrôle d’accès d’un répertoire
Cet exemple obtient puis définit l’ACL d’un répertoire nommé my-directory
. Cet exemple donne à l’utilisateur propriétaire des autorisations de lecture, d’écriture et d’exécution, donne au groupe propriétaire uniquement des autorisations de lecture et d’exécution et donne à tous les autres l’accès en lecture.
Remarque
Si votre application autorise l’accès en utilisant Microsoft Entra ID, vérifiez que le principal de sécurité utilisé par votre application pour autoriser l’accès a reçu le rôle Propriétaire de données blob du stockage. Pour en savoir plus sur l’application des autorisations ACL et les conséquences de leur modification, consultez Contrôle d’accès dans Azure Data Lake Storage.
async function ManageDirectoryACLs(fileSystemClient) {
const directoryClient = fileSystemClient.getDirectoryClient("my-directory");
const permissions = await directoryClient.getAccessControl();
console.log(permissions.acl);
const acl = [
{
accessControlType: "user",
entityId: "",
defaultScope: false,
permissions: {
read: true,
write: true,
execute: true
}
},
{
accessControlType: "group",
entityId: "",
defaultScope: false,
permissions: {
read: true,
write: false,
execute: true
}
},
{
accessControlType: "other",
entityId: "",
defaultScope: false,
permissions: {
read: true,
write: true,
execute: false
}
}
];
await directoryClient.setAccessControl(acl);
}
Vous pouvez également obtenir et définir la liste de contrôle d’accès du répertoire racine d’un conteneur. Pour obtenir le répertoire racine, transmettez une chaîne vide (/
) dans la méthode DataLakeFileSystemClient.getDirectoryClient.
Obtenir et définir la liste de contrôle d’accès d’un fichier
Cet exemple obtient puis définit l’ACL d’un fichier nommé upload-file.txt
. Cet exemple donne à l’utilisateur propriétaire des autorisations de lecture, d’écriture et d’exécution, donne au groupe propriétaire uniquement des autorisations de lecture et d’exécution et donne à tous les autres l’accès en lecture.
Remarque
Si votre application autorise l’accès en utilisant Microsoft Entra ID, vérifiez que le principal de sécurité utilisé par votre application pour autoriser l’accès a reçu le rôle Propriétaire de données blob du stockage. Pour en savoir plus sur l’application des autorisations ACL et les conséquences de leur modification, consultez Contrôle d’accès dans Azure Data Lake Storage.
async function ManageFileACLs(fileSystemClient) {
const fileClient = fileSystemClient.getFileClient("my-directory/uploaded-file.txt");
const permissions = await fileClient.getAccessControl();
console.log(permissions.acl);
const acl = [
{
accessControlType: "user",
entityId: "",
defaultScope: false,
permissions: {
read: true,
write: true,
execute: true
}
},
{
accessControlType: "group",
entityId: "",
defaultScope: false,
permissions: {
read: true,
write: false,
execute: true
}
},
{
accessControlType: "other",
entityId: "",
defaultScope: false,
permissions: {
read: true,
write: true,
execute: false
}
}
];
await fileClient.setAccessControl(acl);
}