Usa gli agenti Amazon Bedrock per automatizzare la creazione di controlli di accesso in Amazon EKS tramite istruzioni basate su testo - Prontuario AWS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Usa gli agenti Amazon Bedrock per automatizzare la creazione di controlli di accesso in Amazon EKS tramite istruzioni basate su testo

Creato da Keshav Ganesh (AWS) e Sudhanshu Saurav (AWS)

Riepilogo

Le organizzazioni devono affrontare sfide nella gestione dei controlli degli accessi e nel provisioning delle risorse quando più team devono lavorare con un cluster Amazon Elastic Kubernetes Service (Amazon EKS) condiviso. Un servizio Kubernetes gestito come Amazon EKS ha semplificato le operazioni del cluster. Tuttavia, il sovraccarico amministrativo legato alla gestione dell'accesso del team e delle autorizzazioni alle risorse rimane complesso e richiede molto tempo.

Questo modello mostra come gli agenti Amazon Bedrock possono aiutarti ad automatizzare la gestione degli accessi ai cluster Amazon EKS. Questa automazione consente ai team di sviluppo di concentrarsi sullo sviluppo delle applicazioni principali anziché occuparsi della configurazione e della gestione del controllo degli accessi. Puoi personalizzare un agente Amazon Bedrock per eseguire azioni per un'ampia varietà di attività tramite semplici istruzioni in linguaggio naturale.

Utilizzando AWS Lambda le funzioni come gruppi di azione, un agente Amazon Bedrock può gestire attività come la creazione di voci di accesso degli utenti e la gestione delle politiche di accesso. Inoltre, un agente Amazon Bedrock può configurare associazioni di identità dei pod che consentono l'accesso alle risorse AWS Identity and Access Management (IAM) per i pod in esecuzione nel cluster. Utilizzando questa soluzione, le organizzazioni possono semplificare l'amministrazione dei cluster Amazon EKS con semplici istruzioni basate su testo, ridurre il sovraccarico manuale e migliorare l'efficienza complessiva dello sviluppo.

Prerequisiti e limitazioni

Prerequisiti

Limitazioni

  • Potrebbero essere necessarie formazione e documentazione per contribuire a garantire un'adozione agevole e un uso efficace di queste tecniche. L'uso di Amazon Bedrock, Amazon EKS, Lambda, OpenSearch Amazon Service e OpenAPI comporta una curva di apprendimento significativa per sviluppatori e team. DevOps

  • Alcuni Servizi AWS non sono disponibili in tutti. Regioni AWS Per la disponibilità regionale, consulta i servizi AWS per regione. Per endpoint specifici, consulta Endpoints and quotas del servizio e scegli il link relativo al servizio.

Architettura

Il diagramma seguente mostra i componenti del flusso di lavoro e dell'architettura per questo modello.

Flusso di lavoro e componenti per creare controlli di accesso in Amazon EKS con agenti Amazon Bedrock.

