AWS JSONelemen kebijakan: NotPrincipal - AWS Identity and Access Management

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.

NotPrincipalharus 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 NotPrincipalDeny

Saat Anda menggunakannya NotPrincipalDeny, 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. NotPrincipalElemen 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.