View a markdown version of this page

Siapkan otorisasi masuk untuk gateway Anda - Batuan Dasar Amazon AgentCore

Siapkan otorisasi masuk untuk gateway Anda

Sebelum Anda membuat gateway Anda, Anda harus mengatur otorisasi masuk. Otorisasi masuk memvalidasi pengguna yang mencoba mengakses target melalui gateway Anda. AgentCore AgentCore mendukung jenis otorisasi masuk berikut:

  • JSON Web Token (JWT) — Token yang aman dan ringkas yang digunakan untuk otorisasi. Setelah membuat JWT, Anda menentukannya sebagai konfigurasi otorisasi saat Anda membuat gateway. Anda dapat membuat JWT dengan salah satu penyedia identitas di pengaturan dan konfigurasi Penyedia.

  • Identitas IAM — Mengotorisasi melalui kredensil identitas AWS IAM yang mencoba mengakses gateway.

  • Jenis otorisasi yang dibongkar — Gateway tidak membuat keputusan otorisasi sendiri dan sebagai gantinya menurunkan otorisasi ke komponen lain, seperti target hilir, mesin kebijakan yang terpasang pada gateway, atau fungsi Lambda pencegat. Kategori ini hanya mencakup Otentikasi dan Tanpa Otorisasi. Untuk detail dan panduan, lihat Otorisasi masuk yang tidak dimuat.

catatan

Jika Anda menggunakan Konsol AWS Manajemen atau AgentCore CLI untuk membuat gateway, Anda dapat membuat konfigurasi otorisasi masuk default menggunakan Amazon Cognito selama pembuatan gateway. Jika Anda berencana untuk menggunakan konfigurasi otorisasi default, Anda dapat melewati prasyarat ini.

Jika Anda tidak berencana untuk menggunakan konfigurasi otorisasi default menggunakan Amazon Cognito, pilih topik yang sesuai dengan jenis otorisasi yang akan digunakan untuk mempelajari cara mengaturnya:

IAM-based otorisasi masuk

IAM-based otorisasi masuk memungkinkan Anda menggunakan kredensil IAM pemanggil gateway untuk otorisasi. Anda dapat menggunakan opsi ini jika Anda ingin membuat identitas IAM di mana pengguna yang memanggil gateway Anda dapat diautentikasi.

Untuk mengatur IAM-based otorisasi masuk

  1. Buat atau gunakan identitas IAM yang ada untuk penelepon gateway Anda.

  2. Buat kebijakan IAM berbasis identitas yang berisi izin berikut:

    • bedrock-agentcore:InvokeGateway— Setelah Anda membuat gateway, Anda harus mengubah kebijakan ini sedemikian rupa sehingga Resource bidang tersebut dicakup ke gateway yang Anda buat sebagai praktik terbaik keamanan.

  3. Lampirkan kebijakan ke identitas pemanggil gateway.

Contoh kebijakan

Contoh berikut menunjukkan kebijakan yang dapat Anda lampirkan ke identitas untuk memungkinkannya memanggil gateway dengan ID my-gateway-12345

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGatewayInvocation", "Effect": "Allow", "Action": [ "bedrock-agentcore:InvokeGateway" ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/my-gateway-12345" ] } ] }

Sumber Daya

Otorisasi masuk berbasis JSON Web Token (JWT)

JSON Web Token (JWT) adalah token aman dan ringkas yang digunakan untuk otorisasi. Anda dapat membuat JWT dengan penyedia identitas yang didukung. Setelah Anda membuat JWT, Anda dapat mengambilnya dan menentukannya sebagai konfigurasi otorisasi saat Anda membuat gateway.

penting

Menggunakan otorisasi masuk berdasarkan token JWT akan menghasilkan pencatatan beberapa klaim token JWT. CloudTrail Entri ini mencakup Subjek dari token identitas web yang disediakan. Kami menyarankan Anda menghindari penggunaan informasi identitas pribadi (PII) apa pun di bidang ini. Misalnya, Anda bisa menggunakan GUID atau pengenal berpasangan, seperti yang disarankan dalam spesifikasi OIDC.

