Como usar agentes do Amazon Bedrock para automatizar a criação de controles de entrada de acesso no Amazon EKS por meio de prompts baseados em texto - Recomendações da AWS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Como usar agentes do Amazon Bedrock para automatizar a criação de controles de entrada de acesso no Amazon EKS por meio de prompts baseados em texto

Keshav Ganesh e Sudhanshu Saurav, Amazon Web Services

Resumo

As organizações enfrentam desafios no gerenciamento de controles de acesso e provisionamento de recursos quando várias equipes precisam trabalhar com um cluster compartilhado do Amazon Elastic Kubernetes Service (Amazon EKS). Um serviço gerenciado do Kubernetes, como o Amazon EKS, simplificou as operações de cluster. No entanto, a sobrecarga administrativa de gerenciar o acesso da equipe e as permissões de recursos permanece complexa e demorada.

Este padrão mostra como os agentes do Amazon Bedrock podem ajudar você a automatizar o gerenciamento de acesso ao cluster do Amazon EKS. Essa automação permite que as equipes de desenvolvimento se concentrem no desenvolvimento de suas aplicações principais, em vez de lidar com a configuração e o gerenciamento do controle de acesso. Você pode personalizar um agente do Amazon Bedrock para realizar ações em uma ampla variedade de tarefas por meio de prompts simples em linguagem natural.

Ao usar AWS Lambda funções como grupos de ação, um agente do Amazon Bedrock pode lidar com tarefas como criar entradas de acesso de usuários e gerenciar políticas de acesso. Além disso, um agente do Amazon Bedrock pode configurar associações de identidade de pod que permitem acesso a recursos AWS Identity and Access Management (IAM) para os pods em execução no cluster. Usando essa solução, as organizações podem simplificar a administração do cluster do Amazon EKS com prompts simples baseados em texto, reduzir a sobrecarga manual e melhorar a eficiência geral do desenvolvimento.

Pré-requisitos e limitações

Pré-requisitos

  • Um ativo Conta da AWS.

  • Permissões e perfis do IAM estabelecidos para o processo de implantação. Isso inclui permissões para acessar os modelos da Amazon Bedrock Foundation (FM), criar funções Lambda e quaisquer outros recursos necessários em todo o destino. Contas da AWS

  • Acesso ativado no ativo Conta da AWS a esses Amazon Bedrock FMs: Amazon Titan Text Embeddings V2 e Anthropic Claude 3 Haiku.

  • AWS Command Line Interface (AWS CLI) versão 2.9.11 ou posterior, instalada e configurada.

  • eksctl 0.194.0 ou posterior, instalado.

Limitações

  • Treinamento e documentação podem ser necessários para ajudar a garantir a adoção tranquila e o uso eficaz dessas técnicas. Usar o Amazon Bedrock, o Amazon EKS, o Lambda, o OpenSearch Amazon Service e a OpenAPI envolve uma curva de aprendizado significativa para desenvolvedores e equipes. DevOps

  • Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte AWS Services by Region. Para endpoints específicos, consulte Service endpoints and quotas e clique no link correspondente ao serviço desejado.

Arquitetura

O diagrama a seguir mostra o fluxo de trabalho e os componentes da arquitetura desse padrão.

Fluxo de trabalho e componentes para criar controles de acesso no Amazon EKS com agentes do Amazon Bedrock.

Esta solução executa as seguintes etapas:

  1. O usuário interage com o agente do Amazon Bedrock enviando um prompt ou consulta que serve como entrada para o agente processar e agir.

  2. Com base no prompt, o agente do Amazon Bedrock verifica o esquema da OpenAPI para identificar a API correta a ser segmentada. Se o agente do Amazon Bedrock encontrar a chamada de API correta, a solicitação vai para o grupo de ação associado à função do Lambda que implementa essas ações.

  3. Se uma API relevante não for encontrada, o agente Amazon Bedrock consulta a OpenSearch coleção. A OpenSearch coleção usa conteúdo indexado da base de conhecimento proveniente do bucket Amazon S3 que contém o Guia do usuário do Amazon EKS.

  4. A OpenSearch coleção retorna informações contextuais relevantes para o agente Amazon Bedrock.

  5. Para solicitações acionáveis (aquelas que correspondem a uma operação de API), o agente do Amazon Bedrock é executado em uma nuvem privada virtual (VPC) e aciona a função do Lambda.

  6. A função do Lambda executa uma ação baseada na entrada do usuário dentro do cluster do Amazon EKS.

  7. O bucket do Amazon S3 para o código do Lambda armazena o artefato que tem o código e a lógica escritos para a função do Lambda.

Ferramentas

