Format dan sintaks kondisi penetapan peran Azure
Kondisi adalah pemeriksaan tambahan yang dapat Anda tambahkan secara opsional ke penetapan peran untuk memberikan kontrol akses yang lebih halus. Misalnya, Anda dapat menambahkan kondisi yang mengharuskan objek memiliki tag tertentu untuk membaca objek. Artikel ini menjelaskan format dan sintaks kondisi penetapan peran.
Format kondisi
Untuk lebih memahami kondisi penetapan peran, ada baiknya melihat formatnya.
Kondisi sederhana
Kondisi paling dasar terdiri dari tindakan dan ekspresi yang ditargetkan. Tindakan adalah operasi yang dapat dilakukan pengguna pada jenis sumber daya. Ekspresi adalah pernyataan yang mengevaluasi benar atau salah, yang menentukan apakah tindakan diizinkan untuk dilakukan.
Berikut ini adalah format dari kondisi sederhana.
(
(
!(ActionMatches{'<action>'})
)
OR
(
<attribute> <operator> <value>
)
)
Kondisi berikut memiliki tindakan "Baca blob". Ekspresi memeriksa apakah nama kontainer adalah blob-contoh-kontainer.
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})
)
OR
(
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name]
StringEquals 'blobs-example-container'
)
)
Bagaimana suatu kondisi dievaluasi
Jika pengguna mencoba melakukan tindakan dalam penetapan peran yang bukan <action>
, !(ActionMatches)
dievaluasi sebagai benar dan kondisi keseluruhan dievaluasi sebagai benar untuk memungkinkan tindakan dilakukan.
Jika pengguna mencoba melakukan <action>
dalam penetapan peran, !(ActionMatches)
dievaluasi sebagai salah, sehingga ekspresi dievaluasi. Jika ekspresi bernilai benar, kondisi keseluruhan bernilai benar untuk memungkinkan <action>
dilakukan. Jika tidak, <action>
tidak diizinkan untuk dilakukan.
Kode semu berikut menunjukkan cara lain Anda dapat membaca kondisi ini.
if a user tries to perform an action in the role assignment that does not match <action>
{
Allow action to be performed
}
else
{
if <attribute> <operator> <value> is true
{
Allow <action> to be performed
}
else
{
Do not allow <action> to be performed
}
}
Suboperasi
Beberapa tindakan memiliki suboperasi. Misalnya, Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
tindakan data memiliki suboperasi "Cantumkan blob". Kondisi dengan suboperasi memiliki format berikut.
(
(
!(ActionMatches{'<action>'}
AND
SubOperationMatches{'<subOperation>'})
)
OR
(
<attribute> <operator> <value>
)
)
Beberapa tindakan
Kondisi dapat menyertakan beberapa tindakan yang ingin Anda izinkan jika kondisi adalah benar. Jika Anda memilih beberapa tindakan untuk satu kondisi, mungkin ada lebih sedikit atribut untuk dipilih untuk kondisi Anda karena atribut harus tersedia di seluruh tindakan yang dipilih.
(
(
!(ActionMatches{'<action>'})
AND
!(ActionMatches{'<action>'})
)
OR
(
<attribute> <operator> <value>
)
)
Beberapa ekspresi
Kondisi dapat mencakup beberapa ekspresi. Bergantung pada operator, atribut dapat diperiksa terhadap beberapa nilai.
(
(
!(ActionMatches{'<action>'})
)
OR
(
<attribute> <operator> <value>
AND | OR
<attribute> <operator> {<value>, <value>, <value>}
AND | OR
<attribute> <operator> <value>
)
)
Beberapa kondisi
Anda juga dapat menggabungkan kondisi untuk menargetkan beberapa tindakan.
(
(
!(ActionMatches{'<action>'})
)
OR
(
<attribute> <operator> <value>
AND | OR
<attribute> <operator> {<value>, <value>, <value>}
AND | OR
<attribute> <operator> <value>
)
)
AND
(
(
!(ActionMatches{'<action>'})
)
OR
(
<attribute> <operator> <value>
AND | OR
<attribute> <operator> <value>
)
)
Sintaks kondisi
Berikut ini menunjukkan sintaks untuk kondisi penetapan peran.
(
(
!(ActionMatches{'<action>'} AND SubOperationMatches{'<subOperation>'})
AND
!(ActionMatches{'<action>'} AND SubOperationMatches{'<subOperation>'})
AND
...
)
OR
(
<attribute> <operator> {<value, <value>, ...}
AND | OR
<attribute> <operator> {<value>, <value>, ...}
AND | OR
...
)
)
AND
(
(
!(ActionMatches{'<action>'} AND SubOperationMatches{'<subOperation>'})
AND
!(ActionMatches{'<action>'} AND SubOperationMatches{'<subOperation>'})
AND
...
)
OR
(
<attribute> <operator> {<value, <value>, ...}
AND | OR
<attribute> <operator> {<value>, <value>, ...}
AND | OR
...
)
)
AND
...
Tindakan
Saat ini, kondisi dapat ditambahkan ke penetapan peran bawaan atau kustom yang memiliki penyimpanan blob atau tindakan data penyimpanan antrean. Ini termasuk peran bawaan berikut:
- Kontributor Data Blob Penyimpanan
- Pemilik Data Blob Penyimpanan
- Pembaca Data Blob Penyimpanan.
- Kontributor Data Antrean Penyimpanan
- Pemroses Pesan Data Antrean Penyimpanan
- Storage Queue Data Message Sender
- Kontributor Data Antrean Penyimpanan
Untuk daftar tindakan penyimpanan yang dapat Anda gunakan dalam kondisi, lihat Tindakan dan atribut untuk kondisi penetapan peran Azure untuk Azure Blob Storage dan Tindakan dan atribut untuk kondisi penetapan peran Azure untuk antrean Azure.
Atribut
Bergantung pada tindakan yang dipilih, atribut dapat ditemukan di tempat yang berbeda. Jika Anda memilih beberapa tindakan untuk satu kondisi, mungkin ada lebih sedikit atribut untuk dipilih untuk kondisi Anda karena atribut harus tersedia di seluruh tindakan yang dipilih. Untuk menentukan atribut, Anda harus menyertakan sumber sebagai awalan.
Sumber atribut | Deskripsi | Kode |
---|---|---|
Sumber daya | Menunjukkan bahwa atribut ada di sumber daya, seperti nama kontainer. | @Resource |
Minta | Menunjukkan bahwa atribut adalah bagian dari permintaan tindakan, seperti mengatur tag indeks blob. | @Request |
Utama | Menunjukkan bahwa atribut adalah atribut keamanan kustom Azure AD pada prinsipal, seperti pengguna, aplikasi perusahaan (perwakilan layanan), atau identitas terkelola. Atribut utama saat ini dalam pratinjau. | @Principal |
Atribut sumber daya dan permintaan
Untuk daftar atribut penyimpanan blob atau penyimpanan antrean yang dapat Anda gunakan dalam kondisi, lihat:
- Tindakan dan atribut untuk kondisi penetapan peran Azure untuk Azure Blob Storage
- Tindakan dan atribut untuk ketentuan penetapan peran Azure bagi antrean Azure
Atribut utama
Penting
Atribut utama saat ini dalam 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.
Untuk menggunakan atribut utama, Anda harus memiliki semua hal berikut:
- Lisensi Azure AD Premium P1 atau P2
- Azure AD izin untuk pengguna yang masuk, seperti peran Administrator Penugasan Atribut
- Atribut keamanan kustom yang ditentukan dalam Azure AD
Untuk informasi selengkapnya tentang atribut keamanan kustom, lihat:
- Mengizinkan akses baca ke blob berdasarkan tag dan atribut keamanan kustom (Pratinjau)
- Prinsipal tidak muncul di Sumber atribut (Pratinjau)
- Menambahkan atau menonaktifkan atribut keamanan kustom di Azure Active Directory (Pratinjau)
Operator fungsi
Bagian ini mencantumkan operator fungsi yang tersedia untuk membangun kondisi.
ActionMatches
Properti | Nilai |
---|---|
Operator | ActionMatches |
Deskripsi | Memeriksa apakah tindakan saat ini cocok dengan pola tindakan yang ditentukan. |
Contoh | ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} Jika tindakan yang diperiksa sama dengan "Microsoft. Storage/storageAccounts/blobServices/containers/blobs/read", lalu true ActionMatches{'Microsoft.Authorization/roleAssignments/*'} Jika tindakan yang diperiksa sama dengan "Microsoft. Authorization/roleAssignments/write", lalu true ActionMatches{'Microsoft.Authorization/roleDefinitions/*'} Jika tindakan yang diperiksa sama dengan "Microsoft. Otorisasi/roleAssignments/write", lalu false |
SubOperationMatches
Properti | Nilai |
---|---|
Operator | SubOperationMatches |
Deskripsi | Memeriksa apakah suboperasi saat ini cocok dengan pola suboperasi yang ditentukan. |
Contoh | SubOperationMatches{'Blob.List'} |
Ada
Properti | Nilai |
---|---|
Operator | Exists |
Deskripsi | Memeriksa apakah atribut yang ditentukan ada. |
Contoh | Exists @Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:snapshot] |
Dukungan atribut | Encryption scope name Snapshot ID Versi |
Operator logika
Bagian ini mencantumkan operator logis yang tersedia untuk membangun kondisi.
Dan
Properti | Nilai |
---|---|
Operator | AND && |
Deskripsi | Dan operator. |
Contoh | !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'}) |
Atau
Properti | Nilai |
---|---|
Operator | OR || |
Deskripsi | Atau operator. |
Contoh | @Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:versionId] DateTimeEquals '2022-06-01T00:00:00.0Z' OR NOT Exists @Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:versionId |
Tidak
Properti | Nilai |
---|---|
Operator | NOT ! |
Deskripsi | Bukan atau operator negasi. |
Contoh | NOT Exists @Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:versionId] |
Operator perbandingan Boolean
Bagian ini mencantumkan operator perbandingan Boolean yang tersedia untuk membangun kondisi.
Properti | Nilai |
---|---|
Operator | BoolEquals BoolNotEquals |
Deskripsi | Perbandingan Boolean. |
Contoh | @Resource[Microsoft.Storage/storageAccounts:isHnsEnabled] BoolEquals true |
Operator perbandingan string
Bagian ini mencantumkan operator perbandingan string yang tersedia untuk membangun kondisi.
StringEquals
Properti | Nilai |
---|---|
Operator | StringEquals StringEqualsIgnoreCase |
Deskripsi | Pencocokan peka huruf besar/kecil (atau tidak peka huruf besar/kecil). Nilai harus sama persis dengan string. |
Contoh | @Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>] StringEquals 'Cascade' |
StringNotEquals
Properti | Nilai |
---|---|
Operator | StringNotEquals StringNotEqualsIgnoreCase |
Deskripsi | Negasi StringEquals operator (atau StringEqualsIgnoreCase ). |
StringStartsWith
Properti | Nilai |
---|---|
Operator | StringStartsWith StringStartsWithIgnoreCase |
Deskripsi | Pencocokan peka huruf besar/kecil (atau tidak peka huruf besar/kecil). Nilai dimulai dengan string. |
StringNotStartsWith
Properti | Nilai |
---|---|
Operator | StringNotStartsWith StringNotStartsWithIgnoreCase |
Deskripsi | Negasi StringStartsWith operator (atau StringStartsWithIgnoreCase ). |
StringLike
Properti | Nilai |
---|---|
Operator | StringLike StringLikeIgnoreCase |
Deskripsi | Pencocokan peka huruf besar/kecil (atau tidak peka huruf besar/kecil). Nilai dapat menyertakan kartubebas yang cocok dengan multi karakter (* ) atau kartubebas yang cocok dengan satu karakter (? ) di mana saja dalam string. Jika diperlukan, karakter ini dapat diloloskan dengan menambahkan garis miring terbalik \* dan \? . |
Contoh | @Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:path] StringLike 'readonly/*' Resource[name1] StringLike 'a*c?' Jika Resource[name1] sama dengan "abcd", maka benar Resource[name1] StringLike 'A*C?' Jika Resource[name1] sama dengan "abcd", maka salah Resource[name1] StringLike 'a*c' Jika Resource[name1] sama dengan "abcd", maka salah |
StringNotLike
Properti | Nilai |
---|---|
Operator | StringNotLike StringNotLikeIgnoreCase |
Deskripsi | Negasi StringLike operator (atau StringLikeIgnoreCase ). |
Operator perbandingan numerik
Bagian ini mencantumkan operator perbandingan numerik yang tersedia untuk membangun kondisi.
Properti | Nilai |
---|---|
Operator | NumericEquals NumericNotEquals NumericGreaterThan NumericGreaterThanEquals NumericLessThan NumericLessThanEquals |
Deskripsi | Pencocokan nomor. Hanya bilangan bulat yang didukung. |
Operator perbandingan DateTime
Bagian ini mencantumkan operator perbandingan tanggal/waktu yang tersedia untuk membangun kondisi.
Properti | Nilai |
---|---|
Operator | DateTimeEquals DateTimeNotEquals DateTimeGreaterThan DateTimeGreaterThanEquals DateTimeLessThan DateTimeLessThanEquals |
Deskripsi | Pemeriksaan presisi penuh dengan format: yyyy-mm-ddThh:mm:ss.mmmmmmmZ . Digunakan untuk ID versi blob dan rekam jepret blob. |
Contoh | @Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs:versionId] DateTimeEquals '2022-06-01T00:00:00.0Z' |
Operator perbandingan lintas produk
Bagian ini mencantumkan operator perbandingan lintas produk yang tersedia untuk membangun kondisi.
ForAnyOfAnyValues
Properti | Nilai |
---|---|
Operator | ForAnyOfAnyValues:StringEquals ForAnyOfAnyValues:StringEqualsIgnoreCase ForAnyOfAnyValues:StringNotEquals ForAnyOfAnyValues:StringNotEqualsIgnoreCase ForAnyOfAnyValues:StringLike ForAnyOfAnyValues:StringLikeIgnoreCase ForAnyOfAnyValues:StringNotLike ForAnyOfAnyValues:StringNotLikeIgnoreCase ForAnyOfAnyValues:NumericEquals ForAnyOfAnyValues:NumericNotEquals ForAnyOfAnyValues:NumericGreaterThan ForAnyOfAnyValues:NumericGreaterThanEquals ForAnyOfAnyValues:NumericLessThan ForAnyOfAnyValues:NumericLessThanEquals |
Deskripsi | Jika setidaknya satu nilai di sisi kiri memenuhi perbandingan dengan setidaknya satu nilai di sisi kanan, maka ekspresi dievaluasi sebagai benar. Memiliki format: ForAnyOfAnyValues:<BooleanFunction> . Mendukung banyak string dan angka. |
Contoh | @Resource[Microsoft.Storage/storageAccounts/encryptionScopes:name] ForAnyOfAnyValues:StringEquals {'validScope1', 'validScope2'} Jika nama cakupan enkripsi sama dengan validScope1 atau validScope2 , maka benar.{'red', 'blue'} ForAnyOfAnyValues:StringEquals {'blue', 'green'} TRUE {'red', 'blue'} ForAnyOfAnyValues:StringEquals {'orange', 'green'} salah |
ForAllOfAnyValues
Properti | Nilai |
---|---|
Operator | ForAllOfAnyValues:StringEquals ForAllOfAnyValues:StringEqualsIgnoreCase ForAllOfAnyValues:StringNotEquals ForAllOfAnyValues:StringNotEqualsIgnoreCase ForAllOfAnyValues:StringLike ForAllOfAnyValues:StringLikeIgnoreCase ForAllOfAnyValues:StringNotLike ForAllOfAnyValues:StringNotLikeIgnoreCase ForAllOfAnyValues:NumericEquals ForAllOfAnyValues:NumericNotEquals ForAllOfAnyValues:NumericGreaterThan ForAllOfAnyValues:NumericGreaterThanEquals ForAllOfAnyValues:NumericLessThan ForAllOfAnyValues:NumericLessThanEquals |
Deskripsi | Jika setiap nilai di sisi kiri memenuhi perbandingan dengan setidaknya satu nilai di sisi kanan, maka ekspresi dievaluasi sebagai benar. Memiliki format: ForAllOfAnyValues:<BooleanFunction> . Mendukung banyak string dan angka. |
Contoh | @Request[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>] ForAllOfAnyValues:StringEquals {'Cascade', 'Baker', 'Skagit'} {'red', 'blue'} ForAllOfAnyValues:StringEquals {'orange', 'red', 'blue'} TRUE {'red', 'blue'} ForAllOfAnyValues:StringEquals {'red', 'green'} salah |
ForAnyOfAllValues
Properti | Nilai |
---|---|
Operator | ForAnyOfAllValues:StringEquals ForAnyOfAllValues:StringEqualsIgnoreCase ForAnyOfAllValues:StringNotEquals ForAnyOfAllValues:StringNotEqualsIgnoreCase ForAnyOfAllValues:StringLike ForAnyOfAllValues:StringLikeIgnoreCase ForAnyOfAllValues:StringNotLike ForAnyOfAllValues:StringNotLikeIgnoreCase ForAnyOfAllValues:NumericEquals ForAnyOfAllValues:NumericNotEquals ForAnyOfAllValues:NumericGreaterThan ForAnyOfAllValues:NumericGreaterThanEquals ForAnyOfAllValues:NumericLessThan ForAnyOfAllValues:NumericLessThanEquals |
Deskripsi | Jika setidaknya satu nilai di sisi kiri memenuhi perbandingan dengan setiap nilai di sisi kanan, maka ekspresi dievaluasi sebagai benar. Memiliki format: ForAnyOfAllValues:<BooleanFunction> . Mendukung banyak string dan angka. |
Contoh | {10, 20} ForAnyOfAllValues:NumericLessThan {15, 18} TRUE |
ForAllOfAllValues
Properti | Nilai |
---|---|
Operator | ForAllOfAllValues:StringEquals ForAllOfAllValues:StringEqualsIgnoreCase ForAllOfAllValues:StringNotEquals ForAllOfAllValues:StringNotEqualsIgnoreCase ForAllOfAllValues:StringLike ForAllOfAllValues:StringLikeIgnoreCase ForAllOfAllValues:StringNotLike ForAllOfAllValues:StringNotLikeIgnoreCase ForAllOfAllValues:NumericEquals ForAllOfAllValues:NumericNotEquals ForAllOfAllValues:NumericGreaterThan ForAllOfAllValues:NumericGreaterThanEquals ForAllOfAllValues:NumericLessThan ForAllOfAllValues:NumericLessThanEquals |
Deskripsi | Jika setiap nilai di sisi kiri memenuhi perbandingan dengan setiap nilai di sisi kanan, maka ekspresi dievaluasi sebagai benar. Memiliki format: ForAllOfAllValues:<BooleanFunction> . Mendukung banyak string dan angka. |
Contoh | {10, 20} ForAllOfAllValues:NumericLessThan {5, 15, 18} salah {10, 20} ForAllOfAllValues:NumericLessThan {25, 30} TRUE {10, 20} ForAllOfAllValues:NumericLessThan {15, 25, 30} salah |
Karakter khusus
Karakter | Deskripsi |
---|---|
* |
Tanda bintang (*) menunjukkan kecocokan kartubebas multi karakter yang dapat digunakan dengan operator Like . Jika perlu, Anda dapat menghindari tanda bintang dengan menambahkan garis miring terbalik \* . |
? |
Tanda tanya (?) mewakili kecocokan kartubebas karakter tunggal yang dapat digunakan dengan operator Like . Jika perlu, Anda dapat menghindari tanda tanya dengan menambahkan garis miring terbalik \? . |
$ |
Tanda dolar ($) digunakan untuk membantu menggambarkan kunci tag. Dalam Azure PowerShell, jika string yang diapit tanda kutip ganda (") menyertakan tanda dolar, Anda harus mengawalinya dengan backtick ('). Misalnya: tags:Project<`$key_case_sensitive`$> . |
Pengelompokan dan prioritas
Jika Anda memiliki tiga ekspresi atau lebih untuk tindakan yang ditargetkan dengan operator yang berbeda di antara ekspresi, urutan evaluasinya ambigu. Anda menggunakan tanda kurung ()
untuk mengelompokkan ekspresi dan menentukan urutan ekspresi dievaluasi. Ekspresi yang diapit tanda kurung memiliki prioritas yang lebih tinggi. Misalnya, jika Anda memiliki ekspresi berikut:
a AND b OR c
Anda harus menambahkan tanda kurung dengan salah satu cara berikut:
(a AND b) OR c
a AND (b OR c)