Menggunakan kontrol akses berbasis peran - Amazon Cognito

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_roleKlaim adalah peranARN.

  • cognito:rolesKlaim 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 GetCredentialsForIdentityCustomRoleArnparameter jika disetel dan cocok dengan peran dalam cognito: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 tidak CustomRoleArn ditentukan dalam panggilan keGetCredentialsForIdentity, maka pengaturan resolusi Peran di konsol atau AmbiguousRoleResolution bidang (dalam RoleMappings 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. Terlepas dari klaim standar, berikut ini adalah klaim tambahan khusus untuk Amazon Cognito:

  • 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

Facebook

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

Google

Token Google berisi klaim standar dari Spesifikasi OpenID Connect. Semua klaim dalam token OpenID tersedia untuk pemetaan berbasis aturan. Lihat situs OpenID Connect Google untuk mempelajari klaim yang tersedia dari token Google.

Apel

Token Apple berisi klaim standar dari Spesifikasi OpenID Connect. Lihat Mengautentikasi Pengguna dengan Masuk melalui Apple dalam dokumentasi Apple untuk belajar lebih lanjut tentang klaim yang tersedia dari token Apple. Token Apple tidak selalu berisi email.

OpenID

Semua klaim dalam token Id Terbuka tersedia untuk pemetaan berbasis aturan. Untuk informasi selengkapnya tentang klaim standar, lihat Spesifikasi OpenID Connect. Lihat dokumentasi penyedia OpenID Anda untuk mempelajari klaim tambahan yang tersedia.

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.