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:

Önemli

Varsayılan olarak, Genel Yönetici 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.

Bir koşulla rol atama diyagramı.

Örneğin, Brenda Project=Bakerözniteliğine sahipse blobları yalnızca Project=Baker blob dizin etiketiyle okuyabilir. Benzer şekilde, Chandra yalnızca Project=Cascadeile blobları okuyabilir.

Etiketlere ve özel güvenlik özniteliklerine göre bloblara okuma erişimini gösteren diyagram.

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

  1. Azure portalınaoturum açın.

  2. Microsoft Entra ID >öğesinetıklayın.

  3. Project ve Bakerdeğerleriyle Cascade adlı bir öznitelik ekleyin. Veya var olan bir özniteliği kullanın. Daha fazla bilgi için bkz. Microsoft Entra IDözel güvenlik özniteliklerini ekleme veya devre dışı bırakma.

    Özel güvenlik özniteliği ekleme ekran görüntüsü.

2. Adım: Kullanıcıya özel güvenlik özniteliği atama

  1. Microsoft Entra Id'de bir güvenlik grubu oluşturun.

  2. Bir kullanıcıyı grubun üyesi olarak ekleyin.

  3. Project değerine sahip Cascade özniteliğini 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.

    Özel güvenlik özniteliği atama işleminin ekran görüntüsü.

  4. Ödevinizi kaydetmek için Kaydet'e tıklamayı unutmayın.

3. Adım: Depolama ve blob dizini etiketlerini ayarlama

  1. Blob dizin etiketleri özelliğiyle uyumlu bir depolama hesabı oluşturun. Daha fazla bilgi için Blob dizini etiketleriyle Azure Blob verilerini yönetme ve bulma bölümüne bakın.

  2. Depolama hesabında yeni bir kapsayıcı oluşturun ve Genel erişim düzeyiÖzel (anonim erişim yok) olarak ayarlayın.

  3. Kimlik doğrulama türünü Azure AD Kullanıcı Hesabıolarak ayarlayın.

  4. 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ı
    Katmanlı metin dosyası Proje Şelale

    Tavsiye

    Blob dizini etiketleri için izin verilen karakterler hakkında bilgi için bkz. Blob dizini etiketlerini ayarlama.

4. Adım: Depolama Blobu Veri Okuyucusu rolünü bir koşulla atama

  1. Yeni bir sekme açın ve Azure portalındaoturum açın.

  2. Depolama hesabı olan kaynak grubunu açın.

  3. Erişim denetimi (IAM) öğesine tıklayın.

  4. Bu kapsamdaki rol atamalarını görüntülemek için Rol atamaları sekmesine tıklayın.

  5. Ekle>Rol ataması ekle seçeneğine tıklayın.

  6. Rol sekmesinde Depolama Blob Veri Okuyucusu rolünü seçin.

  7. Üyeler sekmesinde, daha önce oluşturduğunuz güvenlik grubunu seçin.

  8. (İsteğe bağlı) Açıklama kutusuna, kullanıcı blob dizin etiketiyle eşleşen özel bir güvenlik özniteliğine sahipse bloblara okuma erişiminigirin.

  9. Koşulları (isteğe bağlı) sekmesinde, Koşul ekle'ye tıklayın.

    Rol ataması koşulu ekle sayfası görüntülenir.

  10. Eylem ekle bölümünde, eylem eklemek için Eylem ekleüzerine 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.

  11. Blob oku'ya tıklayın ve ardından seç'e tıklayın.

  12. Derleme ifadesi bölümünde, Ekle'yitıklayın.

  13. Aşağıdaki ayarları girin:

    Ayarlar Değer
    Öznitelik kaynağı Müdür
    Öznitelik <öznitelik kümesi>_Project
    Operatör StringEquals
    Seçenek Öznitelik
    Öznitelik kaynağı Kaynak
    Öznitelik Blob dizin etiketleri [Anahtardaki değerler]
    Anahtar Proje

    Uyarı

    Eğer Prensip, Öznitelik kaynağında bir seçenek olarak listelenmiyorsa, daha önce Adım 1:yeni bir özel güvenlik özniteliği ekleme bölümünde açıklandığı gibi özel bir güvenlik özniteliği tanımladığınızdan emin olun.

    Görsel düzenleyicisinde görüntülenen asıl özniteliği kullanan koşulun ekran görüntüsü.

  14. Düzenleyici türüne kadar kaydırın ve Kodöğesine 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$>]
     )
    )
    
  15. Koşulu kaydetmek için Kaydet'e tıklayın.

  16. Gözden Geçir + Ata sekmesinde, bir koşulla Depolama Blobu Veri Okuyucusu rolünü atamak için Gözden Geçir + Ata tıklayın.

