Azure Data Lake Storage'da ACL'leri yönetmek için Azure CLI kullanma
Bu makalede, dizinlerin ve dosyaların erişim denetim listelerini almak, ayarlamak ve güncelleştirmek için Azure CLI'yi nasıl kullanacağınız gösterilmektedir.
ACL devralma, bir üst dizin altında oluşturulan yeni alt ögeler için daha önce kullanıma sunulmuştur. Ancak, her alt öğe için bu değişiklikleri tek tek yapmak zorunda kalmadan bir üst dizinin mevcut alt öğelerine ACL'leri yinelemeli olarak ekleyebilir, güncelleştirebilir ve kaldırabilirsiniz.
Başvuru | Örnekleri | Geri bildirimde bulunmak
Önkoşullar
Azure aboneliği. Daha fazla bilgi için bkz . Azure ücretsiz deneme sürümünü edinme.
Hiyerarşik ad alanı etkinleştirilmiş bir depolama hesabı. Oluşturmak için bu yönergeleri izleyin.
Azure CLI sürümü
2.14.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.
Azure CLI'nın doğru sürümünü yüklediğinizden emin olun
Azure Cloud Shell'i açın veya Azure CLI'yi yerel olarak yüklediyseniz Windows PowerShell gibi bir komut konsolu uygulaması açın.
Aşağıdaki komutu kullanarak yüklediğiniz Azure CLI sürümünün veya daha yüksek olduğunu
2.14.0
doğrulayın.az --version
Azure CLI sürümünüz sürümünden
2.14.0
düşükse daha sonraki bir sürüm yükleyin. Daha fazla bilgi için bkz . Azure CLI'yi yükleme.
Hesaba bağlanma
Azure CLI'yı yerel olarak kullanıyorsanız oturum açma komutunu çalıştırın.
az login
CLI varsayılan tarayıcınızı açabiliyorsa bunu yapar ve bir Azure oturum açma sayfası yükler.
Aksi takdirde adresinde bir tarayıcı sayfası https://aka.ms/devicelogin açın ve terminalinizde görüntülenen yetkilendirme kodunu girin. Ardından, tarayıcıda hesap kimlik bilgilerinizle oturum açın.
Farklı kimlik doğrulama yöntemleri hakkında daha fazla bilgi edinmek için bkz . Azure CLI ile blob veya kuyruk verilerine erişimi yetkilendirme.
Kimliğiniz birden fazla abonelikle ilişkiliyse ve aboneliği seçmeniz istenmiyorsa etkin aboneliğinizi üzerinde çalışmak istediğiniz depolama hesabının aboneliğine ayarlayın. Bu örnekte yer tutucu değerini aboneliğinizin kimliğiyle değiştirin
<subscription-id>
.az account set --subscription <subscription-id>
<subscription-id>
Yer tutucu değerini aboneliğinizin kimliğiyle değiştirin.
Not
Bu makalede sunulan örnekte Microsoft Entra yetkilendirmesi gösterilmektedir. Yetkilendirme yöntemleri hakkında daha fazla bilgi edinmek için bkz . Azure CLI ile blob veya kuyruk verilerine erişimi yetkilendirme.
ACL'leri alma
az storage fs access show komutunu kullanarak bir dizinin ACL'sini alın.
Bu örnek bir dizinin ACL'sini alır ve ardından ACL'yi konsola yazdırır.
az storage fs access show -p my-directory -f my-file-system --account-name mystorageaccount --auth-mode login
az storage fs access show komutunu kullanarak bir dosyanın erişim izinlerini alın.
Bu örnek bir dosyanın ACL'sini alır ve ardından ACL'yi konsola yazdırır.
az storage fs access show -p my-directory/upload.txt -f my-file-system --account-name mystorageaccount --auth-mode login
Aşağıdaki görüntüde bir dizinin ACL'sini aldıktan sonra elde edilen çıkış gösterilmektedir.
Bu örnekte sahibi olan kullanıcının okuma, yazma ve yürütme izinleri vardır. Sahip olan grubun yalnızca okuma ve yürütme izinleri vardır. Erişim denetimi listeleri hakkında daha fazla bilgi için bkz . Azure Data Lake Storage'da erişim denetimi.
ACL'leri ayarlama
Bir ACL ayarladığınızda, tüm girdileri dahil olmak üzere ACL'nin tamamını değiştirirsiniz. Bir güvenlik sorumlusunun izin düzeyini değiştirmek veya var olan diğer girişleri etkilemeden ACL'ye yeni bir güvenlik sorumlusu eklemek istiyorsanız, bunun yerine ACL'yi güncelleştirmeniz gerekir. ACL'yi değiştirmek yerine güncelleştirmek için bu makalenin ACL'leri güncelleştirme bölümüne bakın.
ACL'yi ayarlamayı seçerseniz, sahip olan kullanıcı için bir girdi, sahip olan grup için bir girdi ve diğer tüm kullanıcılar için bir girdi eklemeniz gerekir. Sahip olan kullanıcı, sahip olan grup ve diğer tüm kullanıcılar hakkında daha fazla bilgi edinmek için bkz . Kullanıcılar ve kimlikler.
Bu bölümde şunların nasıl yapıldığını görebilirsiniz:
- ACL ayarlama
- ACL’leri özyinelemeli olarak belirleme
ACL ayarlama
Dizinin ACL'sini ayarlamak için az storage fs access set komutunu kullanın.
Bu örnek, sahip olan kullanıcı, sahip olan grup veya diğer kullanıcılar için bir dizindeki ACL'yi ayarlar ve ardından ACL'yi konsola yazdırır.
az storage fs access set --acl "user::rw-,group::rw-,other::-wx" -p my-directory -f my-file-system --account-name mystorageaccount --auth-mode login
Bu örnek, sahip olan kullanıcı, sahip olan grup veya diğer kullanıcılar için bir dizinde varsayılan ACL'yi ayarlar ve ardından ACL'yi konsola yazdırır.
az storage fs access set --acl "default:user::rw-,group::rw-,other::-wx" -p my-directory -f my-file-system --account-name mystorageaccount --auth-mode login
Bir dosyanın aCL'sini ayarlamak için az storage fs access set komutunu kullanın.
Bu örnek, bir dosyadaki ACL'yi sahip olan kullanıcı, sahip olan grup veya diğer kullanıcılar için ayarlar ve ardından ACL'yi konsola yazdırır.
az storage fs access set --acl "user::rw-,group::rw-,other::-wx" -p my-directory/upload.txt -f my-file-system --account-name mystorageaccount --auth-mode login
Not
Belirli bir grubun veya kullanıcının ACL'sini ayarlamak için ilgili nesne kimliklerini kullanın. Örneğin, bir grubun ACL'sini ayarlamak için kullanın group:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
. Bir kullanıcının ACL'sini ayarlamak için kullanın user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
.
Aşağıdaki görüntüde, bir dosyanın ACL'sini ayarladıktan sonra çıktı gösterilmektedir.
Bu örnekte, sahip olan kullanıcı ve sahip olan grup yalnızca okuma ve yazma izinlerine sahiptir. Diğer tüm kullanıcıların yazma ve yürütme izinleri vardır. Erişim denetimi listeleri hakkında daha fazla bilgi için bkz . Azure Data Lake Storage'da erişim denetimi.
ACL’leri özyinelemeli olarak belirleme
az storage fs access set-recursive komutunu kullanarak ACL'leri özyinelemeli olarak ayarlayın.
Bu örnek adlı my-parent-directory
dizinin ACL'sini ayarlar. Bu girdiler 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 erişim vermez. Bu örnekteki son ACL girdisi, "xxxxx-xxxx-xxxx-xxxx" nesne kimliğine sahip belirli bir kullanıcıya okuma ve yürütme izinleri verir.
az storage fs access set-recursive --acl "user::rwx,group::r-x,other::---,user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x" -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login
Not
Varsayılan bir ACL girdisi ayarlamak istiyorsanız, ön eki default:
her girişe ekleyin. Örneğin, default:user::rwx
veya default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x
.
ACL'leri güncelleştirme
Bir ACL'yi güncelleştirdiğinizde, ACL'yi değiştirmek yerine ACL'yi değiştirirsiniz. Örneğin, ACL'de listelenen diğer güvenlik sorumlularını etkilemeden ACL'ye yeni bir güvenlik sorumlusu ekleyebilirsiniz. ACL'yi güncelleştirmek yerine değiştirmek için bu makalenin ACL'leri ayarlama bölümüne bakın.
ACL'yi güncelleştirmek için, güncelleştirmek istediğiniz ACL girişiyle yeni bir ACL nesnesi oluşturun ve ardından bu nesneyi güncelleştirme ACL işleminde kullanın. Mevcut ACL'yi almayın, yalnızca güncelleştirilecek ACL girdilerini sağlayın.
Bu bölümde şunların nasıl yapıldığını görebilirsiniz:
- ACL'yi güncelleştirme
- ACL'leri özyinelemeli olarak güncelleştirme
ACL'yi güncelleştirme
az storage fs access update-recursive komutunu kullanarak dosyanın ACL'sini güncelleştirin .
Bu örnek, yazma iznine sahip bir ACL girdisi güncelleştirir.
az storage fs access update-recursive --acl "user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:rwx" -p my-parent-directory/myfile.txt -f my-container --account-name mystorageaccount --auth-mode login
Belirli bir grubun veya kullanıcının ACL'sini güncelleştirmek için ilgili nesne kimliklerini kullanın. Örneğin, group:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
veya user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
.
Not
Alt öğelerin ACL'sini güncelleştirmeden tek bir dizinin ACL'sinin güncelleştirilmesi Azure CLI tarafından desteklenmez. Dizindeki tüm alt öğelerin ACL'lerini değiştirmeden bir dizinin ACL'sini güncelleştirmek için desteklenen diğer araçlardan ve SDK'lardan herhangi birini kullanın. Bkz . ACL'leri ayarlama.
ACL'leri özyinelemeli olarak güncelleştirme
az storage fs access update-recursive komutunu kullanarak ACL'leri özyinelemeli olarak güncelleştirin .
Bu örnek, yazma iznine sahip bir ACL girdisi güncelleştirir.
az storage fs access update-recursive --acl "user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:rwx" -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login
Not
Varsayılan bir ACL girdisini güncelleştirmek istiyorsanız, her girdiye ön eki default:
ekleyin. Örneğin, default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x
.
ACL girdilerini özyinelemeli olarak kaldırma
Bir veya daha fazla ACL girdisini yinelemeli olarak kaldırabilirsiniz. ACL girdisini kaldırmak için, kaldırılacak ACL girdisi için yeni bir ACL nesnesi oluşturun ve ardından bu nesneyi ACL'yi kaldırma işleminde kullanın. Mevcut ACL'yi almayın, yalnızca kaldırılacak ACL girdilerini sağlayın.
az storage fs access remove-recursive komutunu kullanarak ACL girdilerini kaldırın.
Bu örnek, kapsayıcının kök dizininden bir ACL girdisini kaldırır.
az storage fs access remove-recursive --acl "user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login
Not
Varsayılan bir ACL girdisini kaldırmak istiyorsanız, her girdiye ön eki default:
ekleyin. Örneğin, default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
.
Hatalardan kurtarma
ACL'leri yinelemeli olarak değiştirirken çalışma zamanı veya izin hatalarıyla karşılaşabilirsiniz. Çalışma zamanı hataları için, işlemi baştan yeniden başlatın. Güvenlik sorumlusunun değiştirilmekte olan dizin hiyerarşisindeki bir dizin veya dosyanın ACL'sini değiştirmek için yeterli izni yoksa izin hataları oluşabilir. İzin sorununu giderin ve devam belirteci kullanarak işlemi hata noktasından sürdürmeyi veya işlemi baştan yeniden başlatmayı seçin. Baştan yeniden başlatmayı tercih ediyorsanız devamlılık belirtecini kullanmanız gerekmez. ACL girişlerini herhangi bir olumsuz etki olmadan yeniden uygulayın.
Hata durumunda, parametresini false
olarak ayarlayarak --continue-on-failure
bir devamlılık belirteci döndürebilirsiniz. Hataları giderdikten sonra, komutu yeniden çalıştırıp parametreyi devamlılık belirtecine ayarlayarak --continuation
işlemi hata noktasından sürdürebilirsiniz.
az storage fs access set-recursive --acl "user::rw-,group::r-x,other::---" --continue-on-failure false --continuation xxxxxxx -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login
İşlemin izin hataları tarafından kesintisiz tamamlanmasını istiyorsanız, bunu belirtebilirsiniz.
İşlemin kesintisiz tamamlanmasını sağlamak için parametresini --continue-on-failure
olarak true
ayarlayın.
az storage fs access set-recursive --acl "user::rw-,group::r-x,other::---" --continue-on-failure true --continuation xxxxxxx -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login
En iyi yöntemler
Bu bölümde, ACL'leri özyinelemeli olarak ayarlamak için bazı en iyi yöntem yönergeleri sağlanır.
Çalışma zamanı hatalarını işleme
Çalışma zamanı hatası birçok nedenden oluşabilir (Örneğin: kesinti veya istemci bağlantısı sorunu). Çalışma zamanı hatasıyla karşılaşırsanız özyinelemeli ACL işlemini yeniden başlatın. ACL'ler olumsuz bir etkiye neden olmadan öğelere yeniden uygulanabilir.
İzin hatalarını işleme (403)
Özyinelemeli bir ACL işlemi çalıştırırken erişim denetimi özel durumuyla karşılaşırsanız, AD güvenlik sorumlunuz dizin hiyerarşisindeki bir veya daha fazla alt öğeye ACL uygulamak için yeterli izne sahip olmayabilir. İzin hatası oluştuğunda işlem durdurulur ve bir devam belirteci sağlanır. İzin sorununu düzeltin ve kalan veri kümesini işlemek için devamlılık belirtecini kullanın. Zaten başarıyla işlenen dizinlerin ve dosyaların yeniden işlenmesi gerekmez. Özyinelemeli ACL işlemini yeniden başlatmayı da seçebilirsiniz. ACL'ler olumsuz bir etkiye neden olmadan öğelere yeniden uygulanabilir.
Referans
Hedef depolama hesabı veya kapsayıcı kapsamında Depolama Blobu Veri Sahibi rolü atanmış bir Microsoft Entra güvenlik sorumlusu sağlamanızı öneririz.
Performans
Gecikme süresini azaltmak için, özyinelemeli ACL işlemini depolama hesabınızla aynı bölgede bulunan bir Azure Sanal Makinesi'nde (VM) çalıştırmanızı öneririz.
ACL sınırları
Bir dizine veya dosyaya uygulayabileceğiniz maksimum ACL sayısı 32 erişim ACL'leri ve 32 varsayılan ACL'dir. Daha fazla bilgi için bkz. Azure Data Lake Storage 2. Nesil'de erişim denetimi.