Use 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á.

Use 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

Criado por Keshav Ganesh (AWS) e Sudhanshu Saurav (AWS)

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 continua complexa e demorada.

Esse 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 seus aplicativos 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 instruções 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 Amazon EKS com instruções simples baseadas em texto, reduzir a sobrecarga manual e melhorar a eficiência geral do desenvolvimento.

Pré-requisitos e limitações

Pré-requisitos

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 ver a disponibilidade da região, consulte os serviços da AWS por região. Para endpoints específicos, consulte Endpoints e cotas de serviço e escolha o link para o serviço.

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.

Essa solução executa as seguintes etapas:

  1. O usuário interage com o agente Amazon Bedrock enviando uma solicitação ou consulta que serve como entrada para o agente processar e agir.

  2. Com base na solicitação, o agente 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 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 Amazon Bedrock é executado em uma nuvem privada virtual (VPC) e aciona a função Lambda.

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

  7. O bucket do Amazon S3 para o código Lambda armazena o artefato que tem o código e a lógica escritos para a função 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. Seu recurso de coleções ajuda você a organizar seus dados e criar bases de conhecimento abrangentes que assistentes de IA, como 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 a maior segurança possível ao implementar esse padrão. Certifique-se de que o cluster 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 informações adicionais, consulte Melhores práticas 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.

  • Siga o princípio do privilégio mínimo e conceda as permissões mínimas necessárias para realizar 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

TarefaDescriçãoHabilidades necessárias

Clonar o repositório.

Para clonar o repositório desse padrão, execute o seguinte comando na sua 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 S3 para o código 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 Lambda, uma base de conhecimento e um esquema OpenAPI.

Para criar o bucket de código Lambda, use as seguintes etapas:

  1. Para criar um bucket do S3 para código 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 do código 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 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 Lambda armazenado em seu 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 S3 para a base de conhecimento.

Para criar o bucket do Amazon S3 para a base de conhecimento, use as seguintes etapas:

  1. Para criar o 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 no 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 o bucket do Amazon S3 para o esquema OpenAPI, use as seguintes etapas:

  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 fazer o upload do esquema OpenAPI no 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
TarefaDescriçãoHabilidades 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 criada, anote o VPC_ID e PRIVATE_SUBNET ID s.

AWS DevOps

Crie o cluster do Amazon EKS.

Para criar o cluster Amazon EKS dentro da VPC, use as seguintes etapas:

  1. Crie uma cópia do arquivo de eks-config.yaml configuração e nomeie a cópia comoeks-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,, e PRIVATE_SUBNET1 PRIVATE_SUBNET2

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

    eksctl create cluster -f eks-deploy.yaml
    nota

    Esse processo de criação de 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 Ready estado.

AWS DevOps
TarefaDescriçãoHabilidades necessárias

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

Para configurar permissões de rede e IAM para permitir que a função Lambda se comunique com o cluster Amazon EKS, use as seguintes etapas:

  1. Para identificar a função do IAM que está associada à função Lambda, abra AWS Management Console e localize a função Lambda chamada. bedrock-agent-eks-access-control Anote o Amazon Resource Name (ARN) da função do IAM.

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

    aws eks create-access-entry --cluster-name eks-testing-cluster --principal-arn <principal-Role-ARN>
  3. Para atribuir AmazonEKSClusterAdminPolicy permissões 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 Amazon EKS. Adicione uma regra de entrada para permitir o tráfego de rede de entrada da função Lambda para o cluster Amazon EKS.

    Use os seguintes valores para a regra de entrada:

AWS DevOps
TarefaDescriçãoHabilidades necessárias

Teste o agente Amazon Bedrock.

Antes de testar o agente Amazon Bedrock, certifique-se de fazer o seguinte:

  • Teste primeiro com funções 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 Amazon Bedrock, use as seguintes etapas:

  1. Faça login na função AWS Management Console 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. Em seguida, escolha seu agente configurado na seção Agentes.

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

  • Para criar uma entrada de acesso para qualquer função do IAM que você queira fornecer acesso ao cluster 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 AWS Management Console 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 AWS Management Console 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 do EKS Pod Identity. Para obter mais detalhes, consulte Saiba como o EKS Pod Identity concede acesso aos pods Serviços da AWS na documentação do Amazon EKS.

AWS DevOps
TarefaDescriçãoHabilidades necessárias

Limpar os recursos

Para limpar os recursos que esse padrão criou, use o procedimento a seguir. Aguarde a conclusão de cada etapa de exclusão antes de prosseguir para a próxima etapa.

Atenção

Esse procedimento excluirá permanentemente todos os recursos criados por essas pilhas. Certifique-se de ter feito backup de todos os dados importantes antes de continuar.

  1. Para excluir o cluster 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 balde 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 compartimentos 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 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 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 desse padrão.

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

Certifique-se de que a conectividade esteja configurada corretamente da função Lambda para o cluster 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 desse padrão.

A pilha não é 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 que foi 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