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 kepada 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 membuat peran untuk OIDC
Sebelum Anda dapat membuat peran untuk OIDC federasi, Anda harus terlebih dahulu menyelesaikan langkah-langkah prasyarat berikut.
Untuk mempersiapkan pembuatan peran untuk OIDC federasi
-
Daftar dengan satu atau lebih layanan yang menawarkan OIDC identitas federasi. Jika membuat aplikasi yang memerlukan akses ke AWS sumber daya, Anda juga mengonfigurasi aplikasi dengan informasi penyedia. Saat Anda melakukannya, penyedia memberikan ID aplikasi atau audiens yang unik ke 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 menggunakan penyedia identitas sebagai berikut:
-
Tambahkan Login Facebook ke Aplikasi atau Website Anda
di situs pengembang Facebook. -
Menggunakan OAuth 2.0 untuk Login (OpenID Connect)
di situs developer Google.
-
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 buat IAM IdP terpisah di akun. AWS Management Console Penyedia OIDC identitas ini sudah terpasang AWS dan tersedia untuk Anda gunakan. Lewati langkah ini dan buat peran baru menggunakan IdP Anda di langkah berikut.
-
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 mengonfigurasi OIDC IdP secara manual, saat membuat kebijakan kepercayaan, Anda harus menggunakan tiga nilai yang memastikan hanya aplikasi Anda yang dapat mengambil peran tersebut:
-
Untuk elemen
Action
, gunakan tindakansts:AssumeRoleWithWebIdentity
. -
Untuk elemen
Principal
, gunakan string{"Federated":
.providerUrl/providerArn
}-
Untuk beberapa umum OIDC IdPs,
adalah aURL. Contoh berikut mencakup metode untuk menetapkan prinsipal untuk beberapa hal umum IdPs:providerUrl
"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 syaratStringEquals
untuk membatasi izin. Uji ID kumpulan identitas untuk Amazon Cognito) atau ID aplikasi untuk penyedia lain. ID kumpulan identitas seharusnya cocok 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 kunciaud
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 syarat yang serupa 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 sepenuhnya dengan kunci
aud
konteks, seperti contoh berikut:"Condition": {"StringEquals": {"
server.example.com:aud
": "appid_from_oidc_idp"}}
catatan
Nilai-nilai untuk prinsipal dalam kebijakan kepercayaan untuk peran tersebut adalah spesifik untuk IdP. Peran untuk hanya OIDC dapat menetapkan satu prinsipal. Oleh karena itu, jika aplikasi seluler mengizinkan 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 with Amazon, kebijakan kepercayaan berikut ini akan berlaku. Dalam contoh,
amzn1.application-oa2-123456
menunjukkan 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
menunjukkan 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
menunjukkan 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
menunjukkan 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 dalam. IAM Prosedur berikut menjelaskan cara membuat peran untuk OIDC federasi dalam 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 untuk OIDC federasi.
Untuk membuat IAM peran untuk OIDC federasi
Masuk ke AWS Management Console dan buka IAM konsol di https://console.aws.amazon.com/iam/
. -
Pada panel navigasi, silakan pilih Peran lalu pilih Buat peran.
-
Pilih identitas Web sebagai jenis entitas tepercaya dan pilih Berikutnya.
-
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 saat 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 kondisi
app.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.
-
-
Masukkan pengidentifikasi untuk aplikasi Anda. Label pengidentifikasi berubah berdasarkan penyedia layanan 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 kolam identitas yang telah Anda buat untuk aplikasi Amazon Cognito ke 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-karakter wildcard (* dan?) dalam nama GitHub organisasi.
-
(Opsional) Untuk GitHub repositori, masukkan nama GitHub repositori. Jika Anda tidak menentukan nilai, nilai default ke wildcard ().
*
-
(Opsional) Untuk GitHub cabang, masukkan nama GitHub cabang. Jika Anda tidak menentukan nilai, nilai 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.
-
-
-
(Opsional) Untuk Kondisi (opsional), pilih Tambahkan Kondisi untuk membuat persyaratan tambahan yang harus dipenuhi sebelum pengguna aplikasi Anda dapat menggunakan izin yang diberikan oleh peran tersebut. Misalnya, Anda dapat menambahkan syarat 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 .
-
Tinjau OIDC informasi Anda dan kemudian pilih Berikutnya.
-
IAMmencakup daftar kebijakan yang AWS dikelola pengelolaan dan kebijakan yang dikelola pelanggan di akun Anda. Pilih kebijakan yang akan digunakan untuk kebijakan izin, atau pilih Buat kebijakan untuk membuka tab peramban 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. Centang kotak 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.
-
(Opsional) Tetapkan batas izin. Ini adalah fitur lanjutan.
Membuka bagian Batas izin dan pilih Gunakan batas izin untuk mengontrol izin peran maksimum. Pilih kebijakan yang akan digunakan untuk batas izin.
-
Pilih Berikutnya.
-
Untuk Nama peran, masukkan nama peran. Nama peran harus unik di 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 tersebut, Anda tidak dapat mengubah nama peran tersebut setelah Anda membuatnya. -
(Opsional) Untuk Deskripsi, masukkan deskripsi untuk peran baru ini.
-
Untuk mengedit kasus penggunaan dan izin untuk peran, pilih Edit di Langkah 1: Pilih entitas tepercaya atau Langkah 2: Tambahkan izin bagian.
-
(Opsional) Untuk menambahkan metadata ke peran, lampirkan tag sebagai pasangan nilai kunci. Untuk informasi selengkapnya tentang menggunakan tag diIAM, lihatTag untuk AWS Identity and Access Management sumber daya.
-
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
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
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:sub
Nilai 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 memeriksa ketentuan dalam kebijakan, lihatKunci yang tersedia untuk AWS OIDC federasi.