View a markdown version of this page

Membuat peran untuk federasi OpenID Connect (konsol) - 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.

Membuat peran untuk federasi OpenID Connect (konsol)

Anda dapat menggunakan penyedia identitas federasi OpenID Connect (OIDC) alih-alih membuat AWS Identity and Access Management pengguna di Anda. Akun AWS Dengan penyedia identitas (IdP), Anda dapat mengelola identitas pengguna di luar AWS dan memberikan izin identitas pengguna eksternal ini untuk mengakses AWS sumber daya di akun Anda. Untuk informasi lebih lanjut tentang federasi dan IdPs, lihatPenyedia identitas dan federasi ke AWS.

Prasyarat untuk membuat peran untuk OIDC

Sebelum Anda dapat membuat peran untuk federasi OIDC, Anda harus terlebih dahulu menyelesaikan langkah-langkah prasyarat berikut.

Untuk mempersiapkan untuk membuat peran untuk federasi OIDC
  1. Daftar dengan satu atau lebih layanan yang menawarkan identitas OIDC federasi. Jika Anda membuat aplikasi yang memerlukan akses ke AWS sumber daya, Anda juga mengonfigurasi aplikasi Anda dengan informasi penyedia. Jika Anda melakukannya, penyedia memberi Anda ID aplikasi atau audiens yang unik untuk aplikasi Anda. (Penyedia berbeda menggunakan terminologi berbeda untuk proses ini. Panduan ini menggunakan istilah konfigurasi untuk proses mengidentifikasi aplikasi Anda dengan penyedia.) Anda dapat mengonfigurasi beberapa aplikasi dengan setiap penyedia, atau beberapa penyedia dengan satu aplikasi. Lihat informasi tentang penggunaan penyedia identitas sebagai berikut:

  2. Setelah Anda menerima informasi yang diperlukan dari IdP, buat IdP di IAM. Untuk informasi selengkapnya, lihat Membuat penyedia identitas OpenID Connect (OIDC) di IAM.

    penting

    Jika Anda menggunakan IDP OIDC dari Google, Facebook, atau Amazon Cognito, jangan membuat IAM IDP terpisah di. Konsol Manajemen AWS Penyedia identitas OIDC ini sudah dibangun AWS dan tersedia untuk Anda gunakan. Lewati langkah ini dan buat peran baru menggunakan IdP Anda di langkah berikut.

  3. Siapkan kebijakan untuk peran yang akan diasumsikan IdP-authenticated pengguna. Sebagaimana peran apa pun, peran untuk aplikasi seluler mencakup dua kebijakan. Salah satunya adalah kebijakan kepercayaan yang menentukan siapa yang dapat mengasumsikan peran tersebut. Lainnya adalah kebijakan izin yang menentukan tindakan AWS dan sumber daya yang diperbolehkan atau ditolak untuk diakses aplikasi seluler.

    Untuk web IdPs, kami sarankan Anda menggunakan Amazon Cognito untuk mengelola identitas. Dalam hal ini, gunakan kebijakan kepercayaan yang serupa dengan contoh ini.

    JSON
    { "Version":"2012-10-17", "Statement": { "Effect": "Allow", "Principal": {"Federated": "cognito-identity.amazonaws.com"}, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": {"cognito-identity.amazonaws.com:aud": "us-east-2:12345678-abcd-abcd-abcd-123456"}, "ForAnyValue:StringLike": {"cognito-identity.amazonaws.com:amr": "unauthenticated"} } } }

    Ganti us-east-2:12345678-abcd-abcd-abcd-123456 dengan ID kumpulan identitas yang diberikan Amazon Cognito kepada Anda.

    Jika Anda mengonfigurasi IDP OIDC secara manual, saat membuat kebijakan kepercayaan, Anda harus menggunakan tiga nilai yang memastikan bahwa hanya aplikasi Anda yang dapat mengambil peran tersebut:

    • Untuk elemen Action, gunakan tindakan sts:AssumeRoleWithWebIdentity.

    • Untuk elemen Principal, gunakan string {"Federated":providerUrl/providerArn}.

      • Untuk beberapa OIDC umum IdPs, ini providerUrl adalah URL. Contoh-contoh berikut mencakup metode untuk menentukan prinsip untuk beberapa umum IdPs:

        "Principal":{"Federated":"cognito-identity.amazonaws.com"}

        "Principal":{"Federated":"www.amazon.com"}

        "Principal":{"Federated":"graph.facebook.com"}

        "Principal":{"Federated":"accounts.google.com"}

      • Untuk penyedia OIDC lainnya, gunakan Amazon Resource Name (ARN) dari IDP OIDC yang Anda buatTahapĀ 2, seperti contoh berikut:

        "Principal":{"Federated":"arn:aws:iam::123456789012:oidc-provider/server.example.com"}

    • Untuk elemen Condition , gunakan syarat StringEquals untuk membatasi izin. Uji ID kumpulan identitas untuk Amazon Cognito) atau ID aplikasi untuk penyedia lain. ID kumpulan identitas harus sesuai dengan ID aplikasi yang Anda terima saat mengonfigurasi aplikasi dengan IdP. Kecocokan antar ID ini memastikan bahwa permintaan berasal dari aplikasi Anda.

      catatan

      Peran IAM untuk kumpulan identitas Amazon Cognito mempercayai prinsipal layanan cognito-identity.amazonaws.com untuk mengambil peran tersebut. Peran jenis ini harus berisi setidaknya satu kunci kondisi untuk membatasi prinsipal yang dapat mengambil peran tersebut.

      Pertimbangan tambahan berlaku untuk kumpulan identitas Amazon Cognito yang mengambil peran I AM lintas akun. Kebijakan kepercayaan dari peran ini harus menerima prinsip cognito-identity.amazonaws.com layanan dan harus berisi kunci aud kondisi untuk membatasi asumsi peran kepada pengguna dari kumpulan identitas yang Anda inginkan. Kebijakan yang mempercayai kumpulan identitas Amazon Cognito tanpa kondisi ini menimbulkan risiko bahwa pengguna dari kumpulan identitas yang tidak diinginkan dapat mengambil peran tersebut. Untuk informasi selengkapnya, lihat Kebijakan kepercayaan untuk peran IAM dalam otentikasi Dasar (Klasik) di Panduan Pengembang Amazon Cognito.

      Buat elemen kondisi yang mirip dengan salah satu contoh berikut, tergantung pada IdP yang Anda gunakan:

      "Condition": {"StringEquals": {"cognito-identity.amazonaws.com:aud": "us-east:12345678-ffff-ffff-ffff-123456"}}

      "Condition": {"StringEquals": {"www.amazon.com:app_id": "amzn1.application-oa2-123456"}}

      "Condition": {"StringEquals": {"graph.facebook.com:app_id": "111222333444555"}}

      "Condition": {"StringEquals": {"accounts.google.com:aud": "66677788899900pro0"}}

      Untuk penyedia OIDC, gunakan URL IdP OIDC yang memenuhi syarat sepenuhnya dengan kunci konteks aud, seperti contoh berikut:

      "Condition": {"StringEquals": {"server.example.com:aud": "appid_from_oidc_idp"}}

    catatan

    Nilai-nilai untuk prinsipal dalam kebijakan kepercayaan untuk peran tersebut khusus untuk IdP. Peran untuk OIDC hanya dapat menentukan satu prinsipal. Oleh karena itu, jika aplikasi seluler memungkinkan pengguna masuk dari lebih dari satu IdP, buat peran terpisah untuk setiap IdP yang ingin Anda dukung. Buat kebijakan kepercayaan terpisah untuk setiap IdP.

    Jika pengguna menggunakan aplikasi seluler untuk masuk dari Login dengan Amazon, contoh kebijakan kepercayaan berikut akan berlaku. Dalam contoh, amzn1.application-oa2-123456 mewakili ID aplikasi yang ditetapkan Amazon saat Anda mengonfigurasi aplikasi menggunakan Login dengan Amazon.

    JSON
    { "Version":"2012-10-17", "Statement": [{ "Sid": "RoleForLoginWithAmazon", "Effect": "Allow", "Principal": {"Federated": "www.amazon.com"}, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": {"StringEquals": {"www.amazon.com:app_id": "amzn1.application-oa2-123456"}} }] }

    Jika pengguna menggunakan aplikasi seluler untuk masuk dari Facebook, contoh kebijakan kepercayaan berikut akan berlaku. Dalam contoh ini, 111222333444555 mewakili ID aplikasi yang ditetapkan Facebook.

    JSON
    { "Version":"2012-10-17", "Statement": [{ "Sid": "RoleForFacebook", "Effect": "Allow", "Principal": {"Federated": "graph.facebook.com"}, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": {"StringEquals": {"graph.facebook.com:app_id": "111222333444555"}} }] }

    Jika pengguna menggunakan aplikasi seluler untuk masuk dari Google, contoh kebijakan kepercayaan berikut akan berlaku. Dalam contoh ini, 666777888999000 mewakili ID aplikasi yang ditetapkan Google.

    JSON
    { "Version":"2012-10-17", "Statement": [{ "Sid": "RoleForGoogle", "Effect": "Allow", "Principal": {"Federated": "accounts.google.com"}, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": {"StringEquals": {"accounts.google.com:aud": "666777888999000"}} }] }

    Jika pengguna menggunakan aplikasi seluler untuk masuk dari Amazon Cognito, contoh kebijakan kepercayaan berikut akan berlaku. Dalam contoh ini, us-east:12345678-ffff-ffff-ffff-123456 mewakili ID kumpulan identitas yang ditetapkan Amazon Cognito.

    JSON
    { "Version":"2012-10-17", "Statement": [{ "Sid": "RoleForCognito", "Effect": "Allow", "Principal": {"Federated": "cognito-identity.amazonaws.com"}, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": {"StringEquals": {"cognito-identity.amazonaws.com:aud": "us-east:12345678-ffff-ffff-ffff-123456"}} }] }

Membuat peran untuk OIDC

Setelah Anda menyelesaikan prasyarat, Anda dapat membuat peran dalam IAM. Untuk penyedia identitas OpenID Connect (OIDC) bersama yang diakui (IdPs), IAM memerlukan evaluasi eksplisit klaim spesifik dalam Token Web JSON (JWT) yang dikenal sebagai kontrol penyedia identitas. Untuk informasi selengkapnya tentang OIDC mana yang IdPs memiliki kontrol penyedia identitas, lihat. Identity-provider kontrol untuk penyedia OIDC bersama

Prosedur berikut menjelaskan cara membuat peran untuk federasi OIDC di Konsol Manajemen AWS. Untuk membuat peran dari AWS API AWS CLI or, lihat prosedur diMembuat peran untuk penyedia identitas pihak ketiga.

penting

Jika Anda menggunakan Amazon Cognito, gunakan konsol Amazon Cognito untuk mengatur peran. Jika tidak, gunakan konsol IAM untuk membuat peran federasi OIDC.

Untuk membuat peran IAM untuk federasi OIDC
  1. Masuk ke Konsol Manajemen AWS dan buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Pada panel navigasi, silakan pilih Peran lalu pilih Buat peran.

  3. Pilih identitas Web sebagai jenis entitas tepercaya dan pilih Ber ikutnya.

  4. Untuk penyedia Identitas, pilih IdP untuk peran Anda:

    • Jika Anda ingin membuat peran untuk IdP web individual, pilih Login dengan Amazon, Facebook, atau Google.

      catatan

      Anda harus membuat peran terpisah untuk setiap IdP yang ingin Anda dukung.

    • Jika Anda ingin membuat peran skenario lanjutan untuk Amazon Cognito, pilih Amazon Cog nito.

      catatan

      Anda harus membuat peran secara manual untuk digunakan dengan Amazon Cognito hanya ketika Anda mengerjakan skenario lanjutan. Jika tidak, Amazon Cognito dapat membuat peran untuk Anda. Untuk informasi selengkapnya tentang Amazon Cognito, lihat penyedia identitas eksternal kumpulan identitas (identitas federasi) di Panduan Pengembang Amazon Cognito.

    • Jika Anda ingin membuat peran untuk Tind GitHub akan, Anda harus mulai dengan menambahkan penyedia GitHub OIDC ke IAM. Setelah Anda menambahkan penyedia GitHub OIDC ke IAM, pilih token.actions.githubusercontent.com.

      catatan

      Untuk informasi tentang cara mengonfigurasi AWS untuk mempercay GitHub ai penyedia OIDC sebagai identitas federasi, lihat GitHub Dokumen - Mengkonfigurasi OpenID Connect di Amazon Web Services. Untuk informasi tentang praktik terbaik untuk membatasi akses untuk peran yang terkait dengan IdP IAM untuk GitHub, lihat Mengkonfigurasi peran untuk penyedia identitas GitHub OIDC di halaman ini.

    • Jika Anda ingin membuat peran untuk HashiCorp Cloud Platform (HCP) Terraform, Anda harus mulai dengan menambahkan penyedia Terraform OIDC ke IAM. Setelah Anda menambahkan penyedia Terraform OIDC ke IAM, pilih app.terraform.io.

      penting

      Peran IAM untuk HashiCorp Penyedia Terraform OIDC Cloud Platform (HCP) harus mengevaluasi kunci kondisi IAM,app.terraform.io:sub, dalam kebijakan kepercayaan peran. Kunci kondisi ini membatasi organisasi HCP Terraform, proyek, ruang kerja, atau fase jalankan yang dapat mengambil peran. Tanpa kunci kondisi ini, kebijakan kepercayaan Anda memberikan akses ke peran dan AWS sumber daya Anda dengan identitas di luar organisasi Anda, yang tidak selaras dengan prinsip hak istimewa paling kecil.

      Jika Anda menetapkan atau mengubah kebijakan kepercayaan peran untuk peran yang terkait dengan penyedia HCP Terraform OIDC di AWS akun Anda, tetapi tidak mengevaluasi kunci kondisi IAMapp.terraform.io:sub, Anda akan menerima kesalahan. Selain itu, AWS STS akan menolak permintaan otorisasi jika kebijakan kepercayaan peran Anda tidak mengevaluasi kunci kondisi ini.

  5. Informasi yang diminta bervariasi berdasarkan penyedia OIDC yang Anda pilih.

    • Masukkan pengenal untuk aplikasi Anda. Label pengenal berubah berdasarkan penyedia yang Anda pilih:

      • Jika Anda ingin membuat peran untuk Login dengan Amazon, masukkan ID aplikasi ke dalam kotak ID Aplikasi.

      • Jika Anda ingin membuat peran untuk Facebook, masukkan ID aplikasi ke dalam kotak ID Aplikasi.

      • Jika Anda ingin membuat peran untuk Google, masukkan nama audiens ke dalam kotak Audiens.

      • Jika Anda ingin membuat peran untuk Amazon Cognito, masukkan ID kumpulan identitas yang telah Anda buat untuk aplikasi Amazon Cognito ke dalam kotak Identity Pool ID.

    • Jika Anda ingin membuat peran untuk T GitHub indakan, masukkan detail berikut:

      • Untuk Audiens, pilih sts.amazonaws.com.

      • Untuk GitHub organisasi, masukkan nama GitHub organisasi. Nama GitHub organisasi diperlukan dan harus alfanumerik termasuk tanda hubung (-). Anda tidak dapat menggunakan karakter wildcard (* dan?) dalam nama GitHub organisasi.

      • (Opsional) Untuk GitHub repositori, masukkan nama GitHub repositori. Jika Anda tidak menentukan nilai, nilai default akan menjadi wildcard ()*.

      • (Opsional) Untuk GitHub cabang, masukkan nama GitHub cabang. Jika Anda tidak menentukan nilai, nilai default akan menjadi wildcard ()*.

    • Jika Anda ingin membuat peran untuk HashiCorp Cloud Platform (HCP) Terraform, masukkan detail berikut:

      • Untuk Audiens, pilih aws.workload.identity.

      • Untuk Organisasi, masukkan nama organisasi. Anda dapat menentukan karakter wildcard (*) untuk semua organisasi.

      • Untuk Project, masukkan nama proyek. Anda dapat menentukan karakter wildcard (*) untuk semua proyek.

      • Untuk Ruang Kerja, masukkan nama ruang kerja. Anda dapat menentukan karakter wildcard (*) untuk semua ruang kerja.

      • Untuk Run Phase, masukkan nama fase run. Anda dapat menentukan karakter wildcard (*) untuk semua fase yang dijalankan.

  6. (Opsional) Untuk Kondisi (opsional), pilih Tam bah Kondisi untuk membuat kondisi tambahan yang harus dipenuhi sebelum pengguna aplikasi Anda dapat menggunakan izin yang diberikan peran tersebut. Misalnya, Anda dapat menambahkan kondisi yang memberikan akses ke AWS sumber daya hanya untuk ID pengguna IAM tertentu. Anda juga dapat menambahkan kondisi ke kebijakan kepercayaan setelah peran dibuat. Untuk informasi selengkapnya, lihat Memperbarui kebijakan kepercayaan peran.

  7. Tinjau informasi OIDC Anda dan kemudian pilih Ber ikutnya.

  8. IAM menyertakan daftar kebijakan yang AWS dikelola dan dikelola pelanggan di akun Anda. Pilih kebijakan yang akan digunakan untuk kebijakan izin, atau pilih Buat kebijakan untuk membuka tab browser baru dan membuat kebijakan baru dari awal. Untuk informasi selengkapnya, lihat Membuat kebijakan IAM. Setelah Anda membuat kebijakan, tutup tab tersebut dan kembali ke tab asli Anda. Pilih kotak centang di samping kebijakan izin yang ingin dimiliki pengguna OIDC. Jika Anda lebih suka, Anda boleh tidak memilih kebijakan saat ini, kemudian melampirkan kebijakan kepada peran di lain waktu. Secara default, peran tidak memiliki izin.

  9. (Opsional) Tetapkan batas izin. Ini adalah fitur lanjutan.

    Buka bagian batas izin dan pilih Gunakan batas izin untuk mengontrol izin peran maksimum. Pilih kebijakan yang akan digunakan untuk batas izin.

  10. Pilih Berikutnya.

  11. Untuk Nama peran, masukkan nama peran. Nama peran harus unik di dalam Anda Akun AWS. Mereka tidak tergantung kasus. Misalnya, Anda tidak dapat membuat peran bernama keduanya PRODROLE danprodrole. Karena AWS sumber daya lain mungkin mereferensikan peran, Anda tidak dapat mengedit nama peran setelah Anda membuatnya.

  12. (Opsional) Untuk Deskripsi, masukkan deskripsi untuk peran baru ini.

  13. Untuk mengedit kasus penggunaan dan izin untuk peran, pilih Edit di bagian Langkah 1: Pilih entitas tepercaya atau Langkah 2: Tambahkan izin.

  14. (Opsional) Untuk menambahkan metadata ke peran, lampirkan tag sebagai pasangan kunci-nilai. Untuk informasi selengkapnya tentang menggunakan tanda di IAM, lihat Tag untuk AWS Identity and Access Management sumber daya.

  15. Tinjau peran, lalu pilih Buat peran.

Mengkonfigurasi peran untuk penyedia identitas GitHub OIDC

Jika Anda menggunakan GitHub sebagai penyedia identitas OpenID Connect (OIDC) (IdP), praktik terbaik adalah membatasi entitas yang dapat mengambil peran yang terkait dengan IdP IAM. Bila Anda menyertakan pernyataan kondisi dalam kebijakan kepercayaan, Anda dapat membatasi peran untuk GitHub organisasi, repositori, atau cabang tertentu. Anda dapat menggunakan kunci kondisi token.actions.githubusercontent.com:sub dengan operator kondisi string untuk membatasi akses. Sebaiknya batasi kondisi ke kumpulan repositori atau cabang tertentu dalam GitHub organisasi Anda. Untuk informasi tentang cara mengonfigurasi AWS untuk mempercay GitHub ai OIDC sebagai identitas federasi, lihat GitHub Dokumen - Mengkonfigurasi OpenID Connect di Amazon Web Services.

Jika Anda menggunakan GitHub lingkungan dalam alur kerja tindakan atau dalam kebijakan OIDC, sebaiknya tambahkan aturan perlindungan ke lingkungan untuk keamanan tambahan. Gunakan cabang dan tag penerapan untuk membatasi cabang dan tag mana yang dapat digunakan ke lingkungan. Untuk informasi selengkapnya tentang mengonfigurasi lingkungan dengan aturan perlindungan, lihat Cabang dan tag pener GitHub apan di artikel Menggunakan lingkungan untuk penerapan.

Ketika GitHub IDC IdP adalah Principal tepercaya untuk peran Anda, IAM memeriksa kondisi kebijakan kepercayaan peran untuk memverifikasi bahwa kunci kondisi token.actions.githubusercontent.com:sub ada dan nilainya bukan semata-mata karakter wildcard (* dan?) atau nol. IAM melakukan pemeriksaan ini saat kebijakan kepercayaan dibuat atau diperbarui. Jika kunci kondisi tidak token.actions.githubusercontent.com:sub ada, atau nilai kunci tidak memenuhi kriteria nilai yang disebutkan, permintaan akan gagal dan mengembalikan kesalahan.

penting

Jika Anda tidak membatasi kunci kondisi token.actions.githubusercontent.com:sub untuk organisasi atau repositori tertentu, Tindakan GitHub dari organisasi atau repositori di luar kendali Anda dapat mengambil peran yang terkait dengan IdP GitHub IAM di akun Anda. AWS

Contoh kebijakan kepercayaan berikut membatasi akses ke GitHub organisasi, repositori, dan cabang yang ditentukan. token.actions.githubusercontent.com:subNilai kunci kondisi dalam contoh berikut adalah format nilai subjek default yang didokumentasikan oleh GitHub.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::012345678910:oidc-provider/token.actions.githubusercontent.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "token.actions.githubusercontent.com:aud": "sts.amazonaws.com", "token.actions.githubusercontent.com:sub": "repo:GitHubOrg/GitHubRepo:ref:refs/heads/GitHubBranch" } } } ] }

Kondisi contoh berikut membatasi akses ke GitHub organisasi dan repositori yang ditentukan, tetapi memberikan akses ke cabang mana pun di dalam repositori.

"Condition": { "StringEquals": { "token.actions.githubusercontent.com:aud": "sts.amazonaws.com" }, "StringLike": { "token.actions.githubusercontent.com:sub": "repo:GitHubOrg/GitHubRepo:*" } }

Kondisi contoh berikut membatasi akses ke setiap repositori atau cabang dalam GitHub organisasi yang ditentukan. Sebaiknya batasi kunci kondisi token.actions.githubusercontent.com:sub ke nilai tertentu yang membatasi akses ke Tind GitHub akan dari dalam GitHub organisasi Anda.

"Condition": { "StringEquals": { "token.actions.githubusercontent.com:aud": "sts.amazonaws.com" }, "StringLike": { "token.actions.githubusercontent.com:sub": "repo:GitHubOrg/*" } }

Untuk informasi selengkapnya tentang kunci federasi OIDC yang tersedia untuk pemeriksaan kondisi dalam kebijakan, lihatKunci yang tersedia untuk AWS Federasi OIDC.