AWS Elemen kebijakan JSON: 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 Elemen kebijakan JSON: NotPrincipal

Anda dapat menggunakan NotPrincipal elemen untuk menolak akses ke semua prinsipal kecuali pengguna IAM, pengguna federasi, peran IAM,, AWS layanan Akun AWS, atau prinsip lain yang ditentukan dalam elemen. NotPrincipal

Anda dapat menggunakannya dalam kebijakan berbasis sumber daya untuk beberapa layanan AWS , termasuk titik akhir VPC. Kebijakan berbasis sumber daya adalah kebijakan yang diterapkan langsung ke sumber daya. Anda tidak dapat menggunakan NotPrincipal elemen dalam kebijakan berbasis identitas IAM atau dalam kebijakan kepercayaan peran IAM.

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 kondisi ARN sebagai gantinya. Untuk informasi selengkapnya, lihat Semua kepala sekolah.

Menentukan dengan NotPrincipalDeny

Saat Anda menggunakan NotPrincipal dengan Deny, Anda juga harus menyebutkan ARN akun dari prinsipal 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 Anda secara eksplisit untuk menyertakan ARN untuk akun pengguna, atau menyertakan ARN untuk peran dan ARN untuk akun yang berisi peran tersebut.

penting

Jangan gunakan pernyataan kebijakan berbasis sumber daya yang menyertakan elemen NotPrincipal kebijakan dengan Deny efek untuk pengguna IAM atau peran yang memiliki kebijakan batas izin yang dilampirkan. NotPrincipalElemen dengan Deny efek akan selalu menolak prinsip IAM yang memiliki kebijakan batas izin yang dilampirkan, terlepas dari nilai yang ditentukan dalam elemen. NotPrincipal Hal ini menyebabkan beberapa pengguna IAM 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 ARN untuk akun dalam kebijakan Anda. Beberapa layanan memerlukan ARN akun, meskipun ini tidak diperlukan dalam semua kasus. Kebijakan yang sudah ada mana pun tanpa ARN yang diperlukan akan terus bekerja, tetapi kebijakan baru yang mencakup layanan ini harus memenuhi persyaratan ini. IAM tidak melacak layanan ini, dan oleh karena itu merekomendasikan Anda untuk selalu menyertakan akun ARN.

Contoh berikut menunjukkan cara menggunakan NotPrincipal dan "Effect": "Deny" dalam pernyataan kebijakan yang sama dengan efektif.

contoh Contoh pengguna IAM 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 ARN dari pengguna Bob dan Bob milik ()arn:aws:iam::444455556666:root. Akun AWS Jika NotPrincipal elemen hanya berisi ARN Bob, 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 peran IAM 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 ARN dari pengguna peran yang diasumsikan (), peran (cross-account-read-only-perancross-account-audit-app), dan peran yang Akun AWS dimiliki (444455556666). Jika elemen NotPrincipal ini tidak memiliki ARN peran tersebut, efek kebijakan mungkin secara eksplist menolak akses ke peran tersebut. Demikian pula, jika NotPrincipal elemen tersebut kehilangan ARN dari 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 diasumsikan 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.