Cakupan ke bawah akses ke penyedia kredensi berdasarkan identitas beban kerja
Anda dapat menggunakan kebijakan IAM untuk mengontrol identitas beban kerja mana yang memiliki akses ke penyedia kredensi tertentu. Ini memungkinkan kontrol akses berbutir halus, memastikan bahwa hanya agen resmi yang dapat mengambil kredensi untuk layanan tertentu.
catatan
Peran IAM yang Anda tetapkan ke agen mengontrol penyedia kredensi mana yang dapat dihubungi agen tersebut. Layanan tidak memberlakukan pengikatan tambahan antara identitas beban kerja dan penyedia kredensi di akun yang sama. Untuk mengikuti praktik hak istimewa paling sedikit, cakupkan Resource blok kebijakan IAM Anda ke identitas beban kerja tertentu dan ARN penyedia kredensi daripada menggunakan. *
Panggilan yang berhasil ke penyedia kredensi tidak berarti kredensional dikembalikan secara otomatis. Kredensi yang diambil beban kerja dicakup ke identitas pengguna dalam token akses beban kerjanya. Untuk penyedia OAuth2 (3LO), pengguna akhir harus telah menyelesaikan otorisasi sebelum ada kredensi untuk mengambil identitas beban kerja dan kombinasi pengguna tersebut.
Mekanisme kontrol akses
-
Pembatasan berbasis identitas beban kerja — Batasi akses penyedia kredensi ke identitas beban kerja tertentu
-
Resource-level izin - Kontrol akses ke penyedia kredensi individu menggunakan kebijakan ARN-based
-
Directory-level kontrol - Mengelola akses di tingkat direktori identitas beban kerja
-
Pelingkupan penyedia kredensi — Batasi penyedia kredensi mana yang dapat diakses oleh identitas beban kerja dengan memasukkan ARN penyedia kredensi di blok kebijakan
Resource
Topik
Contoh kebijakan IAM
Contoh berikut menunjukkan cara membuat kebijakan IAM yang membatasi akses penyedia kredensi berdasarkan identitas beban kerja dan penyedia kredensi.
Batasi akses ke penyedia kredensi kunci API tertentu
Kebijakan ini memungkinkan identitas beban kerja untuk mengambil kunci API hanya dari penyedia kredensi tertentu. Penyedia kredensi ARN di blok membatasi akses ke penyedia Resource itu.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetResourceApiKey", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetResourceApiKey" ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default/workload-identity/<workload-identity-name>", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default/api-key/<provider-name>" ] } ] }
Batasi akses ke penyedia kredensi OAuth2 tertentu
Kebijakan ini memungkinkan identitas beban kerja untuk mengambil token OAuth2 hanya dari penyedia kredensi OAuth2 tertentu.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetResourceOauth2Token", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetResourceOauth2Token" ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default/workload-identity/<workload-identity-name>", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default/oauth2-credential-provider/<provider-name>" ] } ] }
Izinkan akses beberapa identitas beban kerja ke penyedia kredensi
Kebijakan ini memungkinkan beberapa identitas beban kerja untuk mengambil kunci API dari penyedia kredensi yang sama.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetResourceApiKeyMultipleIdentities", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetResourceApiKey" ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default/workload-identity/agent-1", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default/workload-identity/agent-2", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default/workload-identity/agent-3", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default/api-key/<provider-name>" ] } ] }
Tolak akses ke penyedia kredensi tertentu
Anda dapat secara eksplisit menolak akses identitas beban kerja ke penyedia kredensi tertentu menggunakan pernyataan. Deny Pernyataan penolakan lebih diutamakan daripada pernyataan Izinkan, membuatnya berguna untuk membuat pagar pembatas.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAccessToSensitiveProvider", "Effect": "Deny", "Action": [ "bedrock-agentcore:GetResourceApiKey", "bedrock-agentcore:GetResourceOauth2Token" ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default/api-key/<sensitive-provider-name>", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default/oauth2-credential-provider/<sensitive-provider-name>" ] } ] }
Gunakan identitas beban kerja terpisah untuk penyedia kredensi yang berbeda
Jika Anda memerlukan agen yang berbeda untuk mengakses penyedia kredensi yang berbeda, buat identitas beban kerja terpisah dengan peran IAM terpisah. Setiap peran IAM hanya mencakup penyedia kredensi yang dibutuhkan agen.
Misalnya, jika Agen A hanya mengakses Penyedia X dan Agen B hanya boleh mengakses Penyedia Y:
-
Buat identitas beban kerja
agent-adan identitas beban kerjaagent-b -
Buat peran IAM
AgentARoledengan kebijakan yang hanya mengizinkan akses ke Penyedia X -
Buat peran IAM
AgentBRoledengan kebijakan yang hanya mengizinkan akses ke Penyedia Y -
Kaitkan setiap identitas beban kerja dengan peran IAM yang sesuai
Kebijakan IAM untuk Agen A (akses ke Penyedia X saja)
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentAAccessProviderX", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetResourceApiKey" ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default/workload-identity/agent-a", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default/api-key/provider-x" ] } ] }
Kebijakan IAM untuk Agen B (akses ke Penyedia Y saja)
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentBAccessProviderY", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetResourceApiKey" ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:workload-identity-directory/default/workload-identity/agent-b", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default", "arn:aws:bedrock-agentcore:us-east-1:<account_id>:token-vault/default/api-key/provider-y" ] } ] }
Langkah-langkah implementasi
Untuk menerapkan kontrol akses berbasis identitas beban kerja untuk penyedia kredensi:
-
Identifikasi identitas beban kerja Anda — Gunakan
aws bedrock-agentcore-control list-workload-identitiesuntuk mencantumkan semua identitas beban kerja di akun Anda. Untuk informasi tentang membuat dan mengelola identitas beban kerja, lihat Mengelola identitas beban kerja dengan Identitas. AgentCore -
Tentukan ARN penyedia kredensi — Identifikasi penyedia kredensi tertentu yang ingin Anda kendalikan aksesnya. ARN penyedia kredensi mengikuti format ini:
-
arn:aws:bedrock-agentcore:<region>:<account_id>:token-vault/default/api-key/<provider-name> -
arn:aws:bedrock-agentcore:<region>:<account_id>:token-vault/default/oauth2-credential-provider/<provider-name>
-
-
Buat kebijakan IAM - Tulis kebijakan IAM yang menentukan identitas beban kerja mana yang dapat mengakses penyedia kredensi mana
-
Lampirkan kebijakan ke peran — Lampirkan kebijakan ke peran IAM yang digunakan oleh agen atau aplikasi Anda
-
Kontrol akses uji — Verifikasi bahwa hanya identitas beban kerja resmi yang dapat mengakses penyedia kredensi yang ditentukan
Praktik terbaik
-
Gunakan nama deskriptif untuk identitas beban kerja agar manajemen kebijakan lebih mudah
-
Sertakan ARN penyedia kredensi di
Resourceblok ke cakupan akses ke penyedia tertentu, daripada memberikan akses ke semua penyedia di akun -
Gunakan identitas beban kerja terpisah dan peran IAM saat agen yang berbeda memerlukan akses ke penyedia kredensi yang berbeda
-
Gunakan
Denypernyataan eksplisit untuk membuat pagar pembatas yang mencegah akses ke penyedia kredensi sensitif terlepas dari kebijakan lainnya -
Secara teratur mengaudit dan meninjau kebijakan akses untuk memastikan mereka selaras dengan persyaratan keamanan Anda
-
Pertimbangkan untuk menggunakan ketentuan kebijakan IAM untuk kontrol akses tambahan berdasarkan waktu, alamat IP, atau faktor lainnya
-
Uji kebijakan di lingkungan pengembangan sebelum menerapkannya pada beban kerja produksi