Utilice los agentes de Amazon Bedrock para automatizar la creación de controles de entrada de acceso en Amazon EKS mediante indicaciones basadas en texto - Recomendaciones de AWS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Utilice los agentes de Amazon Bedrock para automatizar la creación de controles de entrada de acceso en Amazon EKS mediante indicaciones basadas en texto

Creado por Keshav Ganesh (AWS) y Sudhanshu Saurav (AWS)

Resumen

Las organizaciones se enfrentan a desafíos a la hora de gestionar los controles de acceso y el aprovisionamiento de recursos cuando varios equipos necesitan trabajar con un clúster compartido de Amazon Elastic Kubernetes Service (Amazon EKS). Un servicio de Kubernetes administrado, como Amazon EKS, ha simplificado las operaciones de los clústeres. Sin embargo, la sobrecarga administrativa que supone gestionar el acceso de los equipos y los permisos de los recursos sigue siendo compleja y requiere mucho tiempo.

Este patrón muestra cómo los agentes de Amazon Bedrock pueden ayudarlo a automatizar la administración del acceso a los clústeres de Amazon EKS. Esta automatización permite a los equipos de desarrollo centrarse en el desarrollo de sus aplicaciones principales en lugar de centrarse en la configuración y la administración del control de acceso. Puede personalizar un agente de Amazon Bedrock para que realice acciones para una amplia variedad de tareas mediante sencillas instrucciones en lenguaje natural.

Al utilizar AWS Lambda funciones como grupos de acción, un agente de Amazon Bedrock puede gestionar tareas como la creación de entradas de acceso de usuarios y la gestión de las políticas de acceso. Además, un agente de Amazon Bedrock puede configurar asociaciones de identidad de pods que permiten el acceso a los recursos AWS Identity and Access Management (IAM) para los pods que se ejecutan en el clúster. Con esta solución, las organizaciones pueden optimizar la administración de sus clústeres de Amazon EKS con sencillas instrucciones basadas en texto, reducir la sobrecarga manual y mejorar la eficiencia general del desarrollo.

Requisitos previos y limitaciones

Requisitos previos 

Limitaciones

  • Es posible que se necesiten formación y documentación para garantizar la adopción fluida y el uso eficaz de estas técnicas. El uso de Amazon Bedrock, Amazon EKS, Lambda, OpenSearch Amazon Service y OpenAPI implica una curva de aprendizaje importante para los desarrolladores y los equipos. DevOps

  • Algunas Servicios de AWS no están disponibles en todos. Regiones de AWS Para ver la disponibilidad por región, consulte Servicios de AWS por región. Para conocer puntos de enlace específicos, consulte Puntos de enlace y cuotas del servicio y elija el enlace para el servicio.

Arquitectura

En el siguiente diagrama se muestran los componentes de la arquitectura y el flujo de trabajo de esta aplicación.

Flujo de trabajo y componentes para crear controles de acceso en Amazon EKS con los agentes de Amazon Bedrock.

Esta solución lleva a cabo los siguientes pasos:

  1. El usuario interactúa con el agente de Amazon Bedrock enviando una solicitud o consulta que sirve de entrada para que el agente la procese y tome medidas.

  2. Según la solicitud, el agente de Amazon Bedrock comprueba el esquema de OpenAPI para identificar la API correcta a la que dirigirse. Si el agente de Amazon Bedrock encuentra la llamada a la API correcta, la solicitud se dirige al grupo de acciones asociado a la función Lambda que implementa estas acciones.

  3. Si no encuentra una API relevante, el agente de Amazon Bedrock consulta la OpenSearch colección. La OpenSearch colección utiliza contenido indexado de la base de conocimientos que proviene del depósito de Amazon S3 que contiene la Guía del usuario de Amazon EKS.

  4. La OpenSearch colección devuelve la información contextual relevante al agente de Amazon Bedrock.

  5. En el caso de las solicitudes procesables (aquellas que coinciden con una operación de API), el agente de Amazon Bedrock se ejecuta dentro de una nube privada virtual (VPC) y activa la función Lambda.

  6. La función Lambda realiza una acción que se basa en la entrada del usuario dentro del clúster de Amazon EKS.

  7. El bucket de Amazon S3 para el código Lambda almacena el artefacto que contiene el código y la lógica escritos para la función Lambda.

Herramientas

