View a markdown version of this page

Siapkan otorisasi keluar untuk gateway Anda - Batuan Dasar Amazon AgentCore

Siapkan otorisasi keluar untuk gateway Anda

Otorisasi keluar memungkinkan gateway Amazon Bedrock mengakses target AgentCore gateway dengan aman atas nama pengguna yang diautentikasi dan diotorisasi selama otorisasi masuk.

AgentCore Gateway mendukung jenis otorisasi keluar berikut:

  • Tidak ada otorisasi (tidak disarankan) - Beberapa jenis target memberi Anda opsi untuk melewati otorisasi keluar. Opsi yang kurang aman ini tidak disarankan.

  • IAM-based otorisasi keluar — Gunakan peran layanan gateway untuk mengautentikasi akses ke target gateway dengan AWS Signature Version 4 (Sig V4).

  • Caller IAM credentials — Gateway menggunakan kredensi IAM pemanggil untuk menandatangani permintaan ke target. Gateway mengasumsikan peran atas nama penelepon menggunakan Layanan Akses Federasi (FAS) dan menandatangani permintaan keluar dengan identitas pemanggil. Ini berguna ketika layanan target perlu mengotorisasi berdasarkan identitas pemanggil asli daripada peran layanan gateway.

  • OAuth — Kerangka otorisasi terbuka yang memungkinkan aplikasi klien mengakses sumber daya. Anda dapat menggunakan OAuth dengan penyedia identitas bawaan atau dengan yang khusus. Untuk informasi selengkapnya, lihat OAuth 2.0. Anda dapat menggunakan jenis hibah otorisasi OAuth berikut:

    • Pemberian kredensi klien — Machine-to-machine otentikasi (juga dikenal sebagai OAuth berkaki 2). Aplikasi klien mengakses sumber daya atas nama aplikasi, bukan atas nama pengguna.

    • Pemberian kode otorisasi — User-delegated akses (juga dikenal sebagai OAuth berkaki 3). Pengguna memberikan persetujuan untuk aplikasi klien untuk mengakses sumber daya atas nama pengguna.

    • Token exchange grant (On-behalf-of) — Gateway menukar token akses pengguna masuk dengan token akses cakupan baru yang menargetkan sumber daya hilir. Token yang dipertukarkan membawa identitas pengguna dan identitas agen, memungkinkan layanan hilir untuk menegakkan otorisasi halus di setiap lompatan tanpa memicu aliran persetujuan tambahan. Untuk informasi lebih lanjut, lihat pertukaran On-behalf-of token.

  • Token passthrough — Gateway melewati token otorisasi masuk langsung ke target tanpa modifikasi. Layanan target bertanggung jawab untuk memvalidasi token. Ini mengharuskan gateway untuk menggunakan otorisasi AUTHENTICATE_ONLY masuk sehingga token divalidasi tetapi dipertahankan untuk diteruskan.

  • Kunci API — Gunakan AgentCore layanan untuk menghasilkan kunci API untuk mengautentikasi akses ke target gateway.

Jenis otorisasi keluar yang dapat Anda atur bergantung pada jenis target gateway yang Anda otorisasi aksesnya:

Tipe target Tidak ada otorisasi Peran layanan gateway Kredensial IAM penelepon OAuth (kredensi klien) OAuth (kode otorisasi) OAuth (pertukaran token) Passthrough token Kunci API

Tahap API Gateway

Ya

Ya

Tidak

Tidak

Tidak

Tidak

Tidak

Ya

Fungsi Lambda

Tidak

Ya

Tidak

Tidak

Tidak

Tidak

Tidak

Tidak

Server MCP

Ya

Ya

Tidak

Ya

Ya

Ya

Tidak

Ya

Skema OpenAPI

Ya

Ya

Tidak

Ya

Ya

Ya

Tidak

Ya

Skema pandai besi

Tidak

Ya

Tidak

Ya

Tidak

Tidak

Tidak

Tidak

AgentCore Runtime (HTTP)

Tidak

Ya

Ya

Ya

Tidak

Tidak

Ya

Tidak

catatan

Jika Anda menggunakan templat penyedia integrasi sebagai target, tinjau jenis otorisasi yang didukung untuk berbagai templat di Built-in templat dari penyedia integrasi sebagai target.

Sebelum menambahkan target ke gateway Anda, Anda harus mengatur otorisasi untuk itu melalui salah satu metode yang didukung.

catatan

Anda dapat melewati prasyarat ini jika Anda berencana menggunakan AWS Management Console atau AgentCore CLI untuk membuat gateway Anda. Jika Anda menggunakan salah satu alat ini, Anda dapat membiarkan AgentCore secara otomatis membuat peran layanan untuk Anda dengan izin yang diperlukan untuk mengakses target. Setiap kali Anda menambahkan target, izin yang diperlukan akan secara otomatis dilampirkan ke peran layanan Anda.

Pilih topik untuk mempelajari cara mengatur jenis otorisasi tersebut:

Siapkan otorisasi IAM-based keluar dengan peran layanan gateway

