Menggunakan atribut untuk kontrol akses - Amazon Cognito

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan atribut untuk kontrol akses

Atribut untuk kontrol akses adalah implementasi kumpulan identitas Amazon Cognito dari kontrol akses berbasis atribut (). ABAC Anda dapat menggunakan IAM kebijakan untuk mengontrol akses ke AWS sumber daya melalui kumpulan identitas Amazon Cognito berdasarkan atribut pengguna. Atribut ini dapat diambil dari penyedia identitas sosial dan perusahaan. Anda dapat memetakan atribut dalam akses penyedia dan token ID atau SAML pernyataan ke tag yang dapat direferensikan dalam kebijakan izin. IAM

Anda dapat memilih pemetaan default atau membuat pemetaan kustom Anda sendiri di kolam identitas Amazon Cognito. Pemetaan default memungkinkan Anda menulis IAM kebijakan berdasarkan kumpulan atribut pengguna yang tetap. Pemetaan khusus memungkinkan Anda memilih kumpulan atribut pengguna khusus yang direferensikan dalam kebijakan izin. IAM Nama Atribut di konsol Amazon Cognito dipetakan ke kunci Tag untuk prinsipal, yang merupakan tag yang direferensikan dalam kebijakan izin. IAM

Misalnya, katakanlah Anda memiliki layanan streaming media dengan keanggotaan gratis dan berbayar. Anda menyimpan file media di Amazon S3 dan menandai file tersebut dengan tanda gratis atau premium. Anda dapat menggunakan atribut untuk kontrol akses untuk memungkinkan akses ke konten gratis dan berbayar berdasarkan tingkat keanggotaan pengguna, yang merupakan bagian dari profil pengguna. Anda dapat memetakan atribut keanggotaan ke kunci tag agar prinsipal diteruskan ke kebijakan IAM izin. Dengan cara ini Anda dapat membuat kebijakan izin tunggal dan secara kondisional mengizinkan akses ke konten premium berdasarkan nilai tingkat keanggotaan dan tanda pada file konten.

Menggunakan atribut untuk kontrol akses memiliki beberapa manfaat:

  • Manajemen izin lebih efisien ketika Anda menggunakan atribut untuk kontrol akses. Anda dapat membuat kebijakan izin dasar yang menggunakan atribut pengguna bukan menciptakan beberapa kebijakan untuk fungsi pekerjaan yang berbeda.

  • Anda tidak perlu memperbarui kebijakan kapan pun Anda menambahkan atau menghapus sumber daya atau pengguna untuk aplikasi Anda. Kebijakan izin hanya akan memberikan akses ke pengguna dengan atribut pengguna yang cocok. Misalnya, Anda mungkin perlu mengontrol akses ke bucket S3 tertentu berdasarkan judul pekerjaan pengguna. Dalam hal ini, Anda dapat membuat kebijakan izin untuk mengizinkan akses ke file ini hanya untuk pengguna dalam jabatan pekerjaan yang ditentukan. Untuk informasi selengkapnya, lihat IAMTutorial: Menggunakan tag SAML sesi untuk ABAC.

  • Atribut dapat dilewatkan sebagai tanda utama untuk kebijakan yang memungkinkan atau menolak izin berdasarkan nilai-nilai atribut tersebut.

Menggunakan atribut untuk kontrol akses dengan kolam identitas Amazon Cognito

Sebelum Anda dapat menggunakan atribut untuk kontrol akses, pastikan bahwa Anda memenuhi prasyarat berikut:

Untuk menggunakan atribut untuk kontrol akses, Klaim yang Anda tetapkan sebagai sumber data menetapkan nilai Kunci Tag yang Anda pilih. Amazon Cognito menerapkan kunci tag dan nilai ke sesi pengguna Anda. IAMKebijakan Anda dapat mengevaluasi akses pengguna Anda dari ${aws:PrincipalTag/tagkey} kondisi tersebut. IAMmengevaluasi nilai tag pengguna Anda terhadap kebijakan.

Anda harus menyiapkan IAM peran yang kredensialnya ingin Anda berikan kepada pengguna Anda. Kebijakan kepercayaan dari peran ini harus mengizinkan Amazon Cognito untuk mengambil peran bagi pengguna Anda. Untuk atribut untuk kontrol akses, Anda juga harus mengizinkan Amazon Cognito menerapkan tag utama ke sesi sementara pengguna Anda. Berikan izin untuk mengambil peran dengan tindakan tersebut AssumeRoleWithWebIdentity. Berikan izin untuk menandai sesi pengguna dengan tindakan khusus izin. sts:TagSession Untuk informasi selengkapnya, lihat Melewati tag sesi AWS Security Token Service di Panduan AWS Identity and Access Management Pengguna. Untuk contoh kebijakan kepercayaan yang memberikan sts:AssumeRoleWithWebIdentity dan sts:TagSession izin kepada prinsipal layanan cognito-identity.amazonaws.com Amazon Cognito, lihat. Menggunakan atribut untuk contoh kebijakan kontrol akses

Untuk mengkonfigurasi atribut untuk kontrol akses di konsol
  1. Masuk ke konsol Amazon Cognito dan pilih Identity pool. Pilih kumpulan identitas.

  2. Pilih tab Akses pengguna.

  3. Temukan penyedia Identitas. Pilih penyedia identitas yang ingin Anda edit. Jika Anda ingin menambahkan IDP baru, pilih Tambahkan penyedia identitas.

  4. Untuk mengubah tag utama yang ditetapkan Amazon Cognito saat mengeluarkan kredensi kepada pengguna yang telah diautentikasi dengan penyedia ini, pilih Edit di Atribut untuk kontrol akses.

    1. Untuk tidak menerapkan tag utama, pilih Tidak aktif.

    2. Untuk menerapkan tag utama berdasarkan sub dan aud klaim, pilih Gunakan pemetaan default.

    3. Untuk membuat skema atribut kustom Anda sendiri ke tag utama, pilih Gunakan pemetaan khusus. Kemudian masukkan kunci Tag yang ingin Anda sumber dari setiap Klaim yang ingin Anda wakili dalam tag.

  5. Pilih Simpan perubahan.

