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

Operasi GetFederationToken dipanggil oleh pengguna IAM dan mengembalikan kredensial sementara untuk pengguna tersebut. Operasi ini menggabungkan pengguna. Izin yang ditetapkan untuk sesi pengguna AWS STS federasi didefinisikan di salah satu dari dua tempat:

  • Kebijakan sesi lewat sebagai sebuah parameter dari Panggilan API GetFederationToken. (Ini paling umum.)

  • Kebijakan berbasis sumber daya yang secara eksplisit menamai sesi pengguna AWS STS federasi dalam elemen kebijakan. Principal (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 AWS STS gabungan dan meneruskan kebijakan sesi, izin sesi yang dihasilkan adalah persimpangan kebijakan berbasis identitas 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 memberikan kebijakan dengan panggilan API GetFederationToken, kredensial 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 tindakan API GetFederationToken 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 API GetFederationToken untuk mendapatkan kredensial keamanan sementara, dan mengembalikan kredensial 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 IAM bernama. token-app Tetapi kredensi pengguna IAM jangka panjang tetap ada di server Anda dan tidak pernah didistribusikan ke klien. Contoh kebijakan berikut dilampirkan ke pengguna token-app IAM dan menentukan kumpulan izin terluas yang diperlukan oleh pengguna AWS STS federasi (klien) Anda. Perhatikan bahwa sts:GetFederationToken izin diperlukan untuk layanan otentikasi Anda untuk mendapatkan kredenial keamanan sementara bagi pengguna federasi AWS STS .

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 terlampir ke pengguna IAM token-app yang memanggil GetFederationToken
JSON
{ "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 AWS STS federasi. Jika pengguna IAM ini memanggil GetFederationToken dan tidak meneruskan kebijakan sebagai parameter panggilan API, pengguna AWS STS federasi yang dihasilkan tidak memiliki izin yang efektif.

Kebijakan sesi diberikan sebagai parameter

Cara paling umum untuk memastikan bahwa pengguna AWS STS federasi diberi izin yang sesuai adalah dengan meneruskan kebijakan sesi dalam panggilan GetFederationToken API. Memperluas contoh sebelumnya, bayangkan yang GetFederationToken dipanggil dengan kredensi pengguna IAM. token-app Bayangkan sesi kebijakan berikut ini diberikan sebagai parameter panggilan API. Pengguna AWS STS 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 gabungan diberi izin ini karena izin tersebut merupakan pertemuan antara kebijakan pengguna IAM dan kebijakan sesi yang Anda lewati.

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

contoh Contoh kebijakan sesi lewat sebagai sebuah parameter dari Panggilan API GetFederationToken.
JSON
{ "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. AWS STS Hanya beberapa AWS layanan yang mendukung kebijakan berbasis sumber daya. Misalnya, Amazon S3 memiliki bucket, Amazon SNS memiliki topik, dan Amazon SQS memiliki antrean 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 langsung ke pengguna federasi. AWS STS Lakukan ini dengan menentukan Nama Sumber Daya Amazon (ARN) pengguna AWS STS 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 memungkinkan pengguna AWS STS federasi bernama Carol untuk mengakses bucket. Ketika kebijakan contoh yang dijelaskan sebelumnya dilampirkan ke pengguna token-app IAM, pengguna AWS STS federasi bernama Carol memiliki izin untuk melakukans3:GetObject,s3:PutObject, dan s3:DeleteObject tindakan pada bucket bernama. productionapp Hal ini berlaku bahkan ketika kebijakan sesi tidak diberikan sebagai parameter panggilan API GetFederationToken. Itu karena dalam kasus ini pengguna AWS STS federasi bernama Carol telah secara eksplisit diberikan izin oleh kebijakan berbasis sumber daya berikut.

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

contoh Contoh kebijakan bucket yang mengijinkan akses ke pengguna gabungan
JSON
{ "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.