View a markdown version of this page

Permisos para Beanstalk Cluster - AWS Elastic Beanstalk

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.

Permisos para Beanstalk Cluster

Un entorno de Beanstalk Cluster no utiliza el perfil de instancia de Amazon Elastic Compute Cloud (Amazon EC2) de Beanstalk Standard. Usted proporciona las funciones de IAM que Amazon EKS requiere para su clúster y sus nodos, y la función que Elastic Beanstalk utiliza para publicar las métricas, los registros y los seguimientos del entorno. Si lo desea, puede proporcionar un rol de aplicación para la aplicación en ejecución. Elastic Beanstalk usa un rol vinculado a un servicio para su propio funcionamiento del entorno.

Funciones que usted proporciona

Un entorno de Beanstalk Cluster utiliza un rol de clúster, un rol de nodo y un rol de observabilidad. Cuando creas un entorno en la consola de Elastic Beanstalk y aceptas la configuración predeterminada de acceso a los servicios, la consola crea los tres automáticamente, con los nombres escritosNombre, servicio de confianza y permisos para cada rol, cuando aún no existen en tu cuenta:

  • Función de clúster: Amazon EKS asume esta función para el clúster que crea Elastic Beanstalk. Pase su ARN a la cluster-role configuración del espacio de nombres. aws:elasticbeanstalk:eks

  • Función de nodo: los nodos de Amazon EC2 del clúster asumen esta función, que debe permitirles extraer imágenes de aplicaciones de Amazon ECR. Pase su ARN a la node-role configuración del espacio de nombres. aws:elasticbeanstalk:eks

  • Función de observabilidad: los componentes que publican las métricas, los registros y los seguimientos del entorno asumen esta función a través de Amazon EKS Pod Identity. Pase su ARN a la observability-role configuración del espacio de nombres. aws:elasticbeanstalk:eks:environment

Si crea estos roles fuera de la consola de Elastic Beanstalk, le recomendamos encarecidamente que los cree exactamente como se especifica en. Nombre, servicio de confianza y permisos para cada rol A continuación, cuando cree un entorno, transfiera el ARN de cada rol a su opción de configuración. Para ver un ejemplo práctico, consultePrimeros pasos con Beanstalk Cluster.

Si proporciona una fuente para que Elastic Beanstalk la incorpore en una imagen de contenedor, también proporciona una función de creación de imágenes. AWS CodeBuild lo asume para ejecutar la compilación en tu cuenta. Esta función pertenece a la versión de compilación de la aplicación y no al entorno en ejecución. Consulte Creación de imágenes de contenedores para entornos de Beanstalk Cluster.

También puede proporcionar un rol de aplicación opcional, que la aplicación en ejecución utiliza para llamar AWS a los servicios. Consulte Permisos de aplicación.

importante

Usa los nombres de los roles de la tabla siguiente. La consola selecciona los roles existentes por nombre, por lo que no selecciona un rol que hayas creado con un nombre diferente, sino que tienes que elegir ese rol tú mismo. Los nombres también son importantes a la hora de reutilizar los clústeres: Elastic Beanstalk registra los roles de clúster, nodo y observabilidad en el clúster que crea, y un entorno posterior del mismo conjunto de subredes debe proporcionar los mismos tres roles. Elastic Beanstalk rechaza un entorno cuyas funciones son diferentes, en lugar de colocarlo en otro clúster. Consulte Agrupación de entornos.

Cada rol confía en un servicio diferente y tiene sus propios permisos:

Nombre, servicio de confianza y permisos para cada rol
Rol Nombre del rol Servicio de confianza AWS políticas administradas
Rol de del clúster aws-elasticbeanstalk-eks-cluster-role eks.amazonaws.com AmazonEKSClusterPolicy, AmazonEKSNetworkingPolicy, AmazonEKSComputePolicy, AmazonEKSBlockStoragePolicy, AmazonEKSLoadBalancingPolicy, AWSElasticBeanstalkEKSTagging
Función de nodo aws-elasticbeanstalk-eks-node-role ec2.amazonaws.com AmazonEKSWorkerNodeMinimalPolicy, AmazonEC2ContainerRegistryPullOnly, AmazonSSMManagedInstanceCore
Función de observabilidad aws-elasticbeanstalk-eks-observability-role pods.eks.amazonaws.com CloudWatchAgentServerPolicy, AWSElasticBeanstalkEKSObservability
Función de creación de imágenes aws-elasticbeanstalk-eks-image-build-role codebuild.amazonaws.com AWSElasticBeanstalkEKSImageBuild
Función de aplicación (opcional) Tú eliges el nombre pods.eks.amazonaws.com Ninguna. Solo concedes los permisos que necesita tu aplicación. Consulte Configura un rol de aplicación.
Para proporcionar las funciones de clúster, nodo y observabilidad
  1. Si crea su entorno en la consola de Elastic Beanstalk, no necesita preparar nada. La consola busca los tres roles por nombre, utilizando los nombres de la tabla anterior, los selecciona cuando ya existen en su cuenta y los crea cuando no existen. Coincide solo en el nombre del rol, no en el ARN completo, y dado que los nombres de los roles de IAM son únicos en una cuenta, la ruta en la que se encuentra un rol no afecta a la coincidencia.

  2. Si utiliza la API AWS CLI o la API, cree primero los tres roles. Ninguno de los clientes los crea por ti. Asigne a cada rol el nombre y el servicio de confianza de la tabla anterior y adjunte las políticas enumeradas. Los roles deben estar en la misma AWS cuenta que el entorno.

  3. Proporcione los tres ARN en la cluster-role observability-role configuración y al crear el entorno. node-role Proporcione el rol de observabilidad de forma explícita en lugar de confiar en un valor predeterminado, de modo que todos los entornos de un conjunto de subredes registren los mismos roles.

  4. Si su aplicación llama a AWS servicios, configure el rol de aplicación opcional tal y como se describe en. Configura un rol de aplicación

El conjunto de subredes por sí solo selecciona el clúster, por lo que debe usar un conjunto de subredes diferente cuando necesite un clúster independiente con diferentes funciones de infraestructura. No puede cambiar las subredes ni las funciones de clúster, nodo y observabilidad de un entorno de Beanstalk Cluster existente. Consulte Agrupación de entornos. El rol de aplicación opcional es específico de un entorno y puede diferir de un entorno a otro; consulte. Configura un rol de aplicación

Permisos para crear el entorno

Dado que estas funciones se transfieren a Elastic Beanstalk, el director que crea el entorno necesita permiso para transferirlas. Elastic Beanstalk lo verifica antes de aprovisionar nada, por lo que debe conceder lo siguiente a ese director:

  • iam:GetRoley iam:PassRole en cada rol que transfiera: los roles de clúster, nodo y observabilidad, y también el rol de aplicación y el rol de creación de imágenes, si los usa. Alcance iam:PassRole con la clave de iam:PassedToService condición. Sus valores son los servicios que reciben las funciones: eks.amazonaws.com para la función de clúster, ec2.amazonaws.com para la función de nodo, pods.eks.amazonaws.com para las funciones de observabilidad y aplicación, codebuild.amazonaws.com para la función de creación de imágenes y elasticbeanstalk.amazonaws.com porque Elastic Beanstalk transfiere estas funciones en su nombre.

  • iam:CreateServiceLinkedRole, que el primer entorno de Beanstalk Cluster de una cuenta necesita para que Elastic Beanstalk y Amazon EKS puedan crear sus funciones vinculadas a servicios. Limítelo con la clave de condición, cuyos valores son yiam:AWSServiceName. elasticbeanstalk.amazonaws.com eks.amazonaws.com

La siguiente política garantiza todo esto. Sustituye el identificador de la cuenta por el tuyo, usa el nombre del rol de la aplicación y elimina cualquier rol que no hayas aprobado. Los nombres de los roles que se muestran son los de la tabla anterior, que la consola crea y selecciona.

A diferencia de la consola, que selecciona un rol por su nombre, una política relaciona un rol por su ARN completo, por lo que cada Resource entrada debe incluir la ruta de IAM del rol. Los roles que crea la consola son /service-role/ los siguientes: Si creaste un rol de otra forma, es posible que no tenga ninguna ruta, en cuyo caso su ARN esarn:aws:iam::111122223333:role/role-name. Para leer el ARN de un rol, ejecuta. aws iam get-role --role-name role-name --query Role.Arn --output text