Servicios de AWS

  • Amazon Bedrock es un servicio totalmente gestionado que pone a su disposición modelos básicos de alto rendimiento (FMs) de las principales empresas emergentes de IA y Amazon a través de una API unificada.

  • AWS CloudFormationle ayuda a configurar AWS los recursos, aprovisionarlos de forma rápida y coherente y gestionarlos a lo largo de su ciclo de vida en Cuentas de AWS todo el mundo. Regiones de AWS

  • Amazon Elastic Kubernetes Service (Amazon EKS) le ayuda a ejecutar AWS Kubernetes sin necesidad de instalar ni mantener su propio plano de control o nodos de Kubernetes.

  • AWS Identity and Access Management (IAM) le ayuda a administrar de forma segura el acceso a sus AWS recursos al controlar quién está autenticado y autorizado a usarlos.

  • AWS Lambda es un servicio de computación que ayuda a ejecutar código sin necesidad de aprovisionar ni administrar servidores. Ejecuta el código solo cuando es necesario y amplía la capacidad de manera automática, por lo que solo pagará por el tiempo de procesamiento que utilice.

  • Amazon OpenSearch Service es un servicio gestionado que le ayuda a implementar, operar y escalar OpenSearch clústeres en Nube de AWS. Su función de colecciones le ayuda a organizar sus datos y a crear bases de conocimiento integrales que los asistentes de IA, como los agentes de Amazon Bedrock, pueden utilizar.

  • Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos basado en la nube que le ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.

Otras herramientas

  • eksctl: es una utilidad sencilla de línea de comandos para crear y administrar clústeres de Kubernetes en Amazon EKS.

Repositorio de código

El código de este patrón está disponible en el repositorio GitHub eks-access-controls-bedrock-agent.

Prácticas recomendadas

  • Mantenga la mayor seguridad posible al implementar este patrón. Asegúrese de que el clúster de Amazon EKS sea privado, tenga permisos de acceso limitados y que todos los recursos estén dentro de una nube privada virtual (VPC). Para obtener información adicional, consulte Prácticas recomendadas de seguridad en la documentación de Amazon EKS.

  • Utilice claves administradas por el AWS KMS cliente siempre que sea posible y concédales permisos de acceso limitados.

  • Siga el principio de privilegios mínimos y conceda los permisos mínimos necesarios para realizar una tarea. Para obtener más información, consulte Otorgar privilegio mínimo y Prácticas recomendadas de seguridad en la documentación de IAM.

Epics

TareaDescripciónHabilidades requeridas

Clonar el repositorio.

Para clonar el repositorio de este patrón, ejecute el siguiente comando en su estación de trabajo local:

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

Obtenga la Cuenta de AWS identificación.

Para obtener la Cuenta de AWS identificación, sigue los siguientes pasos:

  1. Abre un shell en la carpeta raíz del repositorio clonado,. eks-access-controls-bedrock-agent

  2. Para obtener tu Cuenta de AWS ID, navega hasta el directorio clonado y ejecuta el siguiente comando:

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

Este comando almacena tu Cuenta de AWS ID en la AWS_ACCOUNT variable.

AWS DevOps

Cree el bucket S3 para el código Lambda.

Para implementar esta solución, debe crear tres buckets de Amazon S3 que sirvan para diferentes propósitos, como se muestra en el diagrama de arquitectura. Los buckets S3 son para código Lambda, una base de conocimientos y un esquema OpenAPI.

Para crear el depósito de código Lambda, siga estos pasos:

  1. Para crear un bucket de S3 para código Lambda, ejecute el siguiente comando:

    aws s3 mb s3://bedrock-agent-lambda-artifacts-${AWS_ACCOUNT} --region us-east-1
  2. Para instalar la dependencia del código Lambda, ejecute el siguiente comando:

    cd eks-lambda npm install tsc cd .. && cd opensearch-lambda npm install tsc cd ..
  3. Para empaquetar el código y subirlo al bucket de S3 para Lambda, ejecute el siguiente 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

El comando package crea una nueva CloudFormation plantilla (eks-access-controls-template.yaml) que contiene:

  • Referencias al código de la función Lambda almacenado en el bucket de S3.

  • Definiciones de toda la AWS infraestructura requerida, incluida la VPC, las subredes, el agente de Amazon Bedrock y la recopilación. OpenSearch Puede utilizar esta plantilla para implementar la solución completa mediante. CloudFormation

AWS DevOps

Cree el bucket de S3 para la base de conocimientos.

Para crear el bucket de Amazon S3 para la base de conocimientos, siga estos pasos:

  1. Para crear el bucket de Amazon S3 para la base de conocimientos, ejecute el siguiente comando:

    aws s3 mb s3://eks-knowledge-base-${AWS_ACCOUNT} --region us-east-1
  2. Para descargar la Guía del usuario de Amazon EKS y guardarla en un directorio, ejecute los siguientes 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 cargar la guía del usuario en el bucket de S3 que creó en el paso 1, ejecute el siguiente comando:

    aws s3 cp eks-user-guide.pdf s3://eks-knowledge-base-${AWS_ACCOUNT} \ --region us-east-1 \
  4. Para volver al directorio raíz, ejecute el siguiente comando:

    cd ..