IAM-based otorisasi keluar memungkinkan Anda menggunakan kredenal IAM peran layanan gateway untuk mengotorisasi dengan AWS Signature Version 4 (Sig V4). Opsi ini memungkinkan AgentCore layanan Amazon Bedrock mengautentikasi ke target gateway atas nama pemanggil gateway Anda.

Jika Anda menggunakan opsi ini, verifikasi bahwa peran layanan gateway memiliki bedrock-agentcore:InvokeGateway izin. Gateway menggunakan kredensi peran layanan untuk otentikasi selama pemanggilan.

Konfigurasi tambahan untuk server MCP dan target OpenAPI

Bila Anda menggunakan otorisasi IAM-based keluar dengan server MCP atau target OpenAPI, Anda harus menyediakan konfigurasi tambahan untuk penandatanganan Sigv4. DalamcredentialProviderConfigurations, sertakan iamCredentialProvider dengan bidang-bidang berikut:

  • layanan (wajib) - Nama AWS layanan yang digunakan untuk penandatanganan SigV4. Misalnya, bedrock-agentcore untuk server MCP yang dihosting di Amazon Bedrock AgentCore.

  • wilayah (opsional) - AWS Wilayah untuk penandatanganan SiGv4. Jika Anda tidak menentukan Region, gateway menggunakan Region sendiri.

Untuk target Lambda, API Gateway, dan Smithy, jangan sertakan bidang. iamCredentialProvider Jenis target ini hanya mendukung GATEWAY_IAM_ROLE konfigurasi dasar dengan credentialProviderType saja. Untuk informasi selengkapnya tentang menentukan konfigurasi penyedia kredensi, lihat Otorisasi peran layanan AgentCore Gateway (IAM).

Praktik terbaik keamanan untuk IAM-based otorisasi keluar

Peran eksekusi gateway dibagi di semua target yang dikonfigurasiGATEWAY_IAM_ROLE. Izinnya adalah batas atas untuk apa yang dapat dilakukan oleh penelepon resmi melalui gateway. Ikuti praktik terbaik ini untuk membatasi eksposur:

  • Cakupan peran eksekusi ke izin minimum — Berikan hanya izin yang diperlukan di semua target yang dikonfigurasi. Hindari kartu lebar Action atau Resource wildcard.

  • Gunakan gateway terpisah untuk batas kepercayaan yang berbeda — Jika target memiliki tingkat sensitivitas yang berbeda atau melayani beban kerja yang berbeda, terapkan di belakang gateway terpisah dengan peran eksekusi yang berbeda.

  • Gunakan mesin kebijakan untuk membatasi akses pemanggil — Pada gateway bersama, gunakan mesin kebijakan untuk mengontrol penelepon mana yang dapat memanggil target mana, sehingga membatasi radius ledakan izin pemanggil tunggal.

Siapkan otorisasi keluar dengan klien OAuth