Serviços da AWS

  • O Amazon Bedrock é um serviço totalmente gerenciado que disponibiliza modelos básicos de alto desempenho (FMs) das principais startups de IA e da Amazon para seu uso por meio de uma API unificada.

  • AWS CloudFormationajuda você a configurar AWS recursos, provisioná-los de forma rápida e consistente e gerenciá-los durante todo o ciclo de vida em Contas da AWS e. Regiões da AWS

  • O Amazon Elastic Kubernetes Service (Amazon EKS) ajuda você a executar o AWS Kubernetes sem precisar instalar ou manter seu próprio plano de controle ou nós do Kubernetes.

  • AWS Identity and Access Management (IAM) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.

  • O AWS Lambda é um serviço de computação que ajuda a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.

  • O Amazon OpenSearch Service é um serviço gerenciado que ajuda você a implantar, operar e escalar OpenSearch clusters no Nuvem AWS. O recurso de coleções ajuda você a organizar seus dados e a criar bases de conhecimento abrangentes que assistentes de IA, como os agentes do Amazon Bedrock, podem usar.

  • O Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.

Outras ferramentas

  • O eksctl é utilitário de linha de comando para criar e gerenciar clusters do Kubernetes no Amazon EKS.

Repositório de código

O código desse padrão está disponível no repositório GitHub eks-access-controls-bedrock-agent.

Práticas recomendadas

  • Mantenha o maior nível de segurança possível ao implementar esse padrão. Certifique-se de que o cluster do Amazon EKS seja privado, tenha permissões de acesso limitadas e que todos os recursos estejam dentro de uma nuvem privada virtual (VPC). Para obter mais informações, consulte Práticas recomendadas de segurança na documentação do Amazon EKS.

  • Use chaves gerenciadas pelo AWS KMS cliente sempre que possível e conceda permissões de acesso limitadas a elas.

  • Respeite o princípio de privilégio mínimo, garantindo somente as permissões estritamente necessárias para a execução de uma tarefa. Para obter mais informações, consulte Concessão de privilégio mínimo e Práticas recomendadas de segurança na documentação do IAM.

Épicos

TarefaDescriptionHabilidades necessárias

Clonar o repositório.

Para clonar o repositório correspondente a este padrão, execute o seguinte comando na estação de trabalho local:

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

Obtenha o Conta da AWS ID.

Para obter o Conta da AWS ID, use as seguintes etapas:

  1. Abra um shell na pasta-raiz do repositório clonado, eks-access-controls-bedrock-agent.

  2. Para obter seu Conta da AWS ID, navegue até o diretório clonado e execute o seguinte comando:

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

Esse comando armazena seu Conta da AWS ID na AWS_ACCOUNT variável.

AWS DevOps

Crie o bucket do S3 para o código do Lambda.

Para implementar essa solução, você deve criar três buckets do Amazon S3 que atendam a propósitos diferentes, conforme mostrado no diagrama de arquitetura. Os buckets do S3 são para código do Lambda, uma base de conhecimento e um esquema OpenAPI.

Para criar um bucket de código do Lambda, siga as etapas abaixo:

  1. Para criar um bucket do S3 para código do Lambda, execute o seguinte comando:

    aws s3 mb s3://bedrock-agent-lambda-artifacts-${AWS_ACCOUNT} --region us-east-1
  2. Para instalar a dependência de código do Lambda, execute o seguinte comando:

    cd eks-lambda npm install tsc cd .. && cd opensearch-lambda npm install tsc cd ..
  3. Para empacotar o código e carregá-lo no bucket do S3 para o Lambda, execute o seguinte 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

O comando package cria um novo CloudFormation modelo (eks-access-controls-template.yaml) que contém:

  • Referências ao código da função do Lambda armazenado no bucket do S3.

  • Definições para toda a AWS infraestrutura necessária, incluindo VPC, sub-redes, agente Amazon Bedrock e coleção. OpenSearch Você pode usar esse modelo para implantar a solução completa usando CloudFormation.

AWS DevOps

Crie o bucket do S3 para a base de conhecimento.

Para criar um bucket do Amazon S3 para a base de conhecimento, siga as etapas abaixo:

  1. Para criar um bucket do Amazon S3 para a base de conhecimento, execute o seguinte comando:

    aws s3 mb s3://eks-knowledge-base-${AWS_ACCOUNT} --region us-east-1
  2. Para baixar o Guia do usuário do Amazon EKS e armazená-lo em um diretório, execute os seguintes comandos:

    mkdir dataSource cd dataSource curl https://docs.aws.amazon.com/pdfs/eks/latest/userguide/eks-ug.pdf -o eks-user-guide.pdf
  3. Para carregar o guia do usuário para o bucket do S3 que você criou na etapa 1, execute o seguinte comando:

    aws s3 cp eks-user-guide.pdf s3://eks-knowledge-base-${AWS_ACCOUNT} \ --region us-east-1 \
  4. Para retornar ao diretório-raiz, execute o seguinte comando:

    cd ..
