Mengizinkan akses baca ke blob berdasarkan tag dan atribut keamanan kustom (Pratinjau)
Penting
Atribut keamanan kustom saat ini dalam mode PRATINJAU. Lihat Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure untuk persyaratan hukum yang berlaku pada fitur Azure dalam versi beta, pratinjau, atau belum dirilis secara umum.
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 Azure AD, Anda memerlukan:
- Lisensi Azure AD Premium P1 atau P2
- Administrator Definisi Atribut dan Administrator Penugasan Atribut
- Administrator atau PemilikAkses Pengguna
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 penyusun kondisi.
Kondisi
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 ke penetapan peran.

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.

Berikut adalah kondisi yang terlihat dalam kode:
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND SubOperationMatches{'Blob.Read.WithTagConditions'})
)
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)? (pratinjau).
Langkah 1: Tambahkan atribut keamanan kustom baru
Masuk ke portal Microsoft Azure.
Klik Azure Active Directory>Atribut keamanan kustom (Pratinjau).
Tambahkan atribut bernama
Projectdengan nilaiBakerdanCascade. Atau gunakan atribut yang ada. Untuk informasi selengkapnya, lihat Menambahkan atau menonaktifkan atribut keamanan kustom di Azure Active Directory.
Langkah 2: Menetapkan atribut keamanan kustom untuk pengguna
Di Azure AD, buat grup keamanan.
Tambahkan pengguna sebagai anggota grup.
Tetapkan
Projectatribut dengan nilaiCascadeuntuk pengguna. Untuk informasi selengkapnya, lihat Menetapkan atau menghapus atribut keamanan kustom untuk pengguna.
Pastikan untuk mengklik Simpan untuk menyimpan tugas Anda.
Langkah 3: Menyiapkan tag indeks penyimpanan dan blob
Buat akun penyimpanan yang kompatibel dengan fitur tag indeks blob. Untuk informasi selengkapnya, lihat Mengelola dan menemukan data Azure Blob dengan tag indeks blob.
Buat kontainer baru dalam akun penyimpanan dan atur tingkat akses Publik ke Privat (tanpa akses anonim).
Atur jenis autentikasi ke Azure AD Akun Pengguna.
Upload file teks ke kontainer dan atur tag indeks blob berikut.
File Kunci Nilai File teks baker Project Baker File teks kaskade Project Cascade Tip
Untuk informasi tentang karakter yang diizinkan untuk tag indeks blob, lihat Mengatur tag indeks blob.
Langkah 4: Menetapkan peran Storage Blob Data Reader dengan kondisi
Buka tab baru dan masuk ke portal Azure.
Buka grup sumber daya yang memiliki akun penyimpanan.
Pilih Kontrol akses (IAM) .
Klik tab Penetapan peran untuk melihat penetapan peran pada cakupan ini.
Klik Tambahkan>Tambahkan penetapan peran.
Pada tab Peran, pilih peran Storage Blob Data Reader.
Pada tab Anggota , pilih grup keamanan yang Anda buat sebelumnya.
(Opsional) Dalam kotak Deskripsi , masukkan Akses baca ke blob jika pengguna memiliki atribut keamanan kustom yang cocok dengan tag indeks blob.
Pada tab Kondisi (opsional) , klik Tambahkan kondisi.
Halaman Tambahkan kondisi penetapan peran akan muncul.
Di bagian Tambahkan tindakan, klik Tambahkan tindakan.
Panel Pilih tindakan akan muncul. Panel ini adalah daftar tindakan data yang difilter berdasarkan penetapan peran yang akan menjadi target kondisi Anda.
Klik Baca konten dari blob dengan kondisi tag lalu klik Pilih.
Di bagian Ekspresi build , klik Tambahkan.
Masukkan pengaturan berikut:
Pengaturan Nilai Sumber atribut Utama Atribut <>set atribut_Project Operator StringEquals Pilihan Atribut Sumber atribut Sumber daya Atribut Tag indeks blob [Nilai dalam kunci] Kunci Project Catatan
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.