AWS DevOps

Cree el bucket de S3 para el esquema de OpenAPI.

Para crear el bucket de Amazon S3 para el esquema de OpenAPI, siga estos pasos:

  1. Para crear el bucket de S3, ejecute el siguiente comando:

    aws s3 mb s3://eks-openapi-schema-${AWS_ACCOUNT} --region us-east-1
  2. Para cargar el esquema de OpenAPI en el bucket de S3, ejecute el siguiente comando:

    aws s3 cp openapi-schema.yaml s3://eks-openapi-schema-${AWS_ACCOUNT} --region us-east-1
AWS DevOps
TareaDescripciónHabilidades requeridas

Despliegue la CloudFormation pila.

Para implementar la CloudFormation pila, usa el archivo CloudFormation de plantilla eks-access-controls-template.yaml que creaste anteriormente. Para obtener instrucciones más detalladas, consulte Crear una pila desde la CloudFormation consola en la CloudFormation documentación.

nota

El aprovisionamiento del OpenSearch índice con la CloudFormation plantilla tarda unos 10 minutos.

Una vez creada la pila, anote las letras VPC_ID y PRIVATE_SUBNET ID s.

AWS DevOps

Cree el clúster de Amazon EKS.

Para crear el clúster de Amazon EKS dentro de la VPC, siga estos pasos:

  1. Cree una copia del archivo de eks-config.yaml configuración y asígnele un nombre a la copia. eks-deploy.yaml

  2. Abra eks-deploy.yaml en un editor de texto. A continuación, sustituya los siguientes valores de marcador de posición por valores de la pila implementada: VPC_IDPRIVATE_SUBNET1, y PRIVATE_SUBNET2

  3. Para crear el clúster mediante la utilidad eksctl, ejecute el siguiente comando:

    eksctl create cluster -f eks-deploy.yaml
    nota

    Este proceso de creación del clúster puede tardar entre 15 y 20 minutos en completarse.

  4. Para comprobar que el clúster se creó correctamente, ejecute los siguientes comandos:

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

Los resultados esperados son los siguientes:

  • El estado del clúster esACTIVE.

  • El comando kubectl get nodes muestra que todos los nodos están en Ready estado.

AWS DevOps
TareaDescripciónHabilidades requeridas

Cree una conexión entre el clúster de Amazon EKS y la función Lambda.

Para configurar los permisos de red e IAM que permitan que la función Lambda se comunique con el clúster de Amazon EKS, siga estos pasos:

  1. Para identificar la función de IAM asociada a la función Lambda, abra y localice AWS Management Console la función Lambda denominada. bedrock-agent-eks-access-control Anote el nombre del recurso de Amazon (ARN) de la función de IAM.

  2. Para crear una entrada de acceso en el clúster de Amazon EKS para la función de IAM de la función Lambda, ejecute el siguiente comando:

    aws eks create-access-entry --cluster-name eks-testing-cluster --principal-arn <principal-Role-ARN>
  3. Para asignar AmazonEKSClusterAdminPolicy permisos a este rol, ejecute el siguiente 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 obtener más información, consulte Asociar políticas de acceso a entradas de acceso y Amazon EKSCluster AdminPolicy en la documentación de Amazon EKS.

  4. Localice el grupo de seguridad del clúster de Amazon EKS. Agregue una regla de entrada para permitir el tráfico de red entrante de la función Lambda al clúster de Amazon EKS.

    Utilice los siguientes valores para la regla de entrada:

AWS DevOps
TareaDescripciónHabilidades requeridas

Pruebe el agente Amazon Bedrock.

Antes de probar el agente Amazon Bedrock, asegúrate de hacer lo siguiente:

  • Pruebe primero con funciones que no sean de producción.

  • Documente cualquier cambio realizado en el acceso al clúster.

  • Tenga un plan para revertir los cambios si es necesario.