Anda dapat menggunakan AgentCore CLI untuk mengatur JWT default, atau membuatnya secara manual dengan penyedia identitas yang didukung. Untuk mempelajari lebih lanjut tentang berbagai metode untuk menyiapkan JWT, pilih dari topik berikut:

Siapkan JWT default

AgentCore CLI memungkinkan Anda dengan mudah membuat konfigurasi otorisasi default menggunakan Amazon Cognito yang kemudian dapat Anda gunakan saat membuat gateway. Saat Anda menjalankanagentcore create, CLI meminta Anda untuk mengonfigurasi otorisasi masuk dan dapat secara otomatis menyiapkan kumpulan pengguna Amazon Cognito untuk Anda.

agentcore create

Setelah perintah selesai, AgentCore CLI memberikan informasi otentikasi dan otorisasi:

  • Anda akan menggunakan konfigurasi authorizer saat membuat gateway.

  • Untuk otorisasi masuk saat menjalankan gateway Anda, Anda harus mendapatkan token akses dengan menggunakan ID klien, rahasia klien, dan titik akhir token. Untuk informasi selengkapnya tentang cara mendapatkan token akses Anda, lihat Contoh di Menggunakan AgentCore gateway atau Titik akhir penerbit token di Panduan Pengembang Amazon Cognito.

Siapkan JWT secara manual

Amazon Bedrock AgentCore mendukung JWT dari semua penyedia identitas. Anda dapat melihat beberapa contoh di pengaturan dan konfigurasi Penyedia.

Dalam proses pembuatan JWT, perhatikan nilai-nilai berikut, yang akan Anda isi CustomJWTAuthorizerConfigurationsaat Anda membuat gateway, jika berlaku untuk kasus penggunaan Anda:

  • Discovery URL — URL dari mana kredensi login dan titik akhir token dapat diambil.

  • ID Klien — Pengidentifikasi publik dari aplikasi klien yang meminta token, divalidasi terhadap klaim. client_id

  • Rahasia klien — Kunci pribadi yang mengautentikasi akses untuk aplikasi klien untuk mengambil token.

  • Audiens yang diizinkan — Pengidentifikasi yang memvalidasi penerima atau konsumen token yang dituju melalui klaim. aud

  • Cakupan yang diizinkan — Cakupan yang menentukan batasan akses aplikasi ke akun pengguna. Untuk informasi selengkapnya, lihat Lingkup OAuth.

  • Nilai klaim wajib lainnya — Bergantung pada otorisasi yang Anda gunakan, Anda mungkin perlu menentukan bidang dan aturan klaim khusus yang diperlukan agar sesuai dengan nilai bidang klaim untuk autentikasi.

Anda memerlukan nilai-nilai ini untuk melakukan hal berikut:

  • Buat gateway dengan menentukan nilai dalam konfigurasi authorizer.

  • Dapatkan kredensi otorisasi untuk memanggil gateway. Untuk mempelajari cara mendapatkan kredensil Anda, cari dokumentasi penyedia identitas Anda. Misalnya, jika Anda menggunakan Amazon Cognito, lihat Titik akhir penerbit token di Panduan Pengembang Amazon Cognito.

Iklan lingkup dalam tantangan otentikasi

Ketika klien mengirim permintaan ke JWT-authorized gateway tanpa token akses yang valid, gateway mengembalikan respons kesalahan dengan WWW-Authenticate header yang mengiklankan cakupan OAuth yang diperlukan. Ini mengikuti format tantangan token RFC 6750 Bearer dan memungkinkan MCP-compliant klien untuk secara otomatis menemukan cakupan yang diperlukan untuk akuisisi token.

Gateway mengembalikan respons berikut tergantung pada kesalahan:

  • 401 Tidak Sah — Permintaan tidak memiliki token atau token yang tidak valid. WWW-AuthenticateHeader termasuk resource_metadata dan scope parameter.

  • 403 Terlarang — Token valid tetapi tidak mengandung cakupan yang diperlukan. WWW-AuthenticateHeader termasukerror="insufficient_scope",scope, dan resource_metadata parameter.

