Gunakan agen Amazon Bedrock untuk mengotomatiskan pembuatan kontrol entri akses di Amazon EKS melalui petunjuk berbasis teks - AWS Prescriptive Guidance

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Gunakan agen Amazon Bedrock untuk mengotomatiskan pembuatan kontrol entri akses di Amazon EKS melalui petunjuk berbasis teks

Keshav Ganesh dan Sudhanshu Saurav, Amazon Web Services

Ringkasan

Organizations menghadapi tantangan dalam mengelola kontrol akses dan penyediaan sumber daya ketika beberapa tim perlu bekerja dengan cluster Amazon Elastic Kubernetes Service (Amazon EKS) bersama. Layanan Kubernetes yang dikelola seperti Amazon EKS telah menyederhanakan operasi klaster. Namun, overhead administratif untuk mengelola akses tim dan izin sumber daya tetap kompleks dan memakan waktu.

Pola ini menunjukkan bagaimana agen Amazon Bedrock dapat membantu Anda mengotomatiskan manajemen akses klaster Amazon EKS. Otomatisasi ini memungkinkan tim pengembangan untuk fokus pada pengembangan aplikasi inti mereka daripada berurusan dengan pengaturan dan manajemen kontrol akses. Anda dapat menyesuaikan agen Amazon Bedrock untuk melakukan tindakan untuk berbagai tugas melalui petunjuk bahasa alami yang sederhana.

Dengan menggunakan AWS Lambda fungsi sebagai grup tindakan, agen Amazon Bedrock dapat menangani tugas seperti membuat entri akses pengguna dan mengelola kebijakan akses. Selain itu, agen Amazon Bedrock dapat mengonfigurasi asosiasi identitas pod yang memungkinkan akses ke sumber daya AWS Identity and Access Management (IAM) untuk pod yang berjalan di klaster. Dengan menggunakan solusi ini, organisasi dapat merampingkan administrasi klaster Amazon EKS mereka dengan petunjuk berbasis teks sederhana, mengurangi overhead manual, dan meningkatkan efisiensi pengembangan secara keseluruhan.

Prasyarat dan batasan

Prasyarat

Batasan

  • Pelatihan dan dokumentasi mungkin diperlukan untuk membantu memastikan kelancaran adopsi dan penggunaan teknik ini secara efektif. Menggunakan Amazon Bedrock, Amazon EKS, Lambda, OpenSearch Amazon Service, dan OpenAPI melibatkan kurva pembelajaran yang signifikan bagi pengembang dan tim. DevOps

  • Beberapa Layanan AWS tidak tersedia di semua Wilayah AWS. Untuk ketersediaan Wilayah, lihat layanan AWS menurut Wilayah. Untuk titik akhir tertentu, lihat Titik akhir dan kuota layanan, dan pilih tautan untuk layanan.

Arsitektur

Diagram berikut menunjukkan alur kerja dan komponen arsitektur untuk pola ini.

Alur kerja dan komponen untuk membuat kontrol akses di Amazon EKS dengan agen Amazon Bedrock.

Solusi ini melakukan langkah-langkah berikut:

  1. Pengguna berinteraksi dengan agen Amazon Bedrock dengan mengirimkan prompt atau kueri yang berfungsi sebagai masukan bagi agen untuk memproses dan mengambil tindakan.

  2. Berdasarkan prompt, agen Amazon Bedrock memeriksa skema OpenAPI untuk mengidentifikasi API yang benar untuk ditargetkan. Jika agen Amazon Bedrock menemukan panggilan API yang benar, permintaan akan masuk ke grup tindakan yang terkait dengan fungsi Lambda yang mengimplementasikan tindakan ini.

  3. Jika API yang relevan tidak ditemukan, agen Amazon Bedrock akan menanyakan koleksi tersebut OpenSearch . OpenSearch Koleksinya menggunakan konten basis pengetahuan terindeks yang bersumber dari bucket Amazon S3 yang berisi Panduan Pengguna Amazon EKS.

  4. OpenSearch Koleksi mengembalikan informasi kontekstual yang relevan ke agen Amazon Bedrock.

  5. Untuk permintaan yang dapat ditindaklanjuti (yang cocok dengan operasi API), agen Amazon Bedrock mengeksekusi dalam cloud pribadi virtual (VPC) dan memicu fungsi Lambda.

  6. Fungsi Lambda melakukan tindakan yang didasarkan pada input pengguna di dalam klaster Amazon EKS.

  7. Bucket Amazon S3 untuk kode Lambda menyimpan artefak yang memiliki kode dan logika yang ditulis untuk fungsi Lambda.