AWS DevOps

Crie o bucket do S3 para o esquema OpenAPI.

Para criar um bucket do Amazon S3 para o esquema OpenAPI, siga as etapas abaixo:

  1. Para criar o bucket do S3, execute o seguinte comando:

    aws s3 mb s3://eks-openapi-schema-${AWS_ACCOUNT} --region us-east-1
  2. Para carregar o esquema OpenAPI para o bucket do S3, execute o seguinte comando:

    aws s3 cp openapi-schema.yaml s3://eks-openapi-schema-${AWS_ACCOUNT} --region us-east-1
AWS DevOps
TarefaDescriptionHabilidades necessárias

Implante a CloudFormation pilha.

Para implantar a CloudFormation pilha, use o arquivo CloudFormation de modelo eks-access-controls-template.yaml que você criou anteriormente. Para obter instruções mais detalhadas, consulte Criar uma pilha a partir do CloudFormation console na CloudFormation documentação.

nota

O provisionamento do OpenSearch índice com o CloudFormation modelo leva cerca de 10 minutos.

Depois que a pilha for criado, anote os valores VPC_ID e PRIVATE_SUBNET ID.

AWS DevOps

Crie o cluster do Amazon EKS.

Para criar o cluster do Amazon EKS dentro da VPC, siga as etapas abaixo:

  1. Crie uma cópia do arquivo de configuração eks-config.yaml e nomeie a cópia como eks-deploy.yaml.

  2. Abra eks-deploy.yaml em um editor de texto. Em seguida, substitua os seguintes valores de espaço reservado por valores da pilha implantada: VPC_ID, PRIVATE_SUBNET1 e PRIVATE_SUBNET2

  3. Para criar um cluster usando o utilitário eksctl, execute o seguinte comando:

    eksctl create cluster -f eks-deploy.yaml
    nota

    Esse processo de criação do cluster pode levar de 15 a 20 minutos para ser concluído.

  4. Para verificar se o cluster foi criado com êxito, execute os seguintes comandos:

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

Os resultados esperados são os seguintes:

  • O status do cluster é ACTIVE.

  • O comando kubectl get nodes mostra que todos os nós estão no estado Ready.

AWS DevOps
TarefaDescriptionHabilidades necessárias

Crie uma conexão entre a função do Lambda e o cluster do Amazon EKS.

Para configurar permissões de rede e do IAM a fim de permitir que a função do Lambda se comunique com o cluster do Amazon EKS, siga as etapas abaixo:

  1. Para identificar a função do IAM associada à função Lambda, abra Console de gerenciamento da AWS e localize a função Lambda chamada. bedrock-agent-eks-access-control Anote o nome do recurso da Amazon (ARN) do perfil do IAM.

  2. Para criar uma entrada de acesso no cluster do Amazon EKS para o perfil do IAM da função do Lambda, execute o seguinte comando:

    aws eks create-access-entry --cluster-name eks-testing-cluster --principal-arn <principal-Role-ARN>
  3. Para atribuir permissões AmazonEKSClusterAdminPolicy a essa função, execute o seguinte 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

    Para obter mais informações, consulte Associar políticas de acesso a entradas de acesso e Amazon EKSCluster AdminPolicy na documentação do Amazon EKS.

  4. Localize o grupo de segurança do cluster do Amazon EKS. Adicione uma regra de entrada para permitir o tráfego de rede de entrada da função do Lambda para o cluster do Amazon EKS.

    Use os seguintes valores para regra de entrada:

AWS DevOps
TarefaDescriptionHabilidades necessárias

Teste o agente do Amazon Bedrock.

Antes de testar o agente do Amazon Bedrock, faça o seguinte:

  • Teste primeiro com perfis que não sejam de produção.

  • Documente todas as alterações feitas no acesso ao cluster.

  • Tenha um plano para reverter as alterações, se necessário.