scopeNilai berisi cakupan yang dibatasi ruang yang dikonfigurasi sebagai cakupan yang Diizinkan di gateway. CustomJWTAuthorizerConfiguration resource_metadataNilai menunjuk ke dokumen Metadata Sumber Daya Terproteksi OAuth gateway di/.well-known/oauth-protected-resource, yang dapat diambil klien untuk menemukan server otorisasi dan cakupan yang didukung.

Gunakan penyedia identitas pribadi (VPC-hosted)

AgentCore Gateway mendukung otorisasi JWT-based masuk dengan penyedia identitas yang dihosting di dalam VPC Anda. Anda dapat mengonfigurasi privateEndpoint on customJWTAuthorizer untuk memungkinkan AgentCore untuk mencapai penemuan OIDC pribadi, token, dan titik akhir JWKS Anda tanpa memaparkannya ke internet publik.

Kepala IAM Anda harus memiliki iam:CreateServiceLinkedRole izin untukidentity-network.bedrock-agentcore.amazonaws.com, sehingga AgentCore Identity dapat membuat peran AWSServiceRoleForBedrockAgentCoreIdentity terkait layanan atas nama Anda jika belum ada.

privateEndpointIni berlaku untuk domain didiscoveryUrl. Jika penyedia identitas Anda menggunakan domain yang berbeda untuk titik akhir lainnya (misalnya, token atau titik akhir JWKS diselesaikan ke domain yang berbeda dari URL penemuan), gunakan untuk menentukan konfigurasi titik akhir pribadi terpisah privateEndpointOverrides untuk setiap domain tambahan.

Contoh berikut membuat gateway dengan penyedia identitas pribadi menggunakan kisi terkelola:

{ "name": "my-private-idp-gateway", "protocolType": "MCP", "roleArn": "arn:aws:iam::123456789012:role/my-gateway-role", "authorizerType": "CUSTOM_JWT", "authorizerConfiguration": { "customJWTAuthorizer": { "allowedAudience": [ "my-audience" ], "discoveryUrl": "https://my-idp.internal.example.com/.well-known/openid-configuration", "privateEndpoint": { "managedVpcResource": { "vpcIdentifier": "vpc-0abc123def456", "subnetIds": ["subnet-0abc123", "subnet-0def456"], "endpointIpAddressType": "IPV4", "securityGroupIds": ["sg-0abc123def"] } } } } }

Jika token atau titik akhir JWKS Anda menggunakan domain yang berbeda dari URL penemuan, tambahkan privateEndpointOverrides entri untuk setiap domain tambahan. Saat ini, hanya privateEndpointOverrides didukung dengan sumber daya Lattice yang dikelola sendiri:

{ ... "authorizerConfiguration": { "customJWTAuthorizer": { "allowedAudience": ["my-audience"], "discoveryUrl": "https://my-idp.internal.example.com/.well-known/openid-configuration", "privateEndpoint": { "selfManagedLatticeResource": { "resourceConfigurationIdentifier": "arn:aws:vpc-lattice:us-east-1:123456789012:resourceconfiguration/rcfg-abc123" } }, "privateEndpointOverrides": [ { "domain": "my-token-server.internal.example.com", "privateEndpoint": { "selfManagedLatticeResource": { "resourceConfigurationIdentifier": "arn:aws:vpc-lattice:us-east-1:123456789012:resourceconfiguration/rcfg-def456" } } } ] } } }

Untuk Lattice yang dikelola sendiri, pengaturan lintas akun, dan konfigurasi lanjutan, lihat Connect to private resources di VPC menggunakan VPC Lattice. Untuk panduan komprehensif yang mencakup skenario IDP pribadi masuk dan keluar, lihat Connect to private identity providers.

Otorisasi masuk yang dibongkar

