Azure Data Lake Storage'da ACL'leri yönetmek için Node.js JavaScript SDK'sını kullanma
Bu makalede, dizinlerin ve dosyaların erişim denetim listelerini almak, ayarlamak ve güncelleştirmek için Node.js nasıl kullanılacağı gösterilmektedir.
Paket (Düğüm Paket Yöneticisi) | Örnekler | Geri BildirimDe bulunmak
Önkoşullar
- Azure aboneliği - Ücretsiz bir abonelik oluşturun.
- Hiyerarşik ad alanı (HNS) etkinleştirilmiş Azure depolama hesabı. Oluşturmak için bu yönergeleri izleyin.
- Node.js LTS
- Azure CLI sürümü
2.6.0
veya üzeri. - Aşağıdaki güvenlik izinlerinden biri:
- Hedef kapsayıcı, depolama hesabı, üst kaynak grubu veya abonelik kapsamında Depolama Blobu Veri Sahibi rolü atanmış, sağlanan bir Microsoft Entra Id güvenlik sorumlusu.
- ACL ayarlarını uygulamayı planladığınız hedef kapsayıcının veya dizinin sahibi olan kullanıcı. ACL'leri özyinelemeli olarak ayarlamak için, hedef kapsayıcıdaki veya dizindeki tüm alt öğeleri içerir.
- Depolama hesabı anahtarı.
Projenizi ayarlama
Bu bölümde, JavaScript için Azure Data Lake Storage istemci kitaplığıyla çalışmak üzere bir proje hazırlama işleminde size yol gösterilir.
Paketleri yükleme
komutunu kullanarak npm install
Azure Data Lake Storage ve Azure Identity istemci kitaplıkları için paketleri yükleyin. Azure hizmetlerine parolasız bağlantılar için @azure/kimlik paketi gereklidir.
npm install @azure/storage-file-datalake
npm install @azure/identity
Modülleri yükleme
Gerekli modülleri yüklemek için dosyanızın en üstüne aşağıdaki kodu ekleyin:
const {
AzureStorageDataLake,
DataLakeServiceClient,
StorageSharedKeyCredential
} = require("@azure/storage-file-datalake");
const { DefaultAzureCredential } = require('@azure/identity');
Hesaba bağlanma
Bu makaledeki kod örneklerini çalıştırmak için depolama hesabını temsil eden bir DataLakeServiceClient örneği oluşturmanız gerekir. İstemci nesnesini Microsoft Entra Id kimlik bilgileriyle veya bir hesap anahtarıyla yetkilandırabilirsiniz.
Uygulamanızın kimliğini Microsoft Entra ID ile doğrulamak için JavaScript için Azure kimlik istemci kitaplığını kullanabilirsiniz.
Not
Erişimi yetkilendirmek için Microsoft Entra Id kullanıyorsanız güvenlik sorumlunuza Depolama Blobu Veri Sahibi rolünün atandığından emin olun. ACL izinlerinin nasıl uygulandığı ve bunların değiştirilmesinin etkileri hakkında daha fazla bilgi edinmek için bkz . Azure Data Lake Storage'da erişim denetimi modeli.
İlk olarak, güvenlik sorumlunuza aşağıdaki Azure rol tabanlı erişim denetimi (Azure RBAC) rollerinden birini atamanız gerekir:
Role | ACL ayarı özelliği |
---|---|
Depolama Blob Verileri Sahibi | Hesaptaki tüm dizinler ve dosyalar. |
Depolama Blobu Veri Katılımcısı | Yalnızca güvenlik sorumlusuna ait dizinler ve dosyalar. |
Ardından bir DataLakeServiceClient örneği oluşturun ve DefaultAzureCredential sınıfının yeni bir örneğini geçirin.
function GetDataLakeServiceClientAD(accountName) {
const dataLakeServiceClient = new DataLakeServiceClient(
`https://${accountName}.dfs.core.windows.net`,
new DefaultAzureCredential()
);
return dataLakeServiceClient;
}
Verilere erişimi yetkilendirmek için kullanma DefaultAzureCredential
hakkında daha fazla bilgi edinmek için bkz . Genel Bakış: Azure SDK'sını kullanarak Azure'da JavaScript uygulamalarının kimliğini doğrulama.
Dizin ACL'lerini alma ve ayarlama
Bu örnek, adlı my-directory
dizinin ACL'sini alır ve ayarlar. Bu örnek, sahip olan kullanıcıya okuma, yazma ve yürütme izinleri verir, sahip olan gruba yalnızca okuma ve yürütme izinleri verir ve diğer tüm kullanıcılara okuma erişimi verir.
Not
Uygulamanız Microsoft Entra Id kullanarak erişim yetkisi verirse, uygulamanızın erişimi yetkilendirmek için kullandığı güvenlik sorumlusuna Depolama Blob Veri Sahibi rolü atandığından emin olun. ACL izinlerinin nasıl uygulandığı ve bunların değiştirilmesinin etkileri hakkında daha fazla bilgi edinmek için bkz . Azure Data Lake Storage'da erişim denetimi.
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);
}
Ayrıca bir kapsayıcının kök dizininin ACL'sini alabilir ve ayarlayabilirsiniz. Kök dizini almak için DataLakeFileSystemClient.getDirectoryClient yöntemine boş bir dize (/
) geçirin.
Dosya ACL'lerini alma ve ayarlama
Bu örnek, adlı upload-file.txt
bir dosyanın ACL'sini alır ve ayarlar. Bu örnek, sahip olan kullanıcıya okuma, yazma ve yürütme izinleri verir, sahip olan gruba yalnızca okuma ve yürütme izinleri verir ve diğer tüm kullanıcılara okuma erişimi verir.
Not
Uygulamanız Microsoft Entra Id kullanarak erişim yetkisi verirse, uygulamanızın erişimi yetkilendirmek için kullandığı güvenlik sorumlusuna Depolama Blob Veri Sahibi rolü atandığından emin olun. ACL izinlerinin nasıl uygulandığı ve bunların değiştirilmesinin etkileri hakkında daha fazla bilgi edinmek için bkz . Azure Data Lake Storage'da erişim denetimi.
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);
}