Untuk mengatur otorisasi keluar dengan klien OAuth, Anda menggunakan layanan AgentCore Identity dan menentukan kredensional klien yang Anda terima dari membuat klien baik di penyedia identitas bawaan (lihat Penyiapan dan konfigurasi penyedia atau penyedia identitas kustom.

Untuk mengatur otorisasi keluar dengan klien OAuth

  1. Daftarkan aplikasi klien Anda dengan penyedia pihak ketiga yang didukung.

  2. Anda akan menerima ID klien, rahasia klien, dan mungkin nilai lain yang akan Anda referensikan saat menyiapkan otorisasi keluar.

  3. Ikuti salah satu langkah di bawah ini, tergantung pada kebutuhan Anda:

  4. Perhatikan ARN kredenal yang dihasilkan credentialProviderArn (di API) dan ARN rahasia Secrets AWS Manager secretArn (di API). Anda akan menggunakan nilai-nilai ini saat membuat target gateway Anda.

  5. (Jika Anda menggunakan peran layanan gateway kustom) Lampirkan kebijakan berbasis identitas berikut ke peran layanan gateway Anda:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "GetWorkloadAccessToken", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetWorkloadAccessToken", ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:123456789012:workload-identity-directory/default", "arn:aws:bedrock-agentcore:us-east-1:123456789012:workload-identity-directory/default/workload-identity/GatewayName-*" ] }, { "Sid": "GetResourceOauth2Token", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetResourceOauth2Token", ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:123456789012:token-vault/TokenVaultId/oauth2credentialprovider/CredentialName" ] }, { "Sid": "GetSecretValue", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", ], "Resource": [ "arn:aws:secretsmanager:us-east-1:123456789012:secret:SecretId" ] } ] }

    Ganti nilai bidang berikut:

    • Dalam GetWorkloadAccessToken pernyataan itu, ganti GatewayName dalam Resource daftar dengan nama gateway Anda.

    • Dalam GetResourceOauth2Token pernyataan tersebut, ganti nilai dalam Resource daftar dengan ARN dari kredensi yang baru saja Anda buat.

    • Dalam GetSecretValue pernyataan itu, ganti nilai dalam Resource daftar dengan ARN AWS rahasia yang dikembalikan dalam respons saat Anda menghasilkan kredensi.

Contoh untuk mengatur otorisasi klien OAuth

Contoh berikut menunjukkan cara mengatur otorisasi melalui klien OAuth untuk target gateway Anda:

contoh
AgentCore CLI
  1. Perintah AgentCore kredenal CLI harus dijalankan di dalam proyek agentcore yang ada. Jika Anda belum memilikinya, buat proyek terlebih dahulu denganagentcore create.

    agentcore add credential \ --name oauth-credential-provider \ --type oauth \ --discovery-url <DiscoveryUrl> \ --client-id <ClientId> \ --client-secret <ClientSecret> agentcore deploy
AWS CLI
  1. aws bedrock-agentcore-control create-oauth2-credential-provider \ --name oauth-credential-provider \ --credential-provider-vendor CustomOAuth2 \ --oauth2-provider-config-input '{ "customOAuth2ProviderConfig": { "oauthDiscovery": { "discoveryUrl": "<DiscoveryUrl>" }, "clientId": "<ClientId>", "clientSecret": "<ClientSecret>" } }'
Boto3
  1. import boto3 client = boto3.client("bedrock-agentcore-control") client.create_oauth2_credential_provider( name="oauth-credential-provider", credentialProviderVendor="CustomOAuth2", oauth2ProviderConfigInput={ "oauthDiscovery": { "discoveryUrl": "<DiscoveryUrl>" }, "clientId": "<ClientId>", "clientSecret": "<ClientSecret>" } )

Siapkan otorisasi keluar dengan kunci API

Untuk menyiapkan otorisasi keluar dengan kunci API, Anda menggunakan layanan AgentCore Identity dan menentukan kunci API yang Anda terima dari penyedia identitas yang didukung.

Untuk mengatur otorisasi keluar dengan klien OAuth

  1. Daftarkan aplikasi klien Anda dengan penyedia pihak ketiga yang didukung.

  2. Siapkan kunci API untuk layanan penyedia. Perhatikan nilai-nilai berikut, yang akan Anda tentukan saat menambahkan target gateway:

    • Lokasi kredensi — Apakah kunci API harus ditempatkan di header atau sebagai parameter kueri.

    • Awalan kredenal — Awalan untuk kredensi (mis. Pembawa).

  3. Ikuti salah satu langkah di bawah ini, tergantung pada kebutuhan Anda:

  4. Perhatikan nilai-nilai berikut, yang akan Anda tentukan saat menambahkan target gateway:

    • Penyedia kredensi ARN — Nama Sumber Daya Amazon (ARN) yang dihasilkan untuk penyedia kredensi.

    • Nama — Nama yang Anda berikan ke kunci API.

    • Rahasia ARN - AWS Rahasia Secrets Manager ARN yang dihasilkan untuk kunci API.

  5. (Jika Anda menggunakan peran layanan gateway kustom) Lampirkan kebijakan berbasis identitas berikut ke peran layanan gateway Anda:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "GetWorkloadAccessToken", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetWorkloadAccessToken", ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:123456789012:workload-identity-directory/default", "arn:aws:bedrock-agentcore:us-east-1:123456789012:workload-identity-directory/default/workload-identity/GatewayName-*" ] }, { "Sid": "GetResourceApiKey", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetResourceApiKey", ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:123456789012:token-vault/TokenVaultId/apikeycredentialprovider/Name" ] }, { "Sid": "GetSecretValue", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", ], "Resource": [ "arn:aws:secretsmanager:us-east-1:123456789012:secret:SecretId" ] } ] }

    Ganti nilai bidang berikut:

    • Dalam GetWorkloadAccessToken pernyataan itu, ganti GatewayName dalam Resource daftar dengan nama gateway Anda.

    • Dalam GetResourceApiKey pernyataan tersebut, ganti nilai dalam Resource daftar dengan ARN dari kredensi yang baru saja Anda buat.

    • Dalam GetSecretValue pernyataan itu, ganti nilai dalam Resource daftar dengan ARN AWS rahasia yang dikembalikan dalam respons saat Anda menghasilkan kredensi.

Contoh untuk menyetel kunci API

Contoh berikut menunjukkan cara menyetel kunci API untuk target gateway Anda:

contoh
AgentCore CLI
  1. Perintah AgentCore kredenal CLI harus dijalankan di dalam proyek agentcore yang ada. Jika Anda belum memilikinya, buat proyek terlebih dahulu denganagentcore create.

    agentcore add credential \ --name api-key-credential-provider \ --type api-key \ --api-key <API_KEY_VALUE> agentcore deploy
AWS CLI
  1. aws bedrock-agentcore-control create-api-key-credential-provider \ --name api-key-credential-provider \ --api-key <API_KEY_VALUE>
Boto3
  1. import boto3 client = boto3.client("bedrock-agentcore-control") client.create_api_key_credential_provider( name="api-key-credential-provider", apiKey="<API_KEY_VALUE>" )