{ "Version": "2012-10-17", "Statement": [ { "Sid": "InspectTheRoles", "Effect": "Allow", "Action": "iam:GetRole", "Resource": [ "arn:aws:iam::111122223333:role/service-role/aws-elasticbeanstalk-eks-cluster-role", "arn:aws:iam::111122223333:role/service-role/aws-elasticbeanstalk-eks-node-role", "arn:aws:iam::111122223333:role/service-role/aws-elasticbeanstalk-eks-observability-role", "arn:aws:iam::111122223333:role/service-role/aws-elasticbeanstalk-eks-image-build-role", "arn:aws:iam::111122223333:role/my-application-role" ] }, { "Sid": "PassTheRolesToBeanstalk", "Effect": "Allow", "Action": "iam:PassRole", "Resource": [ "arn:aws:iam::111122223333:role/service-role/aws-elasticbeanstalk-eks-cluster-role", "arn:aws:iam::111122223333:role/service-role/aws-elasticbeanstalk-eks-node-role", "arn:aws:iam::111122223333:role/service-role/aws-elasticbeanstalk-eks-observability-role", "arn:aws:iam::111122223333:role/service-role/aws-elasticbeanstalk-eks-image-build-role", "arn:aws:iam::111122223333:role/my-application-role" ], "Condition": { "StringEquals": { "iam:PassedToService": [ "eks.amazonaws.com", "ec2.amazonaws.com", "pods.eks.amazonaws.com", "codebuild.amazonaws.com", "elasticbeanstalk.amazonaws.com" ] } } }, { "Sid": "CreateServiceLinkedRolesOnFirstEnvironment", "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "arn:aws:iam::111122223333:role/aws-service-role/*", "Condition": { "StringEquals": { "iam:AWSServiceName": [ "elasticbeanstalk.amazonaws.com", "eks.amazonaws.com" ] } } } ] }

iam:GetRoleestá en su propia sentencia porque la clave de iam:PassedToService condición solo existe en una PassRole solicitud. Aplicarlo iam:GetRole en la misma declaración impediría en absoluto que se concediera ese permiso.

Esta política cubre únicamente la transferencia de funciones. No otorga las acciones de Elastic Beanstalk que requiere la creación de una aplicación y un entorno.

Sin estos permisos, CreateEnvironment produce un AccessDenied error al asignar un nombre a la acción que no pudo realizar. Para obtener más información, consulte Otorgar un permiso principal para transferir un rol a un AWS servicio y CreateEnvironment.

Funciones que administra Elastic Beanstalk

Elastic Beanstalk opera un entorno de Beanstalk Cluster a través del rol vinculado al AWSServiceRoleForElasticBeanstalk servicio, que crea en su cuenta. Este rol no se crea, se configura ni se transfiere. Amazon EKS también utiliza su propia función vinculada a un servicio. AWSServiceRoleForAmazonEKS Para saber cómo Elastic Beanstalk usa los roles vinculados a servicios, consulte. Uso de roles vinculados a servicios para Elastic Beanstalk

Confirme las funciones que usa el entorno

Cuando el entorno alcance el Ready estado, lea su configuración resuelta:

$ aws elasticbeanstalk describe-configuration-settings \ --application-name my-app \ --environment-name my-cluster-env \ --query "ConfigurationSettings[0].OptionSettings[?OptionName=='cluster-role' || OptionName=='node-role' || OptionName=='observability-role'].[Namespace,OptionName,Value]" \ --output table

Confirme que las entradas de clúster, nodo y rol de observabilidad contengan los ARN proporcionados durante la creación. Si el entorno usa un rol de aplicación, ejecute la verificación de credenciales e identidad Configura un rol de aplicación y confirme que el ARN devuelto identifica el rol seleccionado. En el caso de una versión de aplicación basada en el código fuente, espere a que aparezca la versiónPROCESSED; ese estado confirma que AWS CodeBuild podría usar el rol de compilación y completar la creación de la imagen. Consulte Creación de imágenes de contenedores para entornos de Beanstalk Cluster.

Permisos de aplicación

Utilice un rol de aplicación cuando la aplicación en ejecución deba llamar a AWS los servicios. Configure el rol antes de crear el entorno y conceda solo los permisos que requiere la aplicación. La aplicación recibe el rol a través de Amazon EKS Pod Identity y no a través de un perfil de instancia de Amazon EC2.

Pase el ARN del rol a la application-role configuración del espacio de aws:elasticbeanstalk:eks:environment nombres o seleccione el rol en la consola de Elastic Beanstalk al crear el entorno.

El rol de la aplicación también es el rol que lee las credenciales de un backend de observabilidad externo. Si configuras cualquier backend de observabilidad encustom, otorga la función a la aplicación secretsmanager:GetSecretValue y secretsmanager:DescribeSecret al secreto de Secrets Manager nombrado por. custom-credentials Consulte Enviar datos de observabilidad a un backend de terceros.

Configura un rol de aplicación

Cree el rol de la aplicación antes de crear el entorno. Otorgue al rol solo las acciones y los recursos que requiere la aplicación. Configure su política de confianza para Amazon EKS Pod Identity, incluida sts:AssumeRole y sts:TagSession para el principal del pods.eks.amazonaws.com servicio:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ] } ] }
  1. Cree el rol con la política de confianza anterior.

  2. Adjunte una política basada en la identidad que otorgue solo las acciones de servicio y los recursos que requiere la aplicación.

  3. En la consola de Elastic Beanstalk, inicie el flujo de trabajo de creación del entorno y amplíe el acceso al servicio.

  4. Elija el rol en Rol de aplicación: opcional. Complete la configuración restante del entorno y, a continuación, cree el entorno.

    Con la API AWS CLI o la API, elija el rol; en su lugar, añada la application-role opción a su create-environment solicitud:

    --option-settings \ Namespace=aws:elasticbeanstalk:eks:environment,OptionName=application-role,Value=arn:aws:iam::111122223333:role/my-application-role
  5. Una vez implementada la aplicación, llama al AWS servicio requerido desde la aplicación. Para verificar la identidad de las credenciales independientemente de la política de servicio, llame AWS STS GetCallerIdentity y confirme que el ARN devuelto identifica el rol de la aplicación seleccionado.

Si la aplicación lo recibeAccessDenied, comprueba que has seleccionado el rol deseado durante la creación del entorno, que su política de confianza permite la identidad de los pods de Amazon EKS y que su política basada en la identidad permite la acción y el recurso solicitados. Corrija la política de confianza o de permisos y repita la comprobación de identidad y credenciales y la llamada al servicio de la solicitud. Si se seleccionó el rol incorrecto, cree un entorno de reemplazo con el rol deseado en lugar de agregar permisos de aplicación al rol incorrecto. Utilice funciones de aplicación independientes cuando los entornos requieran un acceso diferente. No conceda permisos de aplicación al rol de clúster o nodo.

Diagnostique errores de rol

Comience con los eventos de Elastic Beanstalk para el entorno. operation_startEstablezca la marca de tiempo registrada inmediatamente antes de la solicitud fallida:

$ operation_start='timestamp-recorded-before-the-request' $ aws elasticbeanstalk describe-events \ --environment-name my-cluster-env \ --severity ERROR \ --start-time "$operation_start" \ --max-items 20
La creación de un entorno rechaza una función de infraestructura

Confirme que el rol esté en la cuenta de entorno, que su política de confianza y las políticas adjuntas coincidan con las directrices actuales del modo automático de Amazon EKS y que su ARN esté completo. Si el conjunto de subredes solicitado ya tiene un clúster registrado, utilice sus funciones de clúster y nodo registrados. El error de operación identifica valores conflictivos entre los valores solicitados y registrados. Corrija la solicitud y vuelva a crear el entorno. No puede reemplazar estas funciones en un entorno existente.

No se puede recuperar la imagen de la aplicación

Compruebe que el rol de nodo cuente con la política de confianza y permisos de recuperación de Amazon ECR documentada. Compruebe también el URI de la imagen y cualquier política de repositorio que restrinja el acceso. Corrija la política del rol o del repositorio y, a continuación, vuelva a implementar la versión de la aplicación.

Una fuente genera informes FAILED

Verifique el rol de compilación en la configuración de compilación de la versión de la aplicación e inspeccione los diagnósticos de compilación. Corrija la política de permisos o confianza del rol antes de crear una nueva versión de la aplicación. Consulte Creación de imágenes de contenedores para entornos de Beanstalk Cluster.

La aplicación en ejecución recibe AccessDenied

Utilice el rol de la aplicación para registrarse. Configura un rol de aplicación Confirme primero la identidad de la credencial y, a continuación, compare la acción y el recurso denegados en los registros de la aplicación y el CloudTrail evento con la política de roles.