Para acessar o agente do Amazon Bedrock, siga as etapas abaixo:

  1. Faça login na função Console de gerenciamento da AWS usando uma função do IAM com as permissões do Amazon Bedrock e abra o console do Amazon Bedrock em. https://console.aws.amazon.com/bedrock/

  2. No painel de navegação à esquerda, selecione Agentes. Escolha o agente que foi configurado na seção Agentes.

  3. Para testar o agente, experimente os seguintes exemplos de prompts, nos quais você substitui Principal-ARN-OF-ROLE por um ARN real do perfil do IAM:

  • Para criar uma entrada de acesso para qualquer perfil do IAM ao qual você queira fornecer acesso ao cluster do EKS, use o seguinte 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

    Resultado esperado:

    • O agente deve confirmar a criação da entrada de acesso.

    • Para verificar, verifique usando Console de gerenciamento da AWS ou use a API Amazon EKS e execute o seguinte comando: aws eks list-access-entries --cluster-name ekscluster

  • Para descrever a entrada de acesso que você criou, use o seguinte prompt: Describe an access entry in cluster eks-testing-new whose principal arn is <Principal-ARN-OF-ROLE>

    Resultado esperado:

    • O agente deve devolver detalhes sobre a entrada de acesso.

    • Os detalhes devem corresponder ao que você configurou anteriormente para a entrada de acesso.

  • Para excluir a entrada de acesso que você criou, use o seguinte prompt: Delete the access entry in cluster eks-testing-new whose principal arn is <Principal-ARN-OF-ROLE>

    Resultado esperado:

    • O agente deve confirmar a exclusão da entrada de acesso.

    • Para verificar, verifique usando Console de gerenciamento da AWS ou use a API Amazon EKS e execute o seguinte comando: aws eks list-access-entries --cluster-name ekscluster

Você também pode solicitar que o agente execute ações para associações da Identidade de Pods do EKS. Para obter mais detalhes, consulte Saiba como a Identidade de Pods do EKS concede acesso aos serviços da Serviços da AWS na documentação do Amazon EKS.

AWS DevOps
TarefaDescriptionHabilidades necessárias

Limpar os recursos

Para limpar os recursos que foram criados por esse padrão, use o procedimento a seguir. Aguarde até que cada etapa de exclusão conclua a execução para ir para a próxima etapa.

Atenção

Esse procedimento excluirá permanentemente todos os recursos criados por essas pilhas. Verifique se você fez backup de todos os dados importantes antes de prosseguir.

  1. Para excluir o cluster do Amazon EKS, execute o seguinte comando:

    eksctl delete cluster -f eks-deploy.yaml
    nota

    Essa operação pode levar de 15 a 20 minutos para ser concluída.

  2. Para excluir os buckets do Amazon S3, execute os seguintes comandos:

    • Para esvaziar o bucket do Lambda:

      aws s3 rm s3://bedrock-agent-lambda-artifacts-${AWS_ACCOUNT} --recursive
    • Para esvaziar o bucket da base de conhecimento:

      aws s3 rm s3://eks-knowledge-base-${AWS_ACCOUNT} –recursive
    • Para esvaziar o bucket do esquema OpenAPI:

      aws s3 rm s3://bedrock-agent-openapi-schema-${AWS_ACCOUNT} –recursive
    • Para excluir os buckets vazios:

      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. Para excluir a CloudFormation pilha, execute o seguinte comando:

    aws cloudformation delete-stack \ --stack-name
  4. Para verificar a exclusão do cluster do Amazon EKS, execute o seguinte comando:

    eksctl get clusters
  5. Para verificar a exclusão dos buckets do Amazon S3, execute os seguintes comandos:

    • Para verificar a exclusão do bucket do Lambda:

      aws s3 ls | grep "bedrock-agent-lambda-artifacts"
    • Para verificar a exclusão do bucket da base de conhecimento:

      aws s3 ls | grep "eks-knowledge-base"
    • Para verificar a exclusão do bucket do esquema OpenAPI:

      aws s3 ls | grep "bedrock-agent-openapi-schema"
  6. Para verificar a exclusão da pilha, execute o seguinte comando:

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

    Se a pilha não for excluída, consulte Solução de problemas.

AWS DevOps

Solução de problemas

ProblemaSolução

Um código de erro diferente de zero é retornado durante a configuração do ambiente.

Verifique se você está usando a pasta correta ao executar qualquer comando para implantar essa solução. Para obter mais informações, consulte o arquivo FIRST_DEPLOY.md no repositório deste padrão.

A função do Lambda não é capaz de realizar a tarefa.

Certifique-se de que a conectividade esteja configurada corretamente da função do Lambda para o cluster do Amazon EKS.

As solicitações do agente não reconhecem o. APIs

Reimplante a solução. Para obter mais informações, consulte o arquivo RE_DEPLOY.md no repositório deste padrão.

A pilha não consegue ser excluída.

Uma tentativa inicial de excluir a pilha pode falhar. Essa falha pode ocorrer devido a problemas de dependência com o recurso personalizado criado para a OpenSearch coleção que faz a indexação da base de conhecimento. Para excluir a pilha, tente novamente a operação de exclusão mantendo o recurso personalizado.

Recursos relacionados

AWS Blog

Documentação do Amazon Bedrock

Documentação do Amazon EKS