Alat

Layanan AWS

  • Amazon Bedrock adalah layanan yang dikelola sepenuhnya yang membuat model foundation berkinerja tinggi (FMs) dari startup AI terkemuka dan Amazon tersedia untuk Anda gunakan melalui API terpadu.

  • AWS CloudFormationmembantu Anda menyiapkan AWS sumber daya, menyediakannya dengan cepat dan konsisten, dan mengelolanya sepanjang siklus hidupnya di seluruh Akun AWS dan. Wilayah AWS

  • Amazon Elastic Kubernetes Service (Amazon EKS) membantu Anda menjalankan AWS Kubernetes tanpa perlu menginstal atau memelihara control plane atau node Kubernetes Anda sendiri.

  • AWS Identity and Access Management (IAM) membantu Anda mengelola akses ke AWS sumber daya dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.

  • AWS Lambdaadalah layanan komputasi yang membantu Anda menjalankan kode tanpa perlu menyediakan atau mengelola server. Ini menjalankan kode Anda hanya bila diperlukan dan skala secara otomatis, jadi Anda hanya membayar untuk waktu komputasi yang Anda gunakan.

  • Amazon OpenSearch Service adalah layanan terkelola yang membantu Anda menyebarkan, mengoperasikan, dan menskalakan OpenSearch klaster di. AWS Cloud Fitur koleksinya membantu Anda mengatur data dan membangun basis pengetahuan komprehensif yang dapat digunakan asisten AI seperti agen Amazon Bedrock.

  • Amazon Simple Storage Service (Amazon S3) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.

Alat-alat lainnya

  • eksctl adalah utilitas baris perintah untuk membuat dan mengelola cluster Kubernetes di Amazon EKS.

Repositori kode

Kode untuk pola ini tersedia di repositori GitHub eks-access-controls-bedrock-agent.

Praktik terbaik

  • Pertahankan keamanan setinggi mungkin saat menerapkan pola ini. Pastikan klaster Amazon EKS bersifat pribadi, memiliki izin akses terbatas, dan semua sumber daya berada di dalam cloud pribadi virtual (VPC). Untuk informasi tambahan, lihat Praktik terbaik untuk keamanan dalam dokumentasi Amazon EKS.

  • Gunakan kunci terkelola AWS KMS pelanggan sedapat mungkin, dan berikan izin akses terbatas kepada mereka.

  • Ikuti prinsip hak istimewa terkecil dan berikan izin minimum yang diperlukan untuk melakukan tugas. Untuk informasi selengkapnya, lihat Berikan hak istimewa terkecil dan praktik terbaik Keamanan dalam dokumentasi IAM.

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Kloning repositori.

Untuk mengkloning repositori pola ini, jalankan perintah berikut di workstation lokal Anda:

git clone https://github.com/aws-samples/eks-access-controls-bedrock-agent.git
AWS DevOps

Dapatkan Akun AWS ID.

Untuk mendapatkan Akun AWS ID, gunakan langkah-langkah berikut:

  1. Buka shell di folder root repo kloning,. eks-access-controls-bedrock-agent

  2. Untuk mendapatkan Akun AWS ID Anda, navigasikan ke direktori kloning dan jalankan perintah berikut:

    AWS_ACCOUNT=$(aws sts get-caller-identity --query "Account" --output text)

Perintah ini menyimpan Akun AWS ID Anda dalam AWS_ACCOUNT variabel.

AWS DevOps

Buat bucket S3 untuk kode Lambda.

Untuk menerapkan solusi ini, Anda harus membuat tiga bucket Amazon S3 yang melayani tujuan berbeda, seperti yang ditunjukkan pada diagram arsitektur. Bucket S3 adalah untuk kode Lambda, basis pengetahuan, dan skema OpenAPI.