Menggunakan atribut untuk contoh kebijakan kontrol akses

Pertimbangkan skenario di mana seorang karyawan dari departemen hukum perusahaan perlu membuat daftar semua file dalam bucket milik departemen mereka dan diklasifikasikan dengan tingkat keamanan mereka. Asumsikan token bahwa karyawan ini mendapat dari penyedia identitas berisi klaim berikut.

Klaim

{ . . "sub" : "57e7b692-4f66-480d-98b8-45a6729b4c88", "department" : "legal", "clearance" : "confidential", . . }

Atribut ini dapat dipetakan ke tag dan direferensikan dalam kebijakan IAM izin sebagai tag utama. Anda sekarang dapat mengelola akses dengan mengubah profil pengguna di ujung penyedia identitas. Atau, Anda dapat mengubah atribut pada sisi sumber daya dengan menggunakan nama atau tanda tanpa mengubah kebijakan itu sendiri.

Kebijakan izin berikut melakukan dua hal:

  • Mengizinkan akses daftar ke semua bucket S3 yang diakhiri dengan awalan yang cocok dengan nama departemen pengguna.

  • Mengizinkan akses baca pada file dalam bucket ini selama tanda izin pada file cocok dengan atribut izin pengguna.

Kebijakan izin

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:List*", "Resource": "arn:aws:s3:::*-${aws:PrincipalTag/department}" }, { "Effect": "Allow", "Action": "s3:GetObject*", "Resource": "arn:aws:s3:::*-${aws:PrincipalTag/department}/*", "Condition": { "StringEquals": { "s3:ExistingObjectTag/clearance": "${aws:PrincipalTag/clearance}" } } } ] }

Kebijakan kepercayaan menentukan siapa yang dapat mengambil peran ini. Kebijakan hubungan kepercayaan memungkinkan penggunaan sts:AssumeRoleWithWebIdentity dan sts:TagSession untuk mengizinkan akses. Ini menambahkan kondisi untuk membatasi kebijakan ke kumpulan identitas yang Anda buat dan memastikan bahwa itu untuk peran yang diautentikasi.

Kebijakan kepercayaan

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "cognito-identity.amazonaws.com" }, "Action": [ "sts:AssumeRoleWithWebIdentity", "sts:TagSession" ], "Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "IDENTITY-POOL-ID" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "authenticated" } } } ] }

Matikan atribut untuk kontrol akses (konsol)

Ikuti prosedur ini untuk menonaktifkan atribut untuk kontrol akses.

Untuk menonaktifkan atribut untuk kontrol akses di konsol
  1. Masuk ke konsol Amazon Cognito dan pilih Identity pool. Pilih kumpulan identitas.

  2. Pilih tab Akses pengguna.

  3. Temukan penyedia Identitas. Pilih penyedia identitas yang ingin Anda edit.

  4. Pilih Edit di Atribut untuk kontrol akses.

  5. Untuk tidak menerapkan tag utama, pilih Tidak aktif.

  6. Pilih Simpan perubahan.

Pemetaan penyedia default

Tabel berikut memiliki informasi pemetaan default untuk penyedia autentikasi yang didukung Amazon Cognito.

Penyedia Jenis token Nilai tanda utama Contoh

Kolam pengguna Amazon Cognito

Token ID

aud (ID klien) dan sub (ID pengguna)

“6jk8ltokc7ac9es6jrtg9q572f”, “57e7b692-4f66-480d-98b8-45a6729b4c88"

Facebook

Token akses

aud(app_id), sub(user_id)

"492844718097981", "112177216992379"

Google

Token ID

aud (ID klien) dan sub (ID pengguna)

"620493171733-eebk7c0hcp5lj3e1tlqp1gntt3k0rncv.apps.googleusercontent.com", "109220063452404746097"

SAML

Pernyataan

“http://schemas.xmlsoap. org/ws/2005/05/identity/claims/nameidentifier" , "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name”

“auth0|5e28d196f8f55a0eaaa95de3"," user123@gmail.com”

Apple

Token ID

aud (ID klien) dan sub (ID pengguna)

"com.amazonaws.ec2-54-80-172-243.compute-1.client", "001968.a6ca34e9c1e742458a26cf8005854be9.0733"

Amazon

Token akses

aud (ID klien di Amzn Dev Ac), user_id(ID pengguna)

“amzn1.application-oa2-client.9d70d9382d3446108aaee3dd763a0fa6", “amzn1.account. AGHNIFJQMFSBG3G6XCPVB35ORQAA”

OIDCPenyedia standar

ID dan token akses

aud (sebagai client_id), sub (sebagai ID pengguna)

"620493171733-eebk7c0hcp5lj3e1tlqp1gntt3k0rncv.apps.googleusercontent.com", "109220063452404746097"

Twitter

Token akses

aud (ID aplikasi; aplikasi Rahasia), sub (ID pengguna)

“DfwifTtKEX1FiIBRnOTlR0CFK; xGJ5xB8 “, “xIrIVCPjXgLIdkW7fXmwcJJrFvnoK9gwZkLexo1y5z11269003884292222976"

DevAuth

Peta

Tidak berlaku

"tag1", "tag2"

catatan

Opsi pemetaan atribut default secara otomatis diisi untuk Kunci Tanda untuk Utama dan nama Atribut. Anda tidak dapat mengubah pemetaan default.