Izin untuk GetFederationToken - 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 GetFederationToken

GetFederationTokenOperasi ini dipanggil oleh IAM pengguna dan mengembalikan kredensi sementara untuk pengguna tersebut. Operasi ini menggabungkan pengguna. Izin yang diberikan pengguna gabungan ditentukan di salah satu dari dua tempat:

  • Kebijakan sesi diteruskan sebagai parameter GetFederationToken API panggilan. (Ini paling umum.)

  • Kebijakan berbasis sumber daya yang secara jelas menyebutkan pengguna gabungan dalam elemen Principal dari kebijakan tersebut. (Ini lebih jarang terjadi.)

Kebijakan sesi adalah kebijakan lanjutan yang Anda jalankan sebagai parameter saat Anda secara terprogram membuat sebuah sesi sementara. Saat Anda membuat sesi pengguna gabungan dan melalui kebijakan sesi, izin sesi yang dihasilkan adalah pertemuan dari kebijakan berbasis pengguna dan kebijakan sesi. Anda tidak dapat menggunakan kebijakan sesi untuk memberikan lebih banyak izin daripada yang diizinkan oleh kebijakan berbasis identitas dari pengguna yang sedang digabung.

Dalam kebanyakan kasus jika Anda tidak meneruskan kebijakan dengan GetFederationToken API panggilan, kredensil keamanan sementara yang dihasilkan tidak memiliki izin. Namun, kebijakan berbasis sumber daya dapat memberikan izin tambahan untuk sesi tersebut. Anda dapat mengakses sumber daya dengan sebuah kebijakan berbasis sumber daya yang menentukan sesi Anda sebagai prinsipal yang diizinkan.

Gambar berikut ini menunjukkan gambaran visual tentang cara kebijakan berinteraksi untuk menentukan izin bagi kredensial keamanan sementara yang dikembalikan oleh panggilan ke GetFederationToken.

Pengguna IAM Ilustrasi berikut menunjukkan tanda centang untuk menunjukkan bahwa izin sesi adalah persimpangan kebijakan berbasis identitas pengguna dan kebijakan sesi. Izin sesi juga dapat menjadi persimpangan kebijakan berbasis identitas pengguna dan kebijakan berbasis sumber daya.

Contoh: Menetapkan izin menggunakan GetFederationToken

Anda dapat menggunakan GetFederationToken API tindakan dengan berbagai jenis kebijakan. Berikut adalah beberapa contoh.

Kebijakan yang terlampir pada pengguna IAM

Dalam contoh ini, Anda memiliki aplikasi klien berbasis browser yang mengandalkan dua layanan web backend. Satu layanan backend adalah server autentikasi Anda sendiri yang menggunakan identitas sistem Anda sendiri untuk mengautentikasi aplikasi klien. Layanan backend lainnya adalah layanan AWS yang menyediakan beberapa fungsionalitas aplikasi klien. Aplikasi klien diautentikasi oleh server Anda, dan server Anda membuat atau mengambil kebijakan izin yang sesuai. Server Anda kemudian memanggil GetFederationToken API untuk mendapatkan kredensil keamanan sementara, dan mengembalikan kredensil tersebut ke aplikasi klien. Aplikasi klien kemudian dapat membuat permintaan langsung ke AWS layanan dengan kredenal keamanan sementara. Arsitektur ini memungkinkan aplikasi klien untuk membuat AWS permintaan tanpa menyematkan AWS kredensi jangka panjang.

Server otentikasi Anda memanggil GetFederationToken API dengan kredensi keamanan jangka panjang dari pengguna yang IAM bernama. token-app Tetapi kredensi IAM pengguna jangka panjang tetap ada di server Anda dan tidak pernah didistribusikan ke klien. Contoh kebijakan berikut dilampirkan ke token-app IAM pengguna dan menentukan kumpulan izin terluas yang diperlukan oleh pengguna federasi (klien) Anda. Perhatikan bahwa izin sts:GetFederationToken diperlukan bagi layanan autentikasi Anda untuk memperoleh kredensial keamanan sementara bagi pengguna yang digabung.

catatan

AWS menyediakan contoh aplikasi Java untuk melayani tujuan ini, yang dapat Anda unduh di sini: Mesin Penjual Token untuk Pendaftaran Identitas - Contoh Aplikasi Web Java.

contoh Contoh kebijakan yang dilampirkan ke IAM pengguna token-app yang memanggil GetFederationToken
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:GetFederationToken", "Resource": "*" }, { "Effect": "Allow", "Action": "dynamodb:ListTables", "Resource": "*" }, { "Effect": "Allow", "Action": "sqs:ReceiveMessage", "Resource": "*" }, { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "*" }, { "Effect": "Allow", "Action": "sns:ListSubscriptions", "Resource": "*" } ] }