Questa soluzione esegue le seguenti operazioni:

  1. L'utente interagisce con l'agente Amazon Bedrock inviando una richiesta o una query che funge da input per l'elaborazione e l'intervento dell'agente.

  2. In base al prompt, l'agente Amazon Bedrock verifica lo schema OpenAPI per identificare l'API corretta da utilizzare come target. Se l'agente Amazon Bedrock trova la chiamata API corretta, la richiesta viene inviata al gruppo di azioni associato alla funzione Lambda che implementa queste azioni.

  3. Se non viene trovata un'API pertinente, l'agente Amazon Bedrock interroga la OpenSearch raccolta. La OpenSearch raccolta utilizza contenuti indicizzati della knowledge base provenienti dal bucket Amazon S3 che contiene la Amazon EKS User Guide.

  4. La OpenSearch raccolta restituisce informazioni contestuali pertinenti all'agente Amazon Bedrock.

  5. Per le richieste utilizzabili (quelle che corrispondono a un'operazione API), l'agente Amazon Bedrock viene eseguito all'interno di un cloud privato virtuale (VPC) e attiva la funzione Lambda.

  6. La funzione Lambda esegue un'azione basata sull'input dell'utente all'interno del cluster Amazon EKS.

  7. Il bucket Amazon S3 per il codice Lambda memorizza l'artefatto contenente il codice e la logica scritti per la funzione Lambda.

Strumenti

Servizi AWS

  • Amazon Bedrock è un servizio completamente gestito che rende disponibili per l'uso modelli di base ad alte prestazioni (FMs) delle principali startup di intelligenza artificiale e di Amazon tramite un'API unificata.

  • AWS CloudFormationti aiuta a configurare AWS le risorse, fornirle in modo rapido e coerente e gestirle per tutto il loro ciclo di vita tra e. Account AWS Regioni AWS

  • Amazon Elastic Kubernetes Service (Amazon EKS) ti aiuta a eseguire AWS Kubernetes senza dover installare o gestire il tuo piano di controllo o i tuoi nodi Kubernetes.

  • AWS Identity and Access Management (IAM) ti aiuta a gestire in modo sicuro l'accesso alle tue AWS risorse controllando chi è autenticato e autorizzato a utilizzarle.

  • AWS Lambda è un servizio di calcolo che consente di eseguire il codice senza gestire i server o effettuarne il provisioning. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di elaborazione che utilizzi.

  • Amazon OpenSearch Service è un servizio gestito che ti aiuta a distribuire, gestire e scalare OpenSearch i cluster in. Cloud AWS La sua funzionalità di raccolta ti aiuta a organizzare i tuoi dati e a creare basi di conoscenza complete che gli assistenti di intelligenza artificiale come gli agenti di Amazon Bedrock possono utilizzare.

  • Amazon Simple Storage Service (Amazon S3) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.

Altri strumenti

  • eksctl è un'utilità da riga di comando per la creazione e la gestione di cluster Kubernetes su Amazon EKS.

Repository di codice

Il codice per questo pattern è disponibile nel repository GitHub eks-access-controls-bedrock-agent.

Best practice

  • Mantieni la massima sicurezza possibile durante l'implementazione di questo modello. Assicurati che il cluster Amazon EKS sia privato, abbia autorizzazioni di accesso limitate e che tutte le risorse siano all'interno di un cloud privato virtuale (VPC). Per ulteriori informazioni, consulta Best practice per la sicurezza nella documentazione di Amazon EKS.

  • Usa le chiavi gestite AWS KMS dal cliente laddove possibile e concedi loro autorizzazioni di accesso limitate.

  • Segui il principio del privilegio minimo e concedi le autorizzazioni minime necessarie per eseguire un'attività. Per ulteriori informazioni, consulta le best practice relative alla concessione dei privilegi minimi e alla sicurezza nella documentazione IAM.

Poemi epici

AttivitàDescrizioneCompetenze richieste

Clonare il repository.

Per clonare il repository di questo pattern, esegui il seguente comando nella tua workstation locale:

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

Ottieni l' Account AWS ID.

Per ottenere l' Account AWS ID, procedi nel seguente modo:

  1. Apri una shell nella cartella principale del repository clonato,. eks-access-controls-bedrock-agent

  2. Per ottenere il tuo Account AWS ID, vai alla directory clonata ed esegui il seguente comando:

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

Questo comando memorizza il tuo Account AWS ID nella AWS_ACCOUNT variabile.

AWS DevOps

Crea il bucket S3 per il codice Lambda.

Per implementare questa soluzione, è necessario creare tre bucket Amazon S3 con scopi diversi, come mostrato nel diagramma di architettura. I bucket S3 sono per il codice Lambda, una knowledge base e lo schema OpenAPI.

Per creare il bucket di codice Lambda, utilizza i seguenti passaggi:

  1. Per creare un bucket S3 per il codice Lambda, esegui il seguente comando:

    aws s3 mb s3://bedrock-agent-lambda-artifacts-${AWS_ACCOUNT} --region us-east-1
  2. Per installare la dipendenza dal codice Lambda, esegui il seguente comando:

    cd eks-lambda npm install tsc cd .. && cd opensearch-lambda npm install tsc cd ..
  3. Per impacchettare il codice e caricarlo nel bucket S3 per Lambda, esegui il seguente comando:

    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

Il comando package crea un nuovo CloudFormation modello (eks-access-controls-template.yaml) che contiene:

  • Riferimenti al codice della funzione Lambda memorizzato nel bucket S3.

  • Definizioni per tutta l' AWS infrastruttura richiesta, tra cui VPC, sottoreti, agente Amazon Bedrock e raccolta. OpenSearch Puoi utilizzare questo modello per distribuire la soluzione completa utilizzando. CloudFormation

AWS DevOps

Crea il bucket S3 per la knowledge base.

Per creare il bucket Amazon S3 per la knowledge base, utilizza i seguenti passaggi:

  1. Per creare il bucket Amazon S3 per la knowledge base, esegui il seguente comando:

    aws s3 mb s3://eks-knowledge-base-${AWS_ACCOUNT} --region us-east-1
  2. Per scaricare la Amazon EKS User Guide e archiviarla in una directory, esegui i seguenti comandi:

    mkdir dataSource cd dataSource curl https://docs.aws.amazon.com/pdfs/eks/latest/userguide/eks-ug.pdf -o eks-user-guide.pdf
  3. Per caricare la guida per l'utente nel bucket S3 creato nel passaggio 1, esegui il seguente comando:

    aws s3 cp eks-user-guide.pdf s3://eks-knowledge-base-${AWS_ACCOUNT} \ --region us-east-1 \
  4. Per tornare alla directory principale, esegui il seguente comando:

    cd ..
AWS DevOps

Crea il bucket S3 per lo schema OpenAPI.

Per creare il bucket Amazon S3 per lo schema OpenAPI, utilizza i seguenti passaggi:

  1. Per creare il bucket S3, esegui il seguente comando:

    aws s3 mb s3://eks-openapi-schema-${AWS_ACCOUNT} --region us-east-1
  2. Per caricare lo schema OpenAPI nel bucket S3, esegui il seguente comando:

    aws s3 cp openapi-schema.yaml s3://eks-openapi-schema-${AWS_ACCOUNT} --region us-east-1
AWS DevOps
AttivitàDescrizioneCompetenze richieste

Distribuisci lo CloudFormation stack.

Per distribuire lo CloudFormation stack, utilizzate il file CloudFormation modello creato in eks-access-controls-template.yaml precedenza. Per istruzioni più dettagliate, consulta Creare uno stack dalla CloudFormation console nella documentazione. CloudFormation

Nota

Il provisioning dell' OpenSearch indice con il CloudFormation modello richiede circa 10 minuti.

Dopo aver creato lo stack, prendi nota di VPC_ID e PRIVATE_SUBNET ID s.

AWS DevOps

Crea il cluster Amazon EKS.

Per creare il cluster Amazon EKS all'interno del VPC, utilizza i seguenti passaggi:

  1. Crea una copia del file di eks-config.yaml configurazione e assegna alla copia il eks-deploy.yaml nome.

  2. Aprire eks-deploy.yaml in un editor di testo. Quindi, sostituisci i seguenti valori segnaposto con i valori dello stack distribuito:,, e VPC_ID PRIVATE_SUBNET1 PRIVATE_SUBNET2

  3. Per creare il cluster utilizzando l'utilità eksctl, esegui il comando seguente:

    eksctl create cluster -f eks-deploy.yaml
    Nota

    Il completamento di questo processo di creazione del cluster può richiedere fino a 15-20 minuti.

  4. Per verificare che il cluster sia stato creato correttamente, esegui i seguenti comandi:

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

I risultati attesi sono i seguenti:

  • Lo stato del cluster èACTIVE.

  • Il comando kubectl get nodes mostra che tutti i nodi sono in Ready stato.

AWS DevOps
AttivitàDescrizioneCompetenze richieste

Crea una connessione tra il cluster Amazon EKS e la funzione Lambda.

Per configurare le autorizzazioni di rete e IAM per consentire alla funzione Lambda di comunicare con il cluster Amazon EKS, utilizza i seguenti passaggi:

  1. Per identificare il ruolo IAM associato alla funzione Lambda, apri AWS Management Console e individua la funzione Lambda denominata. bedrock-agent-eks-access-control Prendi nota dell'Amazon Resource Name (ARN) del ruolo IAM.

  2. Per creare una voce di accesso nel cluster Amazon EKS per il ruolo IAM della funzione Lambda, esegui il comando seguente:

    aws eks create-access-entry --cluster-name eks-testing-cluster --principal-arn <principal-Role-ARN>
  3. Per assegnare AmazonEKSClusterAdminPolicy le autorizzazioni a questo ruolo, esegui il seguente comando:

    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

    Per ulteriori informazioni, consulta Associare le politiche di accesso alle voci di accesso e Amazon EKSCluster AdminPolicy nella documentazione di Amazon EKS.

  4. Individua il gruppo di sicurezza del cluster Amazon EKS. Aggiungi una regola in entrata per consentire il traffico di rete in entrata dalla funzione Lambda al cluster Amazon EKS.

    Utilizza i seguenti valori per la regola in entrata:

AWS DevOps
AttivitàDescrizioneCompetenze richieste

Prova l'agente Amazon Bedrock.

Prima di testare l'agente Amazon Bedrock, assicurati di effettuare le seguenti operazioni:

  • Esegui prima il test con ruoli non di produzione.

  • Documenta tutte le modifiche apportate all'accesso al cluster.

  • Predisponi di un piano per annullare le modifiche, se necessario.

Per accedere all'agente Amazon Bedrock, utilizza i seguenti passaggi:

  1. Accedi all' AWS Management Console utilizzo di un ruolo IAM con autorizzazioni Amazon Bedrock e apri la console Amazon Bedrock all'indirizzo. https://console.aws.amazon.com/bedrock/

  2. Seleziona Agenti dal riquadro di navigazione a sinistra. Quindi, scegli l'agente configurato nella sezione Agenti.

  3. Per testare l'agente, prova i seguenti prompt di esempio in cui sostituisci l'ARN Principal-ARN-OF-ROLE con un ruolo IAM effettivo:

  • Per creare una voce di accesso per qualsiasi ruolo IAM a cui desideri fornire l'accesso al cluster EKS, utilizza il seguente prompt: 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

    Risultato previsto:

    • L'agente deve confermare la creazione della voce di accesso.

    • Per verificare, verifica l'utilizzo AWS Management Console o utilizza l'API Amazon EKS ed esegui il seguente comando: aws eks list-access-entries --cluster-name ekscluster

  • Per descrivere la voce di accesso che hai creato, usa il seguente prompt: Describe an access entry in cluster eks-testing-new whose principal arn is <Principal-ARN-OF-ROLE>

    Risultato previsto:

    • L'agente deve restituire i dettagli sulla voce di accesso.

    • I dettagli devono corrispondere a quelli configurati in precedenza per la voce di accesso.

  • Per eliminare la voce di accesso creata, utilizzate il seguente prompt: Delete the access entry in cluster eks-testing-new whose principal arn is <Principal-ARN-OF-ROLE>

    Risultato previsto:

    • L'agente deve confermare l'eliminazione della voce di accesso.

    • Per verificare, verifica l'utilizzo AWS Management Console o utilizza l'API Amazon EKS ed esegui il seguente comando: aws eks list-access-entries --cluster-name ekscluster

Puoi anche chiedere all'agente di eseguire azioni per le associazioni EKS Pod Identity. Per ulteriori dettagli, consulta Scopri come EKS Pod Identity concede l'accesso ai pod Servizi AWS nella documentazione di Amazon EKS.

AWS DevOps
AttivitàDescrizioneCompetenze richieste

Eliminare le risorse.

Per ripulire le risorse create da questo modello, utilizzare la procedura seguente. Attendi il completamento di ogni passaggio di eliminazione prima di procedere al passaggio successivo.

avvertimento

Questa procedura eliminerà definitivamente tutte le risorse create da questi stack. Assicurati di aver eseguito il backup di tutti i dati importanti prima di procedere.

  1. Per eliminare il cluster Amazon EKS, esegui il seguente comando:

    eksctl delete cluster -f eks-deploy.yaml
    Nota

    Il completamento di questa operazione può richiedere 15-20 minuti.

  2. Per eliminare i bucket Amazon S3, esegui i seguenti comandi:

    • Per svuotare il secchio Lambda:

      aws s3 rm s3://bedrock-agent-lambda-artifacts-${AWS_ACCOUNT} --recursive
    • Per svuotare il bucket della knowledge base:

      aws s3 rm s3://eks-knowledge-base-${AWS_ACCOUNT} –recursive
    • Per svuotare il bucket dello schema OpenAPI:

      aws s3 rm s3://bedrock-agent-openapi-schema-${AWS_ACCOUNT} –recursive
    • Per eliminare i bucket vuoti:

      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. Per eliminare lo CloudFormation stack, esegui il seguente comando:

    aws cloudformation delete-stack \ --stack-name
  4. Per verificare l'eliminazione del cluster Amazon EKS, esegui il seguente comando:

    eksctl get clusters
  5. Per verificare l'eliminazione dei bucket Amazon S3, esegui i seguenti comandi:

    • Per verificare l'eliminazione del bucket Lambda:

      aws s3 ls | grep "bedrock-agent-lambda-artifacts"
    • Per verificare l'eliminazione del bucket della knowledge base:

      aws s3 ls | grep "eks-knowledge-base"
    • Per verificare l'eliminazione del bucket dello schema OpenAPI:

      aws s3 ls | grep "bedrock-agent-openapi-schema"
  6. Per verificare l'eliminazione dello stack, esegui il seguente comando:

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

    Se lo stack non viene eliminato, vedi Risoluzione dei problemi.

AWS DevOps

Risoluzione dei problemi

ProblemaSoluzione

Durante la configurazione dell'ambiente viene restituito un codice di errore diverso da zero.

Verifica di utilizzare la cartella corretta quando esegui un comando per distribuire questa soluzione. Per ulteriori informazioni, consultate il file First_Deploy.md nel repository di questo pattern.

La funzione Lambda non è in grado di eseguire l'operazione.

Assicurati che la connettività sia configurata correttamente dalla funzione Lambda al cluster Amazon EKS.

I prompt dell'agente non riconoscono il. APIs

Ridistribuisci la soluzione. Per ulteriori informazioni, consultate il file RE_Deploy.md nel repository di questo pattern.

Lo stack non riesce a essere eliminato.

Un tentativo iniziale di eliminare lo stack potrebbe fallire. Questo errore può verificarsi a causa di problemi di dipendenza con la risorsa personalizzata creata per la OpenSearch raccolta che esegue l'indicizzazione per la knowledge base. Per eliminare lo stack, ritenta l'operazione di eliminazione conservando la risorsa personalizzata.

Risorse correlate

AWS Blog

Documentazione Amazon Bedrock

Documentazione Amazon EKS