5. Adım: Okuyucu rolü atama

  • Kaynak grubu kapsamındaki güvenlik grubu için Okuyucu rolünü atamak için önceki adımları yineleyin.

    Uyarı

    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

  1. Yeni bir pencerede Azure portalınıaçın.

  2. Project=Cascade özel güvenlik özniteliğiyle oluşturduğunuz kullanıcı olarak oturum açın.

  3. Oluşturduğunuz depolama hesabını ve kapsayıcıyı açın.

  4. Kimlik doğrulama yönteminin Erişim anahtarıdeğil Azure AD Kullanıcı Hesabı olarak ayarlandığından emin olun.

    Test dosyaları içeren depolama kapsayıcısının ekran görüntüsü.

  5. Baker metin dosyasına tıklayın.

    Blobu görüntüleyebilmeniz veya indirebilmeniz DEĞİl ve yetkilendirme başarısız iletisi görüntülenmelidir.

  6. Cascade adlı metin dosyasını 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. Öğreticisi: Azure PowerShellkullanarak bloblara erişimi kısıtlamak için rol atama koşulu ekleme.

Koşul ekle

  1. Connect-AzAccount komutunu kullanın ve dizininizde Rol Tabanlı Erişim Denetimi Yöneticisi olarak oturum açarken görünen yönergeleri izleyin.

    Connect-AzAccount
    
  2. Güvenlik grubuna atadığınız rol atamasını almak için Get-AzRoleAssignment kullanın.

    $groupRoleAssignment = Get-AzRoleAssignment -ObjectId <groupObjectId> -Scope <scope>
    
  3. Rol atama nesnesinin Condition ö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`$>]))"
    
  4. Rol atama nesnesinin ConditionVersion özelliğini ayarlayın.

    $groupRoleAssignment.ConditionVersion = "2.0"
    
  5. Rol atamasını güncelleştirmek için Set-AzRoleAssignment kullanın.

    Set-AzRoleAssignment -InputObject $groupRoleAssignment
    

Koşulu test edin

  1. Yeni bir PowerShell penceresinde, güvenlik grubunun bir üyesi olarak oturum açmak için Connect-AzAccount komutunu kullanın.

    Connect-AzAccount
    
  2. Depolama hesabının bağlamını ayarlamak için New-AzStorageContext kullanın.

    $bearerCtx = New-AzStorageContext -StorageAccountName <accountName>
    
  3. Baker dosyasını okumaya çalışmak için Get-AzStorageBlob kullanın.

    Get-AzStorageBlob -Container <containerName> -Blob <blobNameBaker> -Context $bearerCtx
    

    Blobu okuyabilmek DEĞİl 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.
    ...
    
  4. Cascade dosyasını okumayı denemek için Get-AzStorageBlob 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 Komut Satırı Arayüzü (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. Öğreticisi: Azure CLIkullanarak bloblara erişimi kısıtlamak için rol atama koşulu ekleme.

Koşul ekle

  1. az login komutunu kullanın ve dizininizde Rol Tabanlı Erişim Denetimi Yöneticisi olarak oturum açarken görünen yönergeleri izleyin.

    az login
    
  2. Güvenlik grubuna atadığınız rol atamasını almak için az role assignment list kullanın.

    az role assignment list --assignee <groupObjectId> --scope <scope>
    
  3. 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"
    }
    
  4. condition özelliğini güncelleştirin. Ö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$>]))",
    
  5. conditionVersion özelliğini güncelleştirin.

    "conditionVersion": "2.0",
    
  6. Koşulu rol atamasına eklemek için az role assignment update kullanın.

    az role assignment update --role-assignment "./path/roleassignment.json"
    

Koşulu test edin

  1. Yeni bir komut penceresinde az login komutunu kullanarak güvenlik grubunun bir üyesi olarak oturum açın.

    az login
    
  2. Baker dosyasının özelliklerini okumaya çalışmak için az storage blob show kullanın.

    az storage blob show --account-name <storageAccountName> --container-name <containerName> --name <blobNameBaker> --auth-mode login
    

    Blobu okuyabilmek DEĞİl ve yetkilendirme başarısız iletisi görüntülenmelidir.

    You do not have the required permissions needed to perform this operation.
    ...
    
  3. Cascade dosyasının özelliklerini okumayı denemek için az storage blob show 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,
    ...
    }
    

Sonraki adımlar