Etiketlere ve özel güvenlik özniteliklerine göre bloblara okuma erişimine izin verme
Bu makalede, öznitelik tabanlı erişim denetimi (ABAC) koşullarını kullanarak blob dizin etiketlerini ve özel güvenlik özniteliklerini temel alan bloblara okuma erişimine nasıl izin vereceğinizi öğreneceksiniz. Bu, bloblara erişimi yönetmeyi kolaylaştırabilir.
Önkoşullar
Microsoft Entra kiracınıza özel güvenlik öznitelikleri atamak ve rol atama koşulları eklemek için şunları yapmanız gerekir:
- Öznitelik Tanımı Yönetici istrator ve Öznitelik Ataması Yönetici istrator
- Rol Tabanlı Erişim Denetimi Yönetici istrator
Önemli
Varsayılan olarak, Genel Yönetici istrator ve diğer yönetici rollerinin özel güvenlik özniteliklerini okuma, tanımlama veya atama izinleri yoktur. Bu önkoşulları karşılamıyorsanız koşul düzenleyicisinde sorumlu/kullanıcı özniteliklerini görmezsiniz.
Koşul
Bu makalede, kullanıcının blob dizin etiketiyle eşleşen özel bir güvenlik özniteliği varsa bloblara okuma erişimine izin verirsiniz. Bu, rol atamasına bir koşul eklenerek gerçekleştirilir.
Örneğin, Brenda özniteliğine Project=Baker
sahipse blobları yalnızca blob dizin etiketiyle Project=Baker
okuyabilir. Benzer şekilde, Chandra yalnızca ile Project=Cascade
blobları okuyabilir.
Koşul kodda şöyle görünür:
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})
)
OR
(
@Principal[Microsoft.Directory/CustomSecurityAttributes/Id:Engineering_Project] StringEquals @Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>]
)
)
Koşullar hakkında daha fazla bilgi için bkz . Azure öznitelik tabanlı erişim denetimi (Azure ABAC) nedir?.
1. Adım: Yeni bir özel güvenlik özniteliği ekleme
Azure Portal oturum açın.
Microsoft Entra ID>Özel güvenlik öznitelikleri'ne tıklayın.
ve
Cascade
değerleriyleBaker
adlıProject
bir öznitelik ekleyin. Veya var olan bir özniteliği kullanın. Daha fazla bilgi için bkz . Microsoft Entra Id'de özel güvenlik öznitelikleri ekleme veya devre dışı bırakma.
2. Adım: Kullanıcıya özel güvenlik özniteliği atama
Microsoft Entra Id'de bir güvenlik grubu oluşturun.
Bir kullanıcıyı grubun üyesi olarak ekleyin.
özniteliğini
Project
değerine sahipCascade
olarak kullanıcıya atayın. Daha fazla bilgi için bkz . Kullanıcı için özel güvenlik özniteliklerini atama, güncelleştirme, listeleme veya kaldırma.Ödevinizi kaydetmek için Kaydet'e tıklamayı unutmayın.
3. Adım: Depolama ve blob dizini etiketlerini ayarlama
Blob dizin etiketleri özelliğiyle uyumlu bir depolama hesabı oluşturun. Daha fazla bilgi için bkz . Blob dizini etiketleriyle Azure Blob verilerini yönetme ve bulma.
Depolama hesabında yeni bir kapsayıcı oluşturun ve Genel erişim düzeyini Özel (anonim erişim yok) olarak ayarlayın.
Kimlik doğrulama türünü Azure AD Kullanıcı Hesabı olarak ayarlayın.
Metin dosyalarını kapsayıcıya yükleyin ve aşağıdaki blob dizin etiketlerini ayarlayın.
Dosya Anahtar Değer Baker metin dosyası Proje Fırıncı Metin dosyasını art arda basamaklama Proje Cascade Bahşiş
Blob dizin etiketleri için izin verilen karakterler hakkında bilgi için bkz . Blob dizini etiketlerini ayarlama.
4. Adım: Bir koşulla Depolama Blob Veri Okuyucusu rolü atama
Depolama hesabı olan kaynak grubunu açın.
Erişim denetimi (IAM) öğesine tıklayın.
Bu kapsamdaki rol atamalarını görüntülemek için Rol atamaları sekmesine tıklayın.
Rol ataması ekle'ye>tıklayın.
Üyeler sekmesinde, daha önce oluşturduğunuz güvenlik grubunu seçin.
(İsteğe bağlı) Açıklama kutusuna, kullanıcının blob dizin etiketiyle eşleşen özel bir güvenlik özniteliği varsa Bloblara okuma erişimi girin.
Koşullar (isteğe bağlı) sekmesinde Koşul ekle'ye tıklayın.
Rol ataması koşulu ekle sayfası görüntülenir.
Eylem ekle bölümünde Eylem ekle'ye tıklayın.
Eylem seçin bölmesi görüntülenir. Bu bölme, koşulunuzun hedefi olacak rol atamasını temel alan filtrelenmiş bir veri eylemleri listesidir.
Blobu oku'ya ve ardından Seç'e tıklayın.
Derleme ifadesi bölümünde Ekle'ye tıklayın.
Aşağıdaki ayarları girin:
Ayar Değer Öznitelik kaynağı Asıl Öznitelik <attributeset>_Project İşleç StringEquals Seçenek Öznitelik Öznitelik kaynağı Kaynak Öznitelik Blob dizin etiketleri [Anahtardaki değerler] Tuş Proje Dekont
Sorumlu, Öznitelik kaynağında seçenek olarak listelenmiyorsa, 1. Adım: Yeni bir özel güvenlik özniteliği ekleme bölümünde daha önce açıklandığı gibi özel güvenlik özniteliği tanımladığınızdan emin olun.
Düzenleyici türüne kadar yukarı kaydırın ve Kod'a tıklayın.
Koşulunuz aşağıdakine benzer görünmelidir:
( ( !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'}) ) OR ( @Principal[Microsoft.Directory/CustomSecurityAttributes/Id:Engineering_Project] StringEquals @Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>] ) )
Koşulu kaydetmek için Kaydet'e tıklayın.
Depolama Blob Veri Okuyucusu rolünü bir koşulla atamak için Gözden Geçir ve ata sekmesinde Gözden Geçir + ata'ya tıklayın.
5. Adım: Okuyucu rolü atama
Kaynak grubu kapsamında güvenlik grubu için Okuyucu rolünü atamak için önceki adımları yineleyin.
Dekont
Genellikle Okuyucu rolünü atamanız gerekmez. Ancak bu, Azure portalını kullanarak koşulu test edebilmeniz için yapılır.
6. Adım: Koşulu test edin
Özel güvenlik özniteliğiyle
Project=Cascade
oluşturduğunuz kullanıcı olarak oturum açın.Oluşturduğunuz depolama hesabını ve kapsayıcıyı açın.
Kimlik doğrulama yönteminin Erişim anahtarı değil Azure AD Kullanıcı Hesabı olarak ayarlandığından emin olun.
Baker metin dosyasına tıklayın.
Blobu görüntüleyememeli veya indirememelisiniz ve yetkilendirme başarısız iletisi görüntülenmelidir.
Metin dosyasını art arda ekle'ye tıklayın.
Blobu görüntüleyebilir ve indirebilirsiniz.
Azure PowerShell
Rol atama koşulları eklemek için Azure PowerShell'i de kullanabilirsiniz. Aşağıdaki komutlar koşulların nasıl ekleneceğini gösterir. Bilgi için bkz . Öğretici: Azure PowerShell kullanarak bloblara erişimi kısıtlamak için rol atama koşulu ekleme.
Koşul ekle
Bağlan-AzAccount komutunu kullanın ve dizininizde Rol Tabanlı Erişim Denetimi Yönetici istrator olarak oturum açarken görünen yönergeleri izleyin.
Connect-AzAccount
Güvenlik grubuna atadığınız rol atamasını almak için Get-AzRoleAssignment komutunu kullanın.
$groupRoleAssignment = Get-AzRoleAssignment -ObjectId <groupObjectId> -Scope <scope>
Condition
Rol atama nesnesinin özelliğini ayarlayın. Öznitelik kümesi adınızı kullandığınızdan emin olun.$groupRoleAssignment.Condition="((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})) OR (@Principal[Microsoft.Directory/CustomSecurityAttributes/Id:Engineering_Project] StringEquals @Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<`$key_case_sensitive`$>]))"
ConditionVersion
Rol atama nesnesinin özelliğini ayarlayın.$groupRoleAssignment.ConditionVersion = "2.0"
Rol atamasını güncelleştirmek için Set-AzRoleAssignment komutunu kullanın.
Set-AzRoleAssignment -InputObject $groupRoleAssignment
Koşulu test edin
Yeni bir PowerShell penceresinde Bağlan-AzAccount komutunu kullanarak güvenlik grubunun bir üyesi olarak oturum açın.
Connect-AzAccount
Depolama hesabının bağlamını ayarlamak için New-Az Depolama Context kullanın.
$bearerCtx = New-AzStorageContext -StorageAccountName <accountName>
Baker dosyasını okumaya çalışmak için Get-Az Depolama Blob kullanın.
Get-AzStorageBlob -Container <containerName> -Blob <blobNameBaker> -Context $bearerCtx
Blobu okuyamamalısınız ve yetkilendirme başarısız iletisi görüntülenmelidir.
Get-AzStorageBlob : This request is not authorized to perform this operation using this permission. HTTP Status Code: 403 - HTTP Error Message: This request is not authorized to perform this operation using this permission. ...
Art Arda Dosyasını okumayı denemek için Get-Az Depolama Blob kullanın.
Get-AzStorageBlob -Container <containerName> -Blob <blobNameCascade> -Context $bearerCtx You should be able to read the blob. AccountName: <storageAccountName>, ContainerName: <containerName> Name BlobType Length ContentType LastModified AccessTier SnapshotT ime ---- -------- ------ ----------- ------------ ---------- --------- CascadeFile.txt BlockBlob 7 text/plain 2021-04-24 05:35:24Z Hot
Azure CLI
Rol ataması koşulları eklemek için Azure CLI'yi de kullanabilirsiniz. Aşağıdaki komutlar koşulların nasıl ekleneceğini gösterir. Bilgi için bkz . Öğretici: Azure CLI kullanarak bloblara erişimi kısıtlamak için rol atama koşulu ekleme.
Koşul ekle
az login komutunu kullanın ve dizininizde Rol Tabanlı Erişim Denetimi Yönetici istrator olarak oturum açarken görünen yönergeleri izleyin.
az login
Güvenlik grubuna atadığınız rol atamasını almak için az role assignment list komutunu kullanın.
az role assignment list --assignee <groupObjectId> --scope <scope>
Aşağıdaki biçime sahip bir JSON dosyası oluşturun.
{ "canDelegate": null, "condition": "", "conditionVersion": "", "description": "", "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}", "name": "{roleAssignmentId}", "principalId": "{groupObjectId}", "principalName": "{principalName}", "principalType": "Group", "resourceGroup": "{resourceGroup}", "roleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1", "roleDefinitionName": "Storage Blob Data Reader", "scope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}", "type": "Microsoft.Authorization/roleAssignments" }
özelliğini güncelleştirin
condition
. Öznitelik kümesi adınızı kullandığınızdan emin olun."condition": "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})) OR (@Principal[Microsoft.Directory/CustomSecurityAttributes/Id:Engineering_Project] StringEquals @Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>]))",
özelliğini güncelleştirin
conditionVersion
."conditionVersion": "2.0",
Koşulu rol atamasına eklemek için az role assignment update komutunu kullanın.
az role assignment update --role-assignment "./path/roleassignment.json"
Koşulu test edin
Yeni bir komut penceresinde az login komutunu kullanarak güvenlik grubunun bir üyesi olarak oturum açın.
az login
Baker dosyasının özelliklerini okumayı denemek için az storage blob show komutunu kullanın.
az storage blob show --account-name <storageAccountName> --container-name <containerName> --name <blobNameBaker> --auth-mode login
Blobu okuyamamalısınız ve yetkilendirme başarısız iletisi görüntülenmelidir.
You do not have the required permissions needed to perform this operation. ...
Cascade dosyasının özelliklerini okumayı denemek için az storage blob show komutunu kullanın.
az storage blob show --account-name <storageAccountName> --container-name <containerName> --name <blobNameCascade> --auth-mode login You should be able to read the blob. { "container": "<containerName>", "content": "", "deleted": false, "encryptedMetadata": null, "encryptionKeySha256": null, "encryptionScope": null, ... }