Izin untuk AssumeRole, AssumeRoleWith SALL, dan AssumeRoleWithWebIdentity - 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.

Izin untuk AssumeRole, AssumeRoleWith SALL, dan AssumeRoleWithWebIdentity

Kebijakan izin dari peran yang sedang diasumsikan menentukan izin untuk kredensial keamanan sementara yang dikembalikan oleh AssumeRole, AssumeRoleWithSAML, dan AssumeRoleWithWebIdentity. Anda menentukan izin ini saat membuat atau memperbarui peran.

Atau, Anda dapat meneruskan kebijakan sesi inline atau terkelola sebagai parameter Operasi API AssumeRole, AssumeRoleWithSAML, atau AssumeRoleWithWebIdentity. Kebijakan sesi membatasi izin untuk sesi kredensial sementara peran tersebut. Izin sesi yang dihasilkan adalah titik pertemuan antara kebijakan berbasis identitas peran dan kebijakan sesi. Anda dapat menggunakan kredensi sementara peran dalam panggilan AWS API berikutnya untuk mengakses sumber daya di akun yang memiliki peran tersebut. Anda tidak dapat menggunakan kebijakan sesi untuk memberikan lebih banyak izin daripada yang diizinkan oleh kebijakan berbasis identitas dari peran yang sedang diasumsikan. Untuk mempelajari lebih lanjut tentang bagaimana AWS menentukan izin yang efektif dari suatu peran, lihat Logika evaluasi kebijakan.

PermissionsWhenPassingRoles_Diagram

Kebijakan yang dilampirkan pada kredensil yang membuat panggilan asli tidak AssumeRole dievaluasi oleh AWS saat membuat keputusan otorisasi “izinkan” atau “tolak”. Pengguna untuk sementara menyerahkan izin asli yang mendukung izin yang ditetapkan oleh peran yang diasumsikan. Dalam kasus operasi AssumeRoleWithSAML dan AssumeRoleWithWebIdentity API, tidak ada kebijakan untuk dievaluasi karena pemanggil API bukan AWS identitas.

Contoh: Menetapkan izin menggunakan AssumeRole

Anda dapat menggunakan Operasi API AssumeRole dengan berbagai jenis kebijakan. Berikut adalah beberapa contoh.

Kebijakan izin peran

Dalam contoh ini, Anda memanggil operasi API AssumeRole tanpa menetapkan kebijakan sesi pada opsional parameter Policy. Izin yang diberikan untuk kredensial sementara ditentukan oleh kebijakan izin dari peran yang diasumsikan. Contoh kebijakan izin berikut memberikan izin peran untuk mencantumkan semua objek yang terkandung dalam bucket S3 dengan nama productionapp. Hal ini juga memungkinkan peran untuk mendapatkan, menempatkan, dan menghapus objek dalam bucket itu.

contoh Contoh kebijakan izin peran
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::productionapp" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": "arn:aws:s3:::productionapp/*" } ] }

Kebijakan sesi diberikan sebagai parameter

Bayangkan Anda ingin mengizinkan pengguna untuk mengambil peran yang sama seperti dalam contoh sebelumnya. Tetapi dalam hal ini Anda ingin sesi peran hanya memiliki izin untuk mendapatkan dan memasukkan objek ke dalam bucket S3 productionapp. Anda tidak ingin mengizinkan mereka untuk menghapus objek. Salah satu cara untuk mencapainya adalah dengan membuat peran baru dan menentukan izin yang diinginkan dalam kebijakan izin peran tersebut. Cara lain untuk mencapai ini adalah dengan memanggil API AssumeRole dan menyertakan kebijakan sesi dalam opsional parameter Policy sebagai bagian dari operasi API. Izin sesi yang dihasilkan adalah titik pertemuan antara kebijakan berbasis identitas peran dan kebijakan sesi. Kebijakan sesi tidak dapat digunakan untuk memberikan lebih banyak izin daripada yang diizinkan oleh kebijakan berbasis identitas dari peran yang sedang diasumsikan. Untuk informasi lebih lanjut tentang izin sesi peran, lihat Kebijakan sesi.

Setelah Anda menerima kredensial sementara sesi baru, Anda dapat memberikannya kepada pengguna yang Anda ingin untuk memiliki izin tersebut.

Misalnya, bayangkan kebijakan berikut ini diberikan sebagai parameter panggilan API. Orang yang menggunakan sesi memiliki izin untuk hanya melakukan tindakan berikut:

  • Mencantumkan semua objek ke dalam bucket productionapp.

  • Mendapatkan dan memasukkan objek ke dalam bucket productionapp.

Dalam kebijakan sesi berikut, izin s3:DeleteObject difilter dan sesi yang diasumsikan tidak diberikan izin s3:DeleteObject. Kebijakan menetapkan izin maksimum untuk sesi peran sehingga menggantikan kebijakan izin yang ada pada peran tersebut.

contoh Contoh kebijakan sesi melewati Panggilan API AssumeRole
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::productionapp" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::productionapp/*" } ] }

Kebijakan berbasis sumber daya

Beberapa AWS sumber daya mendukung kebijakan berbasis sumber daya, dan kebijakan ini menyediakan mekanisme lain untuk menentukan izin yang memengaruhi kredensi keamanan sementara. Hanya beberapa sumber daya, seperti bucket Amazon S3, topik Amazon SNS, dan antrean Amazon SQS mendukung kebijakan berbasis sumber daya. Contoh berikut memperluas contoh sebelumnya, menggunakan bucket S3 bernama productionapp. Kebijakan berikut ini terlampir di bucket.

Ketika Anda melampirkan kebijakan berbasis sumber daya berikut ini ke bucket productionapp, semua pengguna tidak diberi izin untuk menghapus objek dari bucket. (Lihat elemen Principal dalam kebijakan.) Ini termasuk semua pengguna peran yang diasumsikan, meskipun kebijakan izin peran memberikan izin DeleteObject. Sebuah pernyataan Deny yang jelas selalu lebih diutamakan daripada pernyataan Allow.

contoh Contoh kebijakan bucket
{ "Version": "2012-10-17", "Statement": { "Principal": {"AWS": "*"}, "Effect": "Deny", "Action": "s3:DeleteObject", "Resource": "arn:aws:s3:::productionapp/*" } }

Untuk informasi selengkapnya tentang bagaimana beberapa jenis kebijakan digabungkan dan dievaluasi oleh AWS, lihatLogika evaluasi kebijakan.