Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan kontrol akses berbasis peran
Kumpulan identitas Amazon Cognito menetapkan pengguna Anda yang diautentikasi satu set kredensil hak istimewa terbatas sementara untuk mengakses sumber daya Anda. AWS Izin untuk setiap pengguna dikontrol melalui IAMperan yang Anda buat. Anda dapat menentukan aturan untuk memilih peran bagi setiap pengguna berdasarkan klaim di token ID pengguna. Anda dapat menentukan peran default untuk pengguna terautentikasi. Anda juga dapat menentukan IAM peran terpisah dengan izin terbatas untuk pengguna tamu yang tidak diautentikasi.
Membuat peran untuk pemetaan peran
Penting untuk menambahkan kebijakan kepercayaan yang tepat untuk setiap peran sehingga peran tersebut hanya dapat diasumsikan oleh Amazon Cognito untuk pengguna terautentikasi dalam kolam identitas Anda. Berikut adalah contoh kebijakan kepercayaan tersebut:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Federated": "cognito-identity.amazonaws.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "us-east-1:12345678-corner-cafe-123456790ab" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "authenticated" } } } ] }
Kebijakan ini mengizinkan pengguna gabungan dari cognito-identity.amazonaws.com
(penerbit token OpenID Connect) untuk mengambil peran ini. Selain itu, kebijakan membatasi aud
pada token, dalam hal ini ID kolam identitas, untuk mencocokkan kolam identitas tersebut. Terakhir, kebijakan menetapkan bahwa salah satu anggota array dari amr
klaim multi-nilai token yang dikeluarkan oleh tindakan Amazon GetOpenIdToken
API Cognito memiliki nilai. authenticated
Memberikan izin peran masuk
Untuk memungkinkan pengguna menyetel peran dengan izin melebihi izin pengguna yang ada di kumpulan identitas, beri mereka iam:PassRole
izin untuk meneruskan peran tersebut ke. set-identity-pool-roles
API Misalnya, jika pengguna tidak dapat menulis ke Amazon S3, tetapi IAM peran yang ditetapkan pengguna pada kumpulan identitas memberikan izin menulis ke Amazon S3, pengguna hanya dapat menyetel peran ini jika iam:PassRole
izin diberikan untuk peran tersebut. Contoh kebijakan berikut menunjukkan cara memberikan izin iam:PassRole
.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::123456789012:role/myS3WriteAccessRole" ] } ] }
Dalam contoh kebijakan ini, izin iam:PassRole
diberikan untuk peran myS3WriteAccessRole
. Peran ditentukan menggunakan Amazon Resource Name (ARN) peran. Anda juga harus melampirkan kebijakan ini kepada pengguna Anda. Untuk informasi lebih lanjut, lihat Bekerja dengan Kebijakan Terkelola.
catatan
Fungsi Lambda menggunakan kebijakan berbasis sumber daya, dan kebijakan tersebut melekat langsung ke fungsi Lambda itu sendiri. Saat membuat aturan yang memanggil fungsi Lambda, Anda tidak lulus peran, sehingga pengguna yang membuat aturan tidak memerlukan izin iam:PassRole
. Untuk informasi selengkapnya tentang otorisasi fungsi Lambda, lihat Kelola Izin: Menggunakan Kebijakan Fungsi Lambda.
Menggunakan token untuk menetapkan peran kepada pengguna
Untuk pengguna yang masuk melalui kolam pengguna Amazon Cognito, peran dapat dilewatkan di token ID yang ditetapkan oleh kolam pengguna. Peran muncul dalam klaim berikut di token ID:
-
cognito:preferred_role
Klaim adalah peranARN. -
cognito:roles
Klaim adalah string yang dipisahkan koma yang berisi serangkaian peran yang diizinkan. ARNs
Klaim ditetapkan sebagai berikut:
-
Klaim
cognito:preferred_role
diatur untuk peran dari grup dengan nilai yang terbaik (terendah)Precedence
. Jika hanya ada satu peran diizinkan,cognito:preferred_role
diatur ke peran itu. Jika ada beberapa peran dan tidak ada peran tunggal yang memiliki contoh terbaik, klaim ini tidak ditetapkan. -
Klaim
cognito:roles
ditetapkan jika ada setidaknya satu peran.
Saat menggunakan token untuk menetapkan peran, jika ada beberapa peran yang dapat ditetapkan ke pengguna, kolam identitas Amazon Cognito (identitas gabungan) memilih peran sebagai berikut:
-
Gunakan GetCredentialsForIdentity
CustomRoleArn
parameter jika disetel dan cocok dengan peran dalamcognito:roles
klaim. Jika parameter ini tidak cocok dengan peran dicognito:roles
, tolak akses. -
Jika klaim
cognito:preferred_role
ditetapkan, gunakan klaim tersebut. -
Jika
cognito:preferred_role
klaim tidak disetel,cognito:roles
klaim ditetapkan, dan tidakCustomRoleArn
ditentukan dalam panggilan keGetCredentialsForIdentity
, maka pengaturan resolusi Peran di konsol atauAmbiguousRoleResolution
bidang (dalamRoleMappings
parameter SetIdentityPoolRolesAPI) digunakan untuk menentukan peran yang akan ditetapkan.
Menggunakan pemetaan berbasis aturan untuk menetapkan peran kepada pengguna
Aturan memungkinkan Anda memetakan klaim dari token penyedia identitas ke IAM peran.
Setiap aturan menentukan klaim token (seperti atribut pengguna dalam token ID dari kumpulan pengguna Amazon Cognito), jenis pencocokan, nilai, dan IAM peran. Jenis pertandingan dapat Equals
, NotEqual
, StartsWith
, atau Contains
. Jika pengguna memiliki nilai yang cocok untuk klaim, pengguna dapat mengambil peran itu ketika mendapatkan kredensialnya. Misalnya, Anda dapat membuat aturan yang menetapkan IAM peran tertentu untuk pengguna dengan nilai atribut custom:dept
kustom. Sales
catatan
Dalam setelan aturan, atribut khusus memerlukan prefiks custom:
untuk membedakannya dari atribut standar.
Aturan dievaluasi secara berurutan, dan IAM peran untuk aturan pencocokan pertama digunakan, kecuali CustomRoleArn
ditentukan untuk mengganti urutan. Untuk informasi selengkapnya tentang atribut pengguna di kolam pengguna Amazon Cognito, lihat Bekerja dengan atribut pengguna.
Anda dapat menetapkan beberapa aturan untuk penyedia autentikasi di konsol kolam identitas (identitas gabungan). Aturan diterapkan secara berurutan. Anda dapat menyeret aturan untuk mengubah urutannya. Aturan pencocokan pertama diutamakan. Jika jenis kecocokan adalah NotEqual
dan klaim tidak ada, aturan tidak dievaluasi. Jika tidak ada aturan yang cocok, setelan resolusi Peran diterapkan ke salah satu Gunakan peran default yang diautentikasi atau permintaan Tolak.
Di API danCLI, Anda dapat menentukan peran yang akan ditetapkan ketika tidak ada aturan yang cocok di AmbiguousRoleResolution
bidang RoleMappingjenis, yang ditentukan dalam RoleMappings
parameter SetIdentityPoolRolesAPI.
Untuk menambahkan pemetaan berbasis aturan ke penyedia identitas di konsol Amazon Cognito, tambahkan atau perbarui iDP dan pilih Pilih peran dengan aturan di bawah Pemilihan peran. Dari sana, Anda dapat menambahkan aturan yang diklaim oleh penyedia peta ke IAM peran.
Anda dapat mengatur pemetaan berbasis aturan untuk penyedia identitas di AWS CLI atau API dengan RulesConfiguration
bidang jenisnya. RoleMapping Anda dapat menentukan bidang ini dalam RoleMappings
parameter file SetIdentityPoolRolesAPI.
Misalnya, AWS CLI perintah berikut menambahkan aturan yang menetapkan peran arn:aws:iam::123456789012:role/Sacramento_team_S3_admin
kepada pengguna di lokasi Sacramento Anda yang diautentikasi oleh iDP: OIDC arn:aws:iam::123456789012:oidc-provider/myOIDCIdP
aws cognito-identity set-identity-pool-roles --region us-east-1 --cli-input-json file://role-mapping.json
Isi dari role-mapping.json
:
{ "IdentityPoolId": "us-east-1:12345678-corner-cafe-123456790ab", "Roles": { "authenticated": "arn:aws:iam::123456789012:role/myS3WriteAccessRole", "unauthenticated": "arn:aws:iam::123456789012:role/myS3ReadAccessRole" }, "RoleMappings": { "arn:aws:iam::123456789012:oidc-provider/myOIDCIdP": { "Type": "Rules", "AmbiguousRoleResolution": "AuthenticatedRole", "RulesConfiguration": { "Rules": [ { "Claim": "locale", "MatchType": "Equals", "Value": "Sacramento", "RoleARN": "arn:aws:iam::123456789012:role/Sacramento_team_S3_admin" } ] } } } }
Untuk setiap kumpulan pengguna atau penyedia otentikasi lain yang Anda konfigurasikan untuk kumpulan identitas, Anda dapat membuat hingga 25 aturan. Batas ini tidak dapat disesuaikan. Untuk informasi selengkapnya, lihat Kuota di Amazon Cognito.
Token mengklaim untuk digunakan dalam pemetaan berbasis aturan
Amazon Cognito
Token ID Amazon Cognito direpresentasikan sebagai Token JSON Web ()JWT. Token berisi klaim tentang identitas pengguna yang terautentikasi, seperti name
, family_name
, dan phone_number
. Untuk informasi selengkapnya tentang klaim standar, lihat Spesifikasi OpenID Connect
-
cognito:groups
-
cognito:roles
-
cognito:preferred_role
Amazon
Klaim berikut, bersama dengan nilai yang mungkin untuk klaim tersebut, dapat digunakan dengan Login with Amazon:
-
iss
: www.amazon.com -
aud
: Identitas Aplikasi -
sub
:sub
dari token Login with Amazon
Klaim berikut, bersama dengan nilai yang mungkin untuk klaim tersebut, dapat digunakan dengan Facebook:
-
iss
: graph.facebook.com -
aud
: Identitas Aplikasi -
sub
:sub
dari token Facebook
Token Google berisi klaim standar dari Spesifikasi OpenID Connect
Apel
Token Apple berisi klaim standar dari Spesifikasi OpenID Connectemail
.
OpenID
Semua klaim dalam token Id Terbuka tersedia untuk pemetaan berbasis aturan. Untuk informasi selengkapnya tentang klaim standar, lihat Spesifikasi OpenID Connect
SAML
Klaim diuraikan dari SAML pernyataan yang diterima. Semua klaim yang tersedia dalam SAML pernyataan dapat digunakan dalam pemetaan berbasis aturan.
Praktik terbaik untuk kontrol akses berbasis peran
penting
Jika klaim bahwa Anda memetakan ke peran dapat diubah oleh pengguna akhir, setiap pengguna akhir dapat mengambil peran Anda dan menetapkan kebijakan yang sesuai. Hanya klaim peta yang tidak dapat secara langsung ditetapkan oleh pengguna akhir ke peran dengan izin yang ditinggikan. Di kolam pengguna Amazon Cognito, Anda dapat mengatur izin baca dan tulis per aplikasi untuk setiap atribut pengguna.
penting
Jika Anda menetapkan peran untuk grup di kolam pengguna Amazon Cognito, peran tersebut akan dilewatkan melalui token ID pengguna. Untuk menggunakan peran ini, Anda juga harus mengatur Pilih peran dari token untuk pemilihan peran terautentikasi untuk kolam identitas.
Anda dapat menggunakan pengaturan Resolusi peran di konsol dan RoleMappings
parameter SetIdentityPoolRolesAPIuntuk menentukan perilaku default ketika peran yang benar tidak dapat ditentukan dari token.