Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
AWS JSONelemen kebijakan: NotPrincipal
Anda dapat menggunakan NotPrincipal
elemen untuk menolak akses ke semua prinsipal kecuali IAM pengguna, pengguna federasi, IAM peran,, AWS layanan Akun AWS, atau prinsip lain yang ditentukan dalam elemen. NotPrincipal
Anda dapat menggunakannya dalam kebijakan berbasis sumber daya untuk beberapa AWS layanan, termasuk titik akhir. VPC Kebijakan berbasis sumber daya adalah kebijakan yang diterapkan langsung ke sumber daya. Anda tidak dapat menggunakan NotPrincipal
elemen dalam kebijakan IAM berbasis identitas atau dalam kebijakan kepercayaan IAM peran.
NotPrincipal
harus digunakan dengan"Effect":"Deny"
. Menggunakannya "Effect":"Allow"
dengan tidak didukung.
penting
Sangat sedikit skenario yang membutuhkan penggunaanNotPrincipal
. Kami menyarankan Anda menjelajahi opsi otorisasi lain sebelum Anda memutuskan untuk menggunakannyaNotPrincipal
. Saat Anda menggunakanNotPrincipal
, pemecahan masalah efek dari beberapa jenis kebijakan bisa jadi sulit. Sebaiknya gunakan kunci aws:PrincipalArn
konteks dengan operator ARN kondisi sebagai gantinya. Untuk informasi selengkapnya, lihat Semua kepala sekolah.
Menentukan dengan NotPrincipal
Deny
Saat Anda menggunakannya NotPrincipal
Deny
, Anda juga harus menentukan akun prinsipal ARN yang tidak ditolak. Jika tidak, kebijakan ini dapat menolak akses ke seluruh akun yang berisi prinsipal. Bergantung pada layanan yang Anda sertakan dalam kebijakan Anda, AWS dapat memvalidasi akun terlebih dahulu, lalu pengguna. Jika pengguna peran yang diasumsikan (seseorang yang menggunakan peran) sedang dievaluasi, AWS mungkin memvalidasi akun terlebih dahulu, kemudian peran, dan kemudian pengguna peran yang dianggap. Pengguna peran yang diasumsikan diidentifikasi oleh nama sesi peran yang ditentukan saat mereka mengasumsikan peran. Oleh karena itu, kami sangat menyarankan agar Anda secara eksplisit menyertakan akun ARN untuk pengguna, atau menyertakan peran ARN untuk dan ARN untuk akun yang berisi peran tersebut.
penting
Jangan gunakan pernyataan kebijakan berbasis sumber daya yang menyertakan elemen NotPrincipal
kebijakan dengan Deny
efek bagi IAM pengguna atau peran yang memiliki kebijakan batas izin yang dilampirkan. NotPrincipal
Elemen dengan Deny
efek akan selalu menolak IAM prinsip apa pun yang memiliki kebijakan batas izin yang dilampirkan, terlepas dari nilai yang ditentukan dalam elemen. NotPrincipal
Hal ini menyebabkan beberapa IAM pengguna atau peran yang seharusnya memiliki akses ke sumber daya kehilangan akses. Sebaiknya ubah pernyataan kebijakan berbasis sumber daya Anda untuk menggunakan operator kondisi ArnNotEqualsdengan kunci aws:PrincipalArnkonteks untuk membatasi akses, bukan elemen. NotPrincipal
Untuk informasi tentang batas izin, lihatBatas izin untuk entitas IAM.
catatan
Sebagai praktik terbaik, Anda harus memasukkan ARNs untuk akun dalam kebijakan Anda. Beberapa layanan memerlukan akunARN, meskipun ini tidak diperlukan dalam semua kasus. Setiap kebijakan yang ada tanpa persyaratan ARN akan terus berfungsi, tetapi kebijakan baru yang mencakup layanan ini harus memenuhi persyaratan ini. IAMtidak melacak layanan ini, dan karena itu merekomendasikan agar Anda selalu menyertakan akunARN.
Contoh berikut menunjukkan cara menggunakan NotPrincipal
dan "Effect":
"Deny"
dalam pernyataan kebijakan yang sama dengan efektif.
contoh Contoh IAM pengguna di akun yang sama atau berbeda
Dalam contoh berikut, semua prinsipal kecuali pengguna bernama Bob di Akun AWS 444455556666 secara eksplisit ditolak akses ke sumber daya. Perhatikan bahwa sebagai praktik terbaik, NotPrincipal
elemen berisi pengguna Bob dan Bob milik (arn:aws:iam::444455556666:root
). ARN Akun AWS Jika NotPrincipal
elemen hanya berisi BobARN, efek kebijakan mungkin secara eksplisit menolak akses ke Akun AWS yang berisi pengguna Bob. Dalam beberapa kasus, pengguna tidak dapat memiliki izin lebih banyak daripada akun induknya, jadi jika akun Bob secara eksplisit ditolak maka Bob mungkin tidak dapat mengakses sumber daya tersebut.
Contoh ini berfungsi sebagaimana dimaksud ketika merupakan bagian dari pernyataan kebijakan dalam kebijakan berbasis sumber daya yang dilampirkan ke sumber daya yang sama atau berbeda Akun AWS (bukan 444455556666). Contoh ini tidak memberikan akses kepada Bob, namun hanya menghapus Bob dari daftar prinsipal yang secara eksplisit ditolak. Agar Bob dapat mengakses sumber daya, pernyataan kebijakan lainnya harus secara eksplisit mengizinkan akses menggunakan "Effect":
"Allow"
.
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Deny", "NotPrincipal": {"AWS": [ "arn:aws:iam::444455556666:user/Bob", "arn:aws:iam::444455556666:root" ]}, "Action": "s3:*", "Resource": [ "arn:aws:s3:::BUCKETNAME", "arn:aws:s3:::BUCKETNAME/*" ] }] }
contoh Contoh IAM peran dalam akun yang sama atau berbeda
Dalam contoh berikut, semua prinsipal kecuali pengguna peran yang dianggap bernama Akun AWS 444455556666 secara eksplisit ditolak akses ke cross-account-audit-app sumber daya. Sebagai praktik terbaik, NotPrincipal
elemen berisi pengguna peran yang ARN diasumsikan (), peran (cross-account-read-only-perancross-account-audit-app), dan peran yang dimiliki ( Akun AWS 444455556666). Jika NotPrincipal
elemen kehilangan peran, efek kebijakan mungkin secara eksplisit menolak akses ke peran tersebut. ARN Demikian pula, jika NotPrincipal
elemen tersebut ARN kehilangan peran Akun AWS
tersebut, efek dari kebijakan tersebut mungkin secara eksplisit menolak akses ke Akun AWS dan semua entitas dalam akun itu. Dalam beberapa kasus, pengguna peran yang dianggap tidak dapat memiliki izin lebih dari peran induknya, dan peran tidak dapat memiliki izin lebih dari induknya Akun AWS, jadi ketika peran atau akun secara eksplisit ditolak aksesnya, pengguna peran yang diasumsikan mungkin tidak dapat mengakses sumber daya.
Contoh ini berfungsi sebagaimana dimaksud ketika merupakan bagian dari pernyataan kebijakan dalam kebijakan berbasis sumber daya yang dilampirkan ke sumber daya yang berbeda Akun AWS (bukan 444455556666). Contoh ini dengan sendirinya tidak mengizinkan akses ke pengguna peran yang diasumsikan cross-account-audit-app, itu hanya menghilangkan cross-account-audit-app dari daftar kepala sekolah yang secara eksplisit ditolak. Untuk memberikan cross-account-audit-app akses ke sumber daya, pernyataan kebijakan lain harus secara eksplisit mengizinkan penggunaan akses. "Effect":
"Allow"
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Deny", "NotPrincipal": {"AWS": [ "arn:aws:sts::444455556666:assumed-role/cross-account-read-only-role/cross-account-audit-app", "arn:aws:iam::444455556666:role/cross-account-read-only-role", "arn:aws:iam::444455556666:root" ]}, "Action": "s3:*", "Resource": [ "arn:aws:s3:::Bucket_AccountAudit", "arn:aws:s3:::Bucket_AccountAudit/*" ] }] }
Saat Anda menentukan sesi peran yang diasumsikan di elemen NotPrincipal
, Anda tidak dapat menggunakan wildcard (*) yang berarti “semua sesi”. Prinsipal harus selalu menamai sesi tertentu.