Bagikan melalui


Mengizinkan akses baca ke blob berdasarkan tag dan atribut keamanan kustom

Dalam artikel ini, Anda mempelajari cara mengizinkan akses baca ke blob berdasarkan tag indeks blob dan atribut keamanan kustom dengan menggunakan kondisi kontrol akses berbasis atribut (ABAC). Ini dapat mempermudah pengelolaan akses ke blob.

Prasyarat

Untuk menetapkan atribut keamanan kustom dan menambahkan kondisi penetapan peran di penyewa Microsoft Entra, Anda memerlukan:

Penting

Secara default, Administrator Global dan peran administrator lainnya tidak memiliki izin untuk membaca, menentukan, atau menetapkan atribut keamanan kustom. Jika Anda tidak memenuhi prasyarat ini, Anda tidak akan melihat atribut utama/pengguna di editor kondisi.

Keadaan

Dalam artikel ini, Anda mengizinkan akses baca ke blob jika pengguna memiliki atribut keamanan kustom yang cocok dengan tag indeks blob. Ini dicapai dengan menambahkan kondisi pada penetapan peran.

Diagram penetapan peran dengan kondisi.

Misalnya, jika Brenda memiliki atribut Project=Baker, dia hanya dapat membaca blob dengan Project=Baker tag indeks blob. Demikian pula, Chandra hanya dapat membaca blob dengan Project=Cascade.

Diagram memperlihatkan akses baca ke blob berdasarkan tag dan atribut keamanan kustom.

Berikut adalah seperti apa kondisinya dalam kode:

(
 (
  !(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$>]
 )
)

Untuk informasi selengkapnya tentang kondisi, lihat Apa itu kontrol akses berbasis atribut Azure (Azure ABAC)?

Langkah 1: Tambahkan atribut keamanan kustom baru

  1. Masuk ke portal Azure.

  2. Klik Microsoft Entra ID>Atribut Keamanan Kustom.

  3. Tambahkan atribut bernama Project dengan nilai Baker dan Cascade. Atau gunakan atribut yang ada. Untuk informasi selengkapnya, lihat Menambahkan atau menonaktifkan atribut keamanan kustom di ID Microsoft Entra.

    Cuplikan layar menambahkan atribut keamanan kustom.

Langkah 2: Menetapkan atribut keamanan kustom kepada pengguna

  1. Di ID Microsoft Entra, buat grup keamanan.

  2. Tambahkan pengguna sebagai anggota grup.

  3. Tetapkan atribut Project dengan nilai Cascade kepada pengguna. Untuk informasi selengkapnya, lihat Menetapkan, memperbarui, mencantumkan, atau menghapus atribut keamanan kustom untuk pengguna.

    Cuplikan layar menetapkan atribut keamanan kustom.

  4. Pastikan untuk mengklik Simpan untuk menyimpan tugas Anda.

Langkah 3: Mengatur tag indeks dan blob penyimpanan

  1. Buat akun penyimpanan yang kompatibel dengan fitur tag indeks blob. Untuk informasi selengkapnya, silakan lihat Mengelola dan menemukan data Azure Blob dengan tag indeks blob.

  2. Buat kontainer baru dalam akun penyimpanan dan atur tingkat akses Publik ke Privat (tanpa akses anonim).

  3. Atur jenis autentikasi ke Akun Pengguna Azure ACTIVE Directory.

  4. Unggah file teks ke kontainer dan atur tag indeks blob berikut.

    File Kunci Nilai
    File teks Baker Project Pembuat Roti
    File teks berjenjang Project Air terjun

    Petunjuk / Saran

    Untuk informasi tentang karakter yang diizinkan untuk tag indeks blob, lihat Mengatur tag indeks blob.