Gulir ke atas ke Jenis editor, lalu klik Kode.
Kondisi Anda akan terlihat mirip dengan yang berikut ini:
( ( !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND SubOperationMatches{'Blob.Read.WithTagConditions'}) ) OR ( @Principal[Microsoft.Directory/CustomSecurityAttributes/Id:Engineering_Project] StringEquals @Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>] ) )Klik Simpan untuk menyimpan kondisi.
Pada tab Tinjau + tetapkan, klik Tinjau + tetapkan untuk menetapkan peran Pembaca Data Blob Storage dengan kondisi.
Langkah 5: Tetapkan peran Pembaca
Ulangi langkah-langkah sebelumnya untuk menetapkan peran Pembaca untuk grup keamanan di cakupan grup sumber daya.
Catatan
Biasanya, Anda tidak perlu menetapkan peran Pembaca. Namun, hal ini dilakukan agar Anda dapat menguji kondisi menggunakan portal Azure.
Langkah 6: Uji kondisi
Di jendela baru, buka portal Azure.
Masuk sebagai pengguna yang Anda buat dengan
Project=Cascadeatribut keamanan kustom.Buka akun penyimpanan dan kontainer yang Anda buat.
Pastikan bahwa metode autentikasi diatur ke Akun Pengguna Azure AD dan bukan Kunci akses.

Klik file teks Baker.
Anda TIDAK boleh menampilkan atau mengunduh blob dan pesan otorisasi gagal akan ditampilkan.
Klik File teks bertingkat.
Anda akan dapat menampilkan 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 (pratinjau).
Menambahkan kondisi
Gunakan perintah Koneksi-AzAccount dan ikuti instruksi yang muncul untuk masuk ke direktori Anda sebagai Administrator Akses Pengguna atau Pemilik.
Connect-AzAccountGunakan Get-AzRoleAssignment untuk mendapatkan penetapan peran yang Anda tetapkan ke grup keamanan.
$groupRoleAssignment = Get-AzRoleAssignment -ObjectId <groupObjectId> -Scope <scope>Atur
Conditionproperti objek penetapan peran. Pastikan untuk menggunakan nama set atribut Anda.$groupRoleAssignment.Condition="((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND SubOperationMatches{'Blob.Read.WithTagConditions' })) OR (@Principal[Microsoft.Directory/CustomSecurityAttributes/Id:Engineering_Project] StringEquals @Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<`$key_case_sensitive`$>]))"Atur
ConditionVersionproperti objek penetapan peran.$groupRoleAssignment.ConditionVersion = "2.0"Gunakan Set-AzRoleAssignment untuk memperbarui penetapan peran.
Set-AzRoleAssignment -InputObject $groupRoleAssignment
Menguji kondisi
Di jendela PowerShell baru, gunakan perintah Koneksi-AzAccount untuk masuk sebagai anggota grup keamanan.
Connect-AzAccountGunakan New-AzStorageContext untuk mengatur konteks untuk akun penyimpanan.
$bearerCtx = New-AzStorageContext -StorageAccountName <accountName>Gunakan Get-AzStorageBlob untuk mencoba membaca file Baker.
Get-AzStorageBlob -Container <containerName> -Blob <blobNameBaker> -Context $bearerCtxAnda SEHARUSNYA TIDAK dapat membaca blob dan pesan otorisasi gagal 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. ...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
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 (pratinjau).
Menambahkan kondisi
Gunakan perintah az login dan ikuti instruksi yang muncul untuk masuk ke direktori Anda sebagai Administrator Akses Pengguna atau Pemilik.
az loginGunakan az role assignment list untuk mendapatkan penetapan peran yang Anda tetapkan ke grup keamanan.
az role assignment list --assignee <groupObjectId> --scope <scope>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" }conditionPerbarui properti . Pastikan untuk menggunakan nama set atribut Anda."condition": "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND SubOperationMatches{'Blob.Read.WithTagConditions' })) OR (@Principal[Microsoft.Directory/CustomSecurityAttributes/Id:Engineering_Project] StringEquals @Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>]))",conditionVersionPerbarui properti ."conditionVersion": "2.0",Gunakan pembaruan penetapan peran az untuk menambahkan kondisi ke penetapan peran.
az role assignment update --role-assignment "./path/roleassignment.json"
Menguji kondisi
Di jendela perintah baru, gunakan perintah az login untuk masuk sebagai anggota grup keamanan.
az loginGunakan 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 loginAnda SEHARUSNYA TIDAK dapat membaca blob dan pesan otorisasi gagal harus ditampilkan.
You do not have the required permissions needed to perform this operation. ...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, ... }