Dengan otorisasi masuk yang diturunkan, gateway tidak membuat keputusan otorisasi sendiri. Sebagai gantinya, ia menurunkan otorisasi ke komponen lain:

  • Layanan target hilir, yang mengotorisasi permintaan yang diterimanya.

  • Mesin kebijakan yang terpasang pada gateway, yang mengevaluasi kebijakan akses.

  • Fungsi Lambda pencegat, yang menjalankan logika autentikasi atau otorisasi kustom Anda sebelum permintaan mencapai target Anda.

AgentCore menawarkan dua jenis yang diturunkan:

  • Authenticate only (AUTHENTICATE_ONLY) — Gateway memverifikasi tanda tangan SigV4 pemanggil untuk mengautentikasi pemanggil, tetapi tidak membuat keputusan otorisasi. Permintaan harus ditandatangani, tetapi pemanggil yang diautentikasi diteruskan ke target.

  • Tanpa Otorisasi (NONE) - Gateway tidak melakukan otentikasi atau otorisasi masuk. Permintaan dapat tidak diautentikasi, dan pemanggil apa pun diteruskan ke target.

Dengan salah satu jenis, Anda memutuskan di mana otorisasi sebenarnya diberlakukan:

  • Mesin kebijakan — Pasang mesin kebijakan ke gateway untuk mengevaluasi kebijakan akses secara terpusat. Ini adalah pola yang direkomendasikan untuk gateway produksi dan sering digunakan bersama dengan OAuth.

  • Fungsi Interceptor Lambda — Jalankan logika otentikasi atau otorisasi Anda sendiri sebelum permintaan mencapai target Anda. Ini direkomendasikan untuk gateway produksi ketika opsi otorisasi masuk bawaan tidak memenuhi persyaratan Anda.

  • Target hilir - Biarkan target menegakkan otorisasi atas permintaan yang diterimanya. Ini berguna untuk eksperimen dan orientasi progresif — misalnya, menempatkan gateway di depan runtime yang ada tanpa mengubah otentikasi dan otorisasi runtime — sehingga Anda dapat mengadopsi kemampuan gateway secara bertahap sementara runtime terus menerapkan autentikasi yang sudah dipercayainya.

penting

Jika Anda menurunkan otorisasi masuk dengan memilih salah satu AUTHENTICATE_ONLY atauNONE, AgentCore Gateway tidak memberlakukan otorisasi sendiri. Dalam skenario ini, Anda harus menurunkan otorisasi ke komponen terpisah — mesin kebijakan, fungsi Lambda pencegat, atau target hilir — jika tidak, pemanggil mana pun dapat mencapai target Anda.

Authenticate-only otorisasi

Dengan autentikasi hanya otorisasi (AUTHENTICATE_ONLY), gateway memverifikasi tanda tangan Signature Version 4 (SigV4) pemanggil untuk mengonfirmasi identitas mereka, tetapi tidak membuat keputusan otorisasi sendiri. Setiap prinsipal IAM yang diautentikasi dapat memanggil gateway terlepas dari izinnya, dan permintaan diteruskan ke target. Otorisasi didelegasikan ke layanan target hilir atau ke mesin kebijakan yang terpasang pada gateway.

penting

DenganAUTHENTICATE_ONLY, gateway tidak memberlakukan kebijakan otorisasi apa pun. Setiap SigV4-signed permintaan yang valid akan diteruskan ke target. Pastikan target hilir Anda menerapkan logika otorisasi mereka sendiri, atau lampirkan mesin kebijakan ke gateway untuk mengontrol akses. Tanpa otorisasi yang tepat pada tingkat kebijakan target atau gateway, pemanggil yang diautentikasi dapat mencapai layanan backend Anda.

Tanpa Otorisasi

Anda dapat membuat gateway yang dikonfigurasi tanpa otorisasi dengan menggunakanauthorizerType=NONE. Gateway tidak akan melakukan otorisasi apa pun pada permintaan gateway yang masuk dan permintaan dapat tidak diautentikasi.

penting