Para acceder al agente de Amazon Bedrock, sigue estos pasos:

  1. Inicie sesión en el rol de AWS Management Console uso de IAM con los permisos de Amazon Bedrock y abra la consola de Amazon Bedrock en. https://console.aws.amazon.com/bedrock/

  2. En el panel de navegación de la izquierda, seleccione Agentes. A continuación, elija su agente configurado en la sección Agentes.

  3. Para probar el agente, pruebe los siguientes ejemplos de instrucciones, en los que lo sustituirá por un Principal-ARN-OF-ROLE ARN de rol de IAM real:

  • Para crear una entrada de acceso para cualquier función de IAM a la que desee proporcionar acceso al clúster de EKS, utilice la siguiente solicitud: 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:

    • El agente debe confirmar la creación de la entrada de acceso.

    • Para verificarlo, AWS Management Console compruébelo o utilice la API Amazon EKS y ejecute el siguiente comando: aws eks list-access-entries --cluster-name ekscluster

  • Para describir la entrada de acceso que creó, utilice el siguiente mensaje: Describe an access entry in cluster eks-testing-new whose principal arn is <Principal-ARN-OF-ROLE>

    Resultado esperado:

    • El agente debe devolver los detalles sobre la entrada de acceso.

    • Los detalles deben coincidir con los que configuró anteriormente para la entrada de acceso.

  • Para eliminar la entrada de acceso que creó, utilice la siguiente solicitud: Delete the access entry in cluster eks-testing-new whose principal arn is <Principal-ARN-OF-ROLE>

    Resultado esperado:

    • El agente debe confirmar la eliminación de la entrada de acceso.

    • Para verificarlo, AWS Management Console compruébelo o utilice la API Amazon EKS y ejecute el siguiente comando: aws eks list-access-entries --cluster-name ekscluster

También puede pedirle al agente que realice acciones para las asociaciones de EKS Pod Identity. Para obtener más información, consulte la documentación de Amazon EKS para obtener más información sobre cómo EKS Pod Identity concede acceso a Servicios de AWS los pods.

AWS DevOps
TareaDescripciónHabilidades requeridas

Eliminación de recursos.

Para limpiar los recursos que creó este patrón, utilice el siguiente procedimiento. Espere a que se complete cada paso de eliminación antes de continuar con el siguiente paso.

aviso

Este procedimiento eliminará permanentemente todos los recursos creados por estas pilas. Asegúrese de haber realizado una copia de seguridad de todos los datos importantes antes de continuar.

  1. Para eliminar el clúster de Amazon EKS, ejecute el siguiente comando:

    eksctl delete cluster -f eks-deploy.yaml
    nota

    Esta operación puede tardar entre 15 y 20 minutos en completarse.

  2. Para eliminar los buckets de Amazon S3, ejecute los siguientes comandos:

    • Para vaciar la cubeta Lambda:

      aws s3 rm s3://bedrock-agent-lambda-artifacts-${AWS_ACCOUNT} --recursive
    • Para vaciar el depósito de la base de conocimientos:

      aws s3 rm s3://eks-knowledge-base-${AWS_ACCOUNT} –recursive
    • Para vaciar el depósito de esquemas de OpenAPI:

      aws s3 rm s3://bedrock-agent-openapi-schema-${AWS_ACCOUNT} –recursive
    • Para eliminar los depósitos vacíos:

      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 eliminar la CloudFormation pila, ejecuta el siguiente comando:

    aws cloudformation delete-stack \ --stack-name
  4. Para verificar la eliminación del clúster de Amazon EKS, ejecute el siguiente comando:

    eksctl get clusters
  5. Para verificar la eliminación de los buckets de Amazon S3, ejecute los siguientes comandos:

    • Para verificar la eliminación del depósito de Lambda:

      aws s3 ls | grep "bedrock-agent-lambda-artifacts"
    • Para verificar la eliminación del depósito de la base de conocimientos:

      aws s3 ls | grep "eks-knowledge-base"
    • Para verificar la eliminación del depósito de esquemas de OpenAPI:

      aws s3 ls | grep "bedrock-agent-openapi-schema"
  6. Para verificar la eliminación de la pila, ejecuta el siguiente comando:

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

    Si la pila no se elimina, consulta Solución de problemas.

AWS DevOps

Solución de problemas

ProblemaSolución

Se devuelve un código de error distinto de cero durante la configuración del entorno.

Compruebe que está utilizando la carpeta correcta al ejecutar cualquier comando para implementar esta solución. Para obtener más información, consulte el archivo First_Deploy.md en el repositorio de este patrón.

La función Lambda no puede realizar la tarea.

Asegúrese de que la conectividad esté configurada correctamente desde la función Lambda al clúster de Amazon EKS.

Las indicaciones del agente no reconocen el. APIs

Implementar la solución. Para obtener más información, consulte el archivo RE_Deploy.md en el repositorio de este patrón.

No se puede eliminar la pila.

Un intento inicial de eliminar la pila podría fallar. Este error puede producirse debido a problemas de dependencia con el recurso personalizado que se creó para la OpenSearch colección, que se encarga de la indexación de la base de conocimientos. Para eliminar la pila, vuelva a intentar la operación de eliminación conservando el recurso personalizado.

Recursos relacionados

AWS Blog

Documentación de Amazon Bedrock

Documentación de Amazon EKS