Untuk membuat bucket kode Lambda, gunakan langkah-langkah berikut:

  1. Untuk membuat bucket S3 untuk kode Lambda, jalankan perintah berikut:

    aws s3 mb s3://bedrock-agent-lambda-artifacts-${AWS_ACCOUNT} --region us-east-1
  2. Untuk menginstal ketergantungan kode Lambda, jalankan perintah berikut:

    cd eks-lambda npm install tsc cd .. && cd opensearch-lambda npm install tsc cd ..
  3. Untuk mengemas kode dan mengunggahnya ke bucket S3 untuk Lambda, jalankan perintah berikut:

    aws cloudformation package \ --template-file eks-access-controls.yaml \ --s3-bucket bedrock-agent-lambda-artifacts-${AWS_ACCOUNT} \ --output-template-file eks-access-controls-template.yaml \ --region us-east-1

Perintah package membuat CloudFormation template baru (eks-access-controls-template.yaml) yang berisi:

  • Referensi ke kode fungsi Lambda yang disimpan di bucket S3 Anda.

  • Definisi untuk semua AWS infrastruktur yang diperlukan termasuk VPC, subnet, agen Amazon Bedrock, dan koleksi. OpenSearch Anda dapat menggunakan template ini untuk menyebarkan solusi lengkap dengan menggunakan CloudFormation.

AWS DevOps

Buat bucket S3 untuk basis pengetahuan.

Untuk membuat bucket Amazon S3 untuk basis pengetahuan, gunakan langkah-langkah berikut:

  1. Untuk membuat bucket Amazon S3 untuk basis pengetahuan, jalankan perintah berikut:

    aws s3 mb s3://eks-knowledge-base-${AWS_ACCOUNT} --region us-east-1
  2. Untuk mengunduh Panduan Pengguna Amazon EKS dan menyimpannya di direktori, jalankan perintah berikut:

    mkdir dataSource cd dataSource curl https://docs.aws.amazon.com/pdfs/eks/latest/userguide/eks-ug.pdf -o eks-user-guide.pdf
  3. Untuk mengunggah panduan pengguna ke bucket S3 yang Anda buat di langkah 1, jalankan perintah berikut:

    aws s3 cp eks-user-guide.pdf s3://eks-knowledge-base-${AWS_ACCOUNT} \ --region us-east-1 \
  4. Untuk kembali ke direktori root, jalankan perintah berikut:

    cd ..
AWS DevOps

Buat bucket S3 untuk skema OpenAPI.

Untuk membuat bucket Amazon S3 untuk skema OpenAPI, gunakan langkah-langkah berikut:

  1. Untuk membuat bucket S3, jalankan perintah berikut:

    aws s3 mb s3://eks-openapi-schema-${AWS_ACCOUNT} --region us-east-1
  2. Untuk mengunggah skema OpenAPI ke bucket S3, jalankan perintah berikut:

    aws s3 cp openapi-schema.yaml s3://eks-openapi-schema-${AWS_ACCOUNT} --region us-east-1
AWS DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Menyebarkan CloudFormation tumpukan.

Untuk menyebarkan CloudFormation tumpukan, gunakan file CloudFormation template eks-access-controls-template.yaml yang Anda buat sebelumnya. Untuk petunjuk selengkapnya, lihat Membuat tumpukan dari CloudFormation konsol di CloudFormation dokumentasi.

catatan

Penyediaan OpenSearch indeks dengan CloudFormation template membutuhkan waktu sekitar 10 menit.

Setelah tumpukan dibuat, buat catatan VPC_ID dan PRIVATE_SUBNET ID s.

AWS DevOps

Buat cluster Amazon EKS.

Untuk membuat cluster Amazon EKS di dalam VPC, gunakan langkah-langkah berikut:

  1. Buat salinan file eks-config.yaml konfigurasi, dan beri nama salinannya sebagaieks-deploy.yaml.

  2. Buka eks-deploy.yaml di editor teks. Kemudian, ganti nilai placeholder berikut dengan nilai dari tumpukan yang diterapkan:VPC_ID,, dan PRIVATE_SUBNET1 PRIVATE_SUBNET2

  3. Untuk membuat cluster dengan menggunakan utilitas eksctl, jalankan perintah berikut:

    eksctl create cluster -f eks-deploy.yaml
    catatan

    Proses pembuatan cluster ini bisa memakan waktu hingga 15-20 menit untuk menyelesaikannya.

  4. Untuk memverifikasi bahwa cluster berhasil dibuat, jalankan perintah berikut:

    aws eks describe-cluster --name --query "cluster.status" aws eks update-kubeconfig --name --region kubectl get nodes