Jangan gunakan gateway Tanpa Otorisasi untuk beban kerja produksi kecuali Anda telah menerapkan semua praktik terbaik keamanan yang tercantum di bawah ini. Jika Anda memerlukan logika otentikasi khusus, pertimbangkan untuk menggunakan fungsi Lambda pencegat untuk menangani otentikasi sebelum permintaan mencapai target Anda.

Praktik Terbaik Keamanan

  1. Gunakan tombol bedrock-agentcore:GatewayAuthorizerType kondisi untuk allow/deny mengakses secara selektif dalam organisasi Anda untuk membuat gateway dengan authorizerType=NONE

  2. Jangan gunakan gateway Tanpa Otorisasi karena nyaman untuk pengujian. Mereka harus digunakan untuk gateway yang ingin Anda publikasikan tetapi telah menerapkan aturan dan pemeriksaan pembatasan khusus Anda sendiri untuk memastikan gateway publik Anda dapat menangani pengguna yang tidak diautentikasi

  3. Jangan gunakan gateway Tanpa Otorisasi dengan target yang mungkin merespons dengan informasi sensitif. Meskipun target dikonfigurasi dengan konfigurasi otorisasi mereka sendiri, yang terbaik adalah menambahkan lapisan keamanan lain pada gateway.

Onboard runtime yang ada tanpa mengubah autentikasi

Saat Anda memasangkan tipe inbound yang di-offload dengan tipe otorisasi keluar yang cocok yang meneruskan identitas pemanggil ke runtime, orientasi ke gateway bisa semudah menyetel penggantian titik akhir pada klien Anda yang ada — tidak diperlukan perubahan autentikasi:

  • Runtime IAM - Gabungkan otorisasi AUTHENTICATE_ONLY masuk dengan kredensi Caller IAM () otorisasi keluar. CALLER_IAM_CREDENTIALS Gateway mengautentikasi pemanggil SigV4 dan kemudian menandatangani permintaan ke runtime dengan identitas pemanggil yang sama, sehingga otorisasi IAM runtime yang ada terus berlaku tidak berubah. Untuk informasi selengkapnya, lihat Kredensi IAM Penelepon.

  • Runtime OAuth — Gabungkan otorisasi masuk Tanpa Otorisasi dengan otorisasi keluar token passthrough (). JWT_PASSTHROUGH Gateway meneruskan JWT masuk ke runtime tanpa modifikasi, sehingga runtime memvalidasi token persis seperti hari ini. (Token passthrough meneruskan token pembawa, sehingga memerlukan tipe masuk — otorisasi JWT-bearing masuk JWT atau. NONE Ini tidak tersedia denganAUTHENTICATE_ONLY, yaitu SigV4-based dan tidak membawa token pembawa.) Untuk informasi selengkapnya, lihat Passthrough Token.

    catatan

    Token passthrough (JWT_PASSTHROUGH) bukanlah pendekatan yang direkomendasikan untuk produksi. Saat Anda meneruskan token masuk tidak berubah, token yang sama diterima oleh gateway dan target hilir, jadi harus dicakup dengan ketat — misalnya, setiap audiens token (aud) harus dibatasi pada sumber daya yang dimaksud. Pola yang disarankan adalah pertukaran token on-behalf-of (OBO), di mana gateway menukar token pemanggil dengan token baru yang dicakup audiens untuk target alih-alih memutar ulang token pemanggil. Gunakan token passthrough untuk memudahkan eksperimen, pengujian, dan orientasi, dan pindah ke OBO untuk beban kerja produksi jangka panjang.

Awas

Konfigurasi penerusan identitas di bagian ini hanya mengandalkan runtime hilir untuk mengotorisasi permintaan; gateway tidak menambahkan otorisasi sendiri. Mereka dimaksudkan untuk pengujian, eksperimen, dan orientasi gangguan rendah. Untuk gateway produksi, terapkan otorisasi di gateway — konfigurasikan otorisasi masuk JWT atau IAM, lampirkan mesin kebijakan, atau gunakan fungsi Lambda pencegat. Untuk memastikan penelepon tidak dapat melewati gateway setelah Anda mengadopsinya, lihat Menerapkan lalu lintas melalui gateway.