Buat 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.

Buat 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 penyedia identitas 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 dan federasi identitas.

Prasyarat untuk menciptakan peran untuk OIDC

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

Untuk mempersiapkan diri untuk menciptakan peran untuk OIDC federasi
  1. Daftar dengan satu atau lebih layanan yang menawarkan OIDC identitas federasi. Jika Anda membuat aplikasi yang memerlukan akses ke AWS sumber daya, Anda juga mengonfigurasi aplikasi dengan informasi penyedia. Saat melakukannya, penyedia memberi Anda aplikasi atau ID 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 Buat penyedia identitas OpenID Connect (OIDC) di IAM.

    penting

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

  3. Persiapkan kebijakan untuk peran yang akan diaambil oleh pengguna yang diotentikasi IdP. 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 menyarankan Anda menggunakan Amazon Cognito untuk mengelola identitas. Dalam hal ini, gunakan kebijakan kepercayaan yang serupa dengan contoh ini.

    { "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 OIDC iDP secara manual, saat membuat kebijakan kepercayaan, Anda harus menggunakan tiga nilai yang memastikan bahwa hanya aplikasi yang dapat mengambil peran tersebut:

    • Untuk elemen Action, gunakan tindakan sts:AssumeRoleWithWebIdentity.

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

      • Untuk beberapa umum OIDC IdPs, providerUrl adalah aURL. Contoh berikut termasuk metode untuk menentukan prinsipal 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 OIDC penyedia lain, gunakan Amazon Resource Name (ARN) dari OIDC idP 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. Pencocokan antara IDs memastikan bahwa permintaan berasal dari aplikasi Anda.

      catatan

      IAMperan untuk kumpulan identitas Amazon Cognito mempercayai prinsip layanan cognito-identity.amazonaws.com untuk mengambil peran tersebut. Peran jenis ini harus mengandung setidaknya satu kunci kondisi untuk membatasi kepala sekolah yang dapat mengambil peran tersebut.

      Pertimbangan tambahan berlaku untuk kumpulan identitas Amazon Cognito yang mengambil peran IAM 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 bagi 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 IAM peran dalam autentikasi 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 OIDC penyedia, gunakan OIDC IDP URL yang memenuhi syarat penuh dengan kunci aud konteks, seperti contoh berikut:

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

    catatan

    Nilai-nilai untuk kepala sekolah dalam kebijakan kepercayaan untuk peran tersebut spesifik untuk IDP. Peran untuk hanya OIDC dapat menentukan satu prinsipal. Oleh karena itu, jika aplikasi seluler memungkinkan pengguna untuk 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 with 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 with Amazon.

    { "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.

    { "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.

    { "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.

    { "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"}} }] }

Menciptakan peran untuk OIDC

Setelah Anda menyelesaikan prasyarat, Anda dapat membuat peran di. IAM Prosedur berikut menjelaskan cara membuat peran OIDC federasi di AWS Management Console. Untuk membuat peran dari AWS CLI atau AWS API, lihat prosedur diBuat peran untuk penyedia identitas pihak ketiga (federasi).

penting

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

Untuk membuat IAM peran untuk OIDC federasi
  1. Masuk ke AWS Management Console dan buka IAM konsol 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 Berikutnya.

  4. Untuk penyedia Identity, pilih iDP untuk peran Anda:

    • Jika Anda ingin membuat peran untuk IDP web individual, pilih Login with 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 Cognito.

      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 gabungan) di Panduan Pengembang Amazon Cognito.

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

      catatan

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

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

      penting

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

      Jika Anda menetapkan atau mengubah kebijakan kepercayaan peran untuk peran yang terkait dengan OIDC penyedia HCP Terraform di AWS akun Anda, tetapi tidak mengevaluasi kunci IAM kondisiapp.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. Masukkan pengenal untuk aplikasi Anda. Label pengenal berubah berdasarkan penyedia yang Anda pilih:

    • Jika Anda ingin membuat peran untuk Login with 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 ID Kumpulan Identitas.

    • Jika Anda ingin membuat peran untuk GitHub Tindakan, 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, itu default ke wildcard (). *

      • (Opsional) Untuk GitHub cabang, masukkan nama GitHub cabang. Jika Anda tidak menentukan nilai, itu default ke 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 Workspace, 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 run.

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

  7. Tinjau OIDC informasi Anda dan kemudian pilih Berikutnya.

  8. IAMmenyertakan 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 IAM kebijakan. Setelah Anda membuat kebijakan, tutup tab tersebut dan kembali ke tab asli Anda. Pilih kotak centang di samping kebijakan izin yang ingin dimiliki OIDC pengguna. 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 diri Anda Akun AWS. Mereka tidak bergantung pada 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 membuatnya.

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

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

  14. (Opsional) Untuk menambahkan metadata ke peran, lampirkan tag sebagai pasangan kunci-nilai. Untuk informasi selengkapnya tentang penggunaan tag diIAM, lihatTag untuk AWS Identity and Access Management sumber daya.

  15. Tinjau peran, lalu pilih Buat peran.

Mengkonfigurasi peran untuk penyedia GitHub OIDC identitas

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 ke GitHub organisasi, repositori, atau cabang tertentu. Anda dapat menggunakan kunci kondisi token.actions.githubusercontent.com:sub dengan operator kondisi string untuk membatasi akses. Kami menyarankan Anda membatasi kondisi ke kumpulan repositori atau cabang tertentu dalam organisasi Anda GitHub . Untuk informasi tentang cara AWS mengonfigurasi trust OIDC sebagai GitHub identitas federasi, lihat GitHub Docs - Mengonfigurasi OpenID Connect di Amazon Web Services.

Jika Anda menggunakan GitHub lingkungan dalam alur kerja tindakan atau OIDC kebijakan, kami sangat menyarankan untuk menambahkan aturan perlindungan ke lingkungan untuk keamanan tambahan. Gunakan cabang dan tag penyebaran untuk membatasi cabang dan tag mana yang dapat diterapkan ke lingkungan. Untuk informasi selengkapnya tentang mengonfigurasi lingkungan dengan aturan perlindungan, lihat Cabang dan tag penerapan di GitHub artikel Menggunakan lingkungan untuk penerapan.

Kapan GitHub OIDC idP adalah Principal tepercaya untuk peran Anda, IAM periksa kondisi kebijakan kepercayaan peran untuk memverifikasi bahwa kunci kondisi token.actions.githubusercontent.com:sub ada dan nilainya bukan semata-mata karakter wildcard (* dan?) atau null. IAMmelakukan pemeriksaan ini ketika 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, maka GitHub Tindakan 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.

{ "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" } } } ] }

Contoh kondisi berikut membatasi akses ke GitHub organisasi dan repositori yang ditentukan, tetapi memberikan akses ke cabang mana pun dalam repositori.

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

Contoh kondisi berikut membatasi akses ke repositori atau cabang apa pun dalam organisasi yang ditentukan GitHub . Kami menyarankan Anda membatasi kunci kondisi token.actions.githubusercontent.com:sub ke nilai tertentu yang membatasi akses ke GitHub Tindakan 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 OIDC federasi yang tersedia untuk pemeriksaan kondisi dalam kebijakan, lihatKunci yang tersedia untuk AWS OIDC federasi.