Kebijakan sebelumnya memberikan beberapa izin kepada pengguna. IAM Namun, kebijakan ini saja tidak memberikan izin apa pun kepada pengguna gabungan. Jika IAM pengguna ini memanggil GetFederationToken dan tidak meneruskan kebijakan sebagai parameter API panggilan, pengguna federasi yang dihasilkan tidak memiliki izin yang efektif.

Kebijakan sesi diberikan sebagai parameter

Cara paling umum untuk memastikan bahwa pengguna federasi diberi izin yang sesuai adalah dengan meneruskan kebijakan sesi dalam GetFederationToken API panggilan. Memperluas contoh sebelumnya, bayangkan yang GetFederationToken dipanggil dengan kredensil pengguna. IAM token-app Kemudian bayangkan bahwa kebijakan sesi berikut diteruskan sebagai parameter API panggilan. Pengguna federasi yang dihasilkan memiliki izin untuk mencantumkan konten bucket Amazon S3 yang diberi nama. productionapp Pengguna tidak dapat melakukan Amazon S3 GetObjectPutObject, dan DeleteObject tindakan pada item di bucket. productionapp

Pengguna federasi diberi izin ini karena izin adalah persimpangan kebijakan IAM pengguna dan kebijakan sesi yang Anda lewati.

Pengguna federasi tidak dapat melakukan tindakan di AmazonSNS, Amazon, Amazon DynamoDBSQS, atau di bucket S3 apa pun kecuali. productionapp Tindakan ini ditolak meskipun izin tersebut diberikan kepada IAM pengguna yang terkait dengan GetFederationToken panggilan.

contoh Contoh kebijakan sesi diteruskan sebagai parameter GetFederationToken API panggilan
{ "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 berbasis sumber daya

Beberapa AWS sumber daya mendukung kebijakan berbasis sumber daya, dan kebijakan ini menyediakan mekanisme lain untuk memberikan izin langsung kepada pengguna federasi. Hanya beberapa AWS layanan yang mendukung kebijakan berbasis sumber daya. Misalnya, Amazon S3 memiliki bucket, Amazon memiliki topik, dan Amazon SNS SQS memiliki antrian yang dapat Anda lampirkan kebijakannya. Untuk daftar semua layanan yang mendukung kebijakan berbasis sumber daya, lihat AWS layanan yang bekerja dengan IAM dan tinjau kolom “Kebijakan berbasis Sumber Daya” pada tabel. Anda dapat menggunakan kebijakan berbasis sumber daya untuk menetapkan izin secara langsung kepada pengguna gabungan. Lakukan ini dengan menentukan Amazon Resource Name (ARN) pengguna federasi dalam Principal elemen kebijakan berbasis sumber daya. Contoh berikut menggambarkan hal ini dan memperluas contoh sebelumnya, menggunakan bucket S3 bernama productionapp.

Kebijakan berbasis sumber daya berikut ini terlampir di bucket. Kebijakan bucket ini mengijinkan pengguna gabungan bernama Carol untuk mengakses bucket. Ketika kebijakan contoh yang dijelaskan sebelumnya dilampirkan ke token-app IAM pengguna, pengguna federasi bernama Carol memiliki izin untuk melakukans3:GetObject,s3:PutObject, dan s3:DeleteObject tindakan pada bucket bernama. productionapp Ini benar bahkan ketika tidak ada kebijakan sesi yang diteruskan sebagai parameter GetFederationToken API panggilan. Itu karena dalam kasus ini pengguna gabungan bernama Carol telah diberikan izin secara jelas oleh kebijakan berbasis sumber daya berikut.

Ingat, pengguna federasi diberikan izin hanya jika izin tersebut secara eksplisit diberikan kepada pengguna dan IAM pengguna federasi. Mereka juga dapat diberikan (dalam akun) oleh kebijakan berbasis sumber daya yang secara eksplisit menyebutkan nama pengguna federasi dalam Principal elemen kebijakan, seperti pada contoh berikut.

contoh Contoh kebijakan bucket yang mengijinkan akses ke pengguna gabungan
{ "Version": "2012-10-17", "Statement": { "Principal": {"AWS": "arn:aws:sts::account-id:federated-user/Carol"}, "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": ["arn:aws:s3:::productionapp/*"] } }

Untuk informasi selengkapnya tentang bagaimana kebijakan dievaluasi, lihat Logika evaluasi kebijakan.