Langkah 4: Tetapkan peran Pembaca Data Blob Penyimpanan dengan kondisi

  1. Buka tab baru dan masuk ke portal Microsoft Azure.

  2. Buka grup sumber daya yang memiliki akun penyimpanan.

  3. Buka Kontrol akses (IAM).

  4. Klik tab Penetapan peran untuk melihat penetapan peran pada cakupan ini.

  5. Klik Tambahkan>penetapan peran.

  6. Pada tab Peran , pilih peran Pembaca Data Blob Penyimpanan .

  7. Pada tab Anggota , pilih grup keamanan yang Anda buat sebelumnya.

  8. (Opsional) Dalam kotak Deskripsi , masukkan Akses baca ke blob jika pengguna memiliki atribut keamanan kustom yang cocok dengan tag indeks blob.

  9. Pada tab Kondisi (opsional), klik Tambahkan kondisi.

    Halaman Tambahkan kondisi penetapan peran muncul.

  10. Di bagian Tambahkan tindakan , klik Tambahkan tindakan.

    Panel Pilih tindakan muncul. Panel ini menampilkan daftar tindakan data yang telah difilter berdasarkan pengaturan peran yang akan menjadi target kondisi Anda.

  11. Klik Baca blob lalu klik Pilih.

  12. Di bagian Ekspresi build , klik Tambahkan.

  13. Masukkan pengaturan berikut:

    Setting Nilai
    Sumber atribut Kepala Sekolah
    Attribute <atributset>_Proyek
    Operator StringEquals
    Option Attribute
    Sumber atribut Sumber Daya
    Attribute Tag indeks blob [Nilai di dalam kunci]
    Kunci Project

    Nota

    Jika Utama tidak terdaftar sebagai opsi di Sumber atribut, pastikan Anda telah menentukan atribut keamanan kustom seperti yang dijelaskan sebelumnya di Langkah 1: Tambahkan atribut keamanan kustom baru.

    Cuplikan layar kondisi menggunakan atribut utama yang ditampilkan di editor visual.

  14. Gulir ke atas ke Jenis editor dan klik Kode.

    Kondisi Anda akan terlihat mirip dengan yang berikut ini:

    (
     (
      !(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. Klik Simpan untuk menyimpan kondisi.

  16. Pada tab Tinjau + tetapkan, klik Tinjau + tetapkan untuk menetapkan peran Pembaca Data Penyimpanan Blob dengan kondisi.

Langkah 5: Tetapkan peran Pembaca

  • Ulangi langkah-langkah sebelumnya untuk menetapkan peran Pembaca untuk grup keamanan di cakupan grup sumber daya.

    Nota

    Anda biasanya tidak perlu menetapkan peran Pembaca. Namun, ini dilakukan agar Anda dapat menguji kondisi menggunakan portal Microsoft Azure.

Langkah 6: Uji kondisi

  1. Di jendela baru, buka portal Microsoft Azure.

  2. Masuk sebagai pengguna yang Anda buat dengan Project=Cascade atribut keamanan kustom.

  3. Buka akun penyimpanan dan kontainer yang Anda buat.

  4. Pastikan bahwa metode autentikasi diatur ke Akun Pengguna Azure AD dan bukan Kunci Akses.

    Cuplikan layar kontainer penyimpanan dengan file pengujian.

  5. Klik pada file teks Baker.

    Anda SEHARUSNYA TIDAK dapat melihat atau mengunduh blob dan pesan kegagalan otorisasi harus ditampilkan.

  6. Klik file teks Cascade.

    Anda harus dapat melihat dan mengunduh blob.

Azure PowerShell

Anda juga dapat menggunakan Azure PowerShell untuk menambahkan kondisi penetapan peran. Perintah berikut menunjukkan cara menambahkan kondisi. Untuk informasi, lihat Tutorial: Menambahkan kondisi penetapan peran untuk membatasi akses ke blob menggunakan Azure PowerShell.

Tambahkan kondisi

  1. Gunakan perintah Connect-AzAccount dan ikuti instruksi yang muncul untuk masuk ke direktori Anda sebagai Administrator Kontrol Akses Berbasis Peran.

    Connect-AzAccount
    
  2. Gunakan Get-AzRoleAssignment untuk mendapatkan penugasan peran yang Anda tetapkan ke grup keamanan.

    $groupRoleAssignment = Get-AzRoleAssignment -ObjectId <groupObjectId> -Scope <scope>
    
  3. Atur Condition properti objek penetapan peran. Pastikan untuk menggunakan nama set atribut Anda.

    $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. Atur ConditionVersion properti objek penetapan peran.

    $groupRoleAssignment.ConditionVersion = "2.0"
    
  5. Gunakan Set-AzRoleAssignment untuk memperbarui penetapan peran.

    Set-AzRoleAssignment -InputObject $groupRoleAssignment
    

Menguji kondisi

  1. Di jendela PowerShell baru, gunakan perintah Connect-AzAccount untuk masuk sebagai anggota grup keamanan.

    Connect-AzAccount
    
  2. Gunakan New-AzStorageContext untuk mengatur konteks untuk akun penyimpanan.

    $bearerCtx = New-AzStorageContext -StorageAccountName <accountName>
    
  3. Gunakan Get-AzStorageBlob untuk mencoba membaca file Baker.

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

    Anda SEHARUSNYA TIDAK dapat membaca blob dan pesan gagalnya otorisasi harus ditampilkan.

    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. Gunakan Get-AzStorageBlob untuk mencoba membaca file Cascade.

    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 (antarmuka baris perintah Azure)

Anda juga dapat menggunakan Azure CLI untuk menambahkan kondisi penetapan peran. Perintah berikut menunjukkan cara menambahkan kondisi. Untuk informasi, lihat Tutorial: Menambahkan kondisi penetapan peran untuk membatasi akses ke blob menggunakan Azure CLI.

Tambahkan kondisi

  1. Gunakan perintah az login dan ikuti instruksi yang muncul untuk masuk ke direktori Anda sebagai Administrator Kontrol Akses Berbasis Peran.

    az login
    
  2. Gunakan az role assignment list untuk mendapatkan penetapan peran yang Anda tetapkan ke grup keamanan.

    az role assignment list --assignee <groupObjectId> --scope <scope>
    
  3. Buat file JSON dengan format berikut.

    {
        "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. Perbarui properti condition. Pastikan untuk menggunakan nama set atribut yang telah Anda tentukan.

    "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. Perbarui properti conditionVersion.

    "conditionVersion": "2.0",
    
  6. Gunakan az role assignment update untuk menambahkan kondisi ke penetapan peran.

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

Menguji kondisi

  1. Di jendela perintah baru, gunakan perintah az login untuk masuk sebagai anggota grup keamanan.

    az login
    
  2. Gunakan az storage blob show untuk mencoba membaca properti untuk file Baker.

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

    Anda SEHARUSNYA TIDAK dapat membaca blob dan pesan kesalahan otorisasi harus ditampilkan.

    You do not have the required permissions needed to perform this operation.
    ...
    
  3. Gunakan az storage blob show untuk mencoba membaca properti untuk file Cascade.

    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,
    ...
    }
    

Langkah selanjutnya