Hasil yang diharapkan adalah sebagai berikut:

  • Status klaster adalahACTIVE.

  • Perintah kubectl get nodes menunjukkan bahwa semua node dalam Ready keadaan.

AWS DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Buat koneksi antara kluster Amazon EKS dan fungsi Lambda.

Untuk mengatur izin jaringan dan IAM agar fungsi Lambda dapat berkomunikasi dengan klaster Amazon EKS, gunakan langkah-langkah berikut:

  1. Untuk mengidentifikasi peran IAM yang dilampirkan ke fungsi Lambda, buka AWS Management Console dan temukan fungsi Lambda bernama. bedrock-agent-eks-access-control Catat Nama Sumber Daya Amazon (ARN) dari peran IAM.

  2. Untuk membuat entri akses di klaster Amazon EKS untuk peran IAM fungsi Lambda, jalankan perintah berikut:

    aws eks create-access-entry --cluster-name eks-testing-cluster --principal-arn <principal-Role-ARN>
  3. Untuk menetapkan AmazonEKSClusterAdminPolicy izin ke peran ini, jalankan perintah berikut:

    aws eks associate-access-policy --cluster-name eks-testing-cluster --principal-arn <principal-Role-ARN> --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy --access-scope type=cluster

    Untuk informasi selengkapnya, lihat Mengaitkan kebijakan akses dengan entri akses dan Amazon EKSCluster AdminPolicy di dokumentasi Amazon EKS.

  4. Temukan grup keamanan klaster Amazon EKS. Tambahkan aturan masuk untuk mengizinkan lalu lintas jaringan masuk dari fungsi Lambda ke kluster Amazon EKS.

    Gunakan nilai berikut untuk aturan masuk:

AWS DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Uji agen Amazon Bedrock.

Sebelum menguji agen Amazon Bedrock, pastikan Anda melakukan hal berikut:

  • Uji dengan peran non-produksi terlebih dahulu.

  • Dokumentasikan setiap perubahan yang dilakukan pada akses cluster.

  • Miliki rencana untuk mengembalikan perubahan jika diperlukan.

Untuk mengakses agen Amazon Bedrock, gunakan langkah-langkah berikut:

  1. Masuk ke AWS Management Console menggunakan peran IAM dengan izin Amazon Bedrock, dan buka konsol Amazon Bedrock di. https://console.aws.amazon.com/bedrock/

  2. Pilih Agen dari panel navigasi kiri. Kemudian, pilih agen yang dikonfigurasi di bagian Agen.

  3. Untuk menguji agen, coba contoh petunjuk berikut yang Anda ganti Principal-ARN-OF-ROLE dengan ARN peran IAM yang sebenarnya:

  • Untuk membuat entri akses untuk setiap peran IAM yang ingin Anda berikan akses ke kluster EKS, gunakan prompt berikut: Create an access entry in cluster eks-testing-new for a role whose principal arn is <Principal-ARN-OF-ROLE> with access policy as AmazonEKSAdminPolicy

    Hasil yang diharapkan:

    • Agen harus mengkonfirmasi pembuatan entri akses.

    • Untuk memverifikasi, periksa menggunakan AWS Management Console atau menggunakan Amazon EKS API dan jalankan perintah berikut: aws eks list-access-entries --cluster-name ekscluster

  • Untuk menjelaskan entri akses yang Anda buat, gunakan prompt berikut: Describe an access entry in cluster eks-testing-new whose principal arn is <Principal-ARN-OF-ROLE>

    Hasil yang diharapkan:

    • Agen harus mengembalikan detail tentang entri akses.

    • Detailnya harus sesuai dengan apa yang Anda konfigurasikan sebelumnya untuk entri akses.

  • Untuk menghapus entri akses yang Anda buat, gunakan prompt berikut: Delete the access entry in cluster eks-testing-new whose principal arn is <Principal-ARN-OF-ROLE>

    Hasil yang diharapkan:

    • Agen harus mengkonfirmasi penghapusan entri akses.

    • Untuk memverifikasi, periksa menggunakan AWS Management Console atau menggunakan Amazon EKS API dan jalankan perintah berikut: aws eks list-access-entries --cluster-name ekscluster

Anda juga dapat meminta agen untuk melakukan tindakan untuk asosiasi EKS Pod Identity. Untuk detail selengkapnya, lihat Pelajari cara EKS Pod Identity memberikan akses Pod ke Layanan AWS dalam dokumentasi Amazon EKS.

AWS DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Pembersihan sumber daya

Untuk membersihkan sumber daya yang dibuat pola ini, gunakan prosedur berikut. Tunggu setiap langkah penghapusan selesai sebelum melanjutkan ke langkah berikutnya.

Awas

Prosedur ini akan menghapus semua sumber daya yang dibuat oleh tumpukan ini secara permanen. Pastikan Anda telah mencadangkan data penting apa pun sebelum melanjutkan.

  1. Untuk menghapus cluster Amazon EKS, jalankan perintah berikut:

    eksctl delete cluster -f eks-deploy.yaml
    catatan

    Operasi ini bisa memakan waktu 15-20 menit untuk menyelesaikannya.

  2. Untuk menghapus bucket Amazon S3, jalankan perintah berikut:

    • Untuk mengosongkan ember Lambda:

      aws s3 rm s3://bedrock-agent-lambda-artifacts-${AWS_ACCOUNT} --recursive
    • Untuk mengosongkan ember basis pengetahuan:

      aws s3 rm s3://eks-knowledge-base-${AWS_ACCOUNT} –recursive
    • Untuk mengosongkan keranjang skema OpenAPI:

      aws s3 rm s3://bedrock-agent-openapi-schema-${AWS_ACCOUNT} –recursive
    • Untuk menghapus ember kosong:

      aws s3 rb s3://bedrock-agent-lambda-artifacts-${AWS_ACCOUNT} aws s3 rb s3://eks-knowledge-base-${AWS_ACCOUNT} aws s3 rb s3://bedrock-agent-openapi-schema-${AWS_ACCOUNT}
  3. Untuk menghapus CloudFormation tumpukan, jalankan perintah berikut:

    aws cloudformation delete-stack \ --stack-name
  4. Untuk memverifikasi penghapusan klaster Amazon EKS, jalankan perintah berikut:

    eksctl get clusters
  5. Untuk memverifikasi penghapusan bucket Amazon S3, jalankan perintah berikut:

    • Untuk memverifikasi penghapusan bucket Lambda:

      aws s3 ls | grep "bedrock-agent-lambda-artifacts"
    • Untuk memverifikasi penghapusan bucket basis pengetahuan:

      aws s3 ls | grep "eks-knowledge-base"
    • Untuk memverifikasi penghapusan bucket skema OpenAPI:

      aws s3 ls | grep "bedrock-agent-openapi-schema"
  6. Untuk memverifikasi penghapusan tumpukan, jalankan perintah berikut:

    aws cloudformation list-stacks \--query 'StackSummaries[?StackName==``]'

    Jika tumpukan gagal dihapus, lihat Pemecahan Masalah.

AWS DevOps

Pemecahan Masalah

IsuSolusi

Kode kesalahan bukan nol dikembalikan selama pengaturan lingkungan.

Verifikasi bahwa Anda menggunakan folder yang benar saat menjalankan perintah apa pun untuk menerapkan solusi ini. Untuk informasi selengkapnya, lihat file First_Deploy.md di repositori pola ini.

Fungsi Lambda tidak dapat melakukan tugas.

Pastikan konektivitas diatur dengan benar dari fungsi Lambda ke cluster Amazon EKS.

Agen meminta tidak mengenali. APIs

Menerapkan kembali solusinya. Untuk informasi selengkapnya, lihat file RE_DEPLOY.md di repositori pola ini.

Tumpukan gagal dihapus.

Upaya awal untuk menghapus tumpukan mungkin gagal. Kegagalan ini dapat terjadi karena masalah ketergantungan dengan sumber daya khusus yang dibuat untuk OpenSearch koleksi yang melakukan pengindeksan untuk basis pengetahuan. Untuk menghapus tumpukan, coba lagi operasi hapus dengan mempertahankan sumber daya kustom.

Sumber daya terkait

AWS Blog

Dokumentasi Amazon Bedrock

Dokumentasi Amazon EKS