Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Izin untuk GetFederationToken
GetFederationToken
Operasi 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
.
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 GetObject
PutObject
, 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.