View a markdown version of this page

Permissões para o Beanstalk Cluster - AWS Elastic Beanstalk

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

Permissões para o Beanstalk Cluster

Um ambiente Beanstalk Cluster não usa o perfil de instância Amazon Elastic Compute Cloud (Amazon EC2) do Beanstalk Standard. Você fornece as funções do IAM que o Amazon EKS exige para seu cluster e nós, e a função que o Elastic Beanstalk usa para publicar as métricas, registros e rastreamentos do ambiente. Opcionalmente, você pode fornecer uma função de aplicativo para o aplicativo em execução. O Elastic Beanstalk usa uma função vinculada a serviços para sua própria operação do ambiente.

Funções que você fornece

Um ambiente Beanstalk Cluster usa uma função de cluster, uma função de nó e uma função de observabilidade. Quando você cria um ambiente no console do Elastic Beanstalk e aceita as configurações padrão de acesso ao serviço, o console cria todos os três para você, com os nomesNome, serviço confiável e permissões para cada função, quando eles ainda não existem na sua conta:

  • Função do cluster — O Amazon EKS assume essa função para o cluster que o Elastic Beanstalk cria. Passe seu ARN na cluster-role configuração do aws:elasticbeanstalk:eks namespace.

  • Função do nó — Os nós do Amazon EC2 do cluster assumem essa função, o que deve permitir que eles obtenham imagens de aplicativos do Amazon ECR. Passe seu ARN na node-role configuração do aws:elasticbeanstalk:eks namespace.

  • Função de observabilidade — Os componentes que publicam as métricas, registros e rastreamentos do ambiente assumem essa função por meio do Amazon EKS Pod Identity. Passe seu ARN na observability-role configuração do aws:elasticbeanstalk:eks:environment namespace.

Se você criar essas funções fora do console do Elastic Beanstalk, é altamente recomendável criá-las exatamente conforme especificado em. Nome, serviço confiável e permissões para cada função Em seguida, ao criar um ambiente, passe o ARN de cada função em sua opção de configuração. Para ver um exemplo prático, consulteComeçando com o Beanstalk Cluster.

Se você fornecer a fonte para o Elastic Beanstalk criar uma imagem de contêiner, você também fornecerá uma função de criação de imagem. AWS CodeBuild presume que ele execute a compilação em sua conta. Essa função pertence à compilação da versão do aplicativo e não ao ambiente em execução. Consulte Criação de imagens de contêiner para ambientes Beanstalk Cluster.

Você também pode fornecer uma função de aplicativo opcional, que seu aplicativo em execução usa para chamar AWS serviços. Consulte Permissões para aplicativos.

Importante

Use os nomes das funções na tabela a seguir. O console seleciona as funções existentes pelo nome, portanto, não seleciona uma função que você criou com um nome diferente, e você mesmo precisa escolher essa função. Os nomes também são importantes para a reutilização do cluster: o Elastic Beanstalk registra as funções de cluster, nó e observabilidade no cluster criado, e um ambiente posterior no mesmo conjunto de sub-redes deve fornecer as mesmas três funções. O Elastic Beanstalk rejeita um ambiente cujas funções são diferentes, em vez de colocá-lo em outro cluster. Consulte Agrupamento de ambientes.

Cada função confia em um serviço diferente e tem suas próprias permissões:

Nome, serviço confiável e permissões para cada função
Perfil Nome do perfil Serviço confiável AWS políticas gerenciadas
Função do do cluster aws-elasticbeanstalk-eks-cluster-role eks.amazonaws.com AmazonEKSClusterPolicy, AmazonEKSNetworkingPolicy, AmazonEKSComputePolicy, AmazonEKSBlockStoragePolicy, AmazonEKSLoadBalancingPolicy, AWSElasticBeanstalkEKSTagging
Função do nó aws-elasticbeanstalk-eks-node-role ec2.amazonaws.com AmazonEKSWorkerNodeMinimalPolicy, AmazonEC2ContainerRegistryPullOnly, AmazonSSMManagedInstanceCore
Papel de observabilidade aws-elasticbeanstalk-eks-observability-role pods.eks.amazonaws.com CloudWatchAgentServerPolicy, AWSElasticBeanstalkEKSObservability
Função de construção de imagem aws-elasticbeanstalk-eks-image-build-role codebuild.amazonaws.com AWSElasticBeanstalkEKSImageBuild
Função do aplicativo (opcional) Você escolhe o nome pods.eks.amazonaws.com Nenhum. Você concede somente as permissões de que seu aplicativo precisa. Consulte Configurar uma função de aplicativo.
Para fornecer as funções de cluster, nó e observabilidade
  1. Se você criar seu ambiente no console do Elastic Beanstalk, não precisará preparar nada. O console procura as três funções pelo nome, usando os nomes na tabela anterior, as seleciona quando elas já existem na sua conta e as cria quando não existem. Ele corresponde apenas ao nome da função, não ao ARN completo, e como os nomes das funções do IAM são exclusivos em uma conta, o caminho em que a função se encontra não afeta a correspondência.

  2. Se você usa o AWS CLI ou a API, crie primeiro as três funções. Nenhum cliente os cria para você. Dê a cada função o nome e o serviço confiável na tabela anterior e anexe as políticas listadas. As funções devem estar na mesma AWS conta do ambiente.

  3. Forneça todos os três ARNs nas observability-role configurações cluster-rolenode-role,, e ao criar o ambiente. Forneça a função de observabilidade explicitamente em vez de depender de um padrão, para que cada ambiente em um conjunto de sub-redes registre as mesmas funções.

  4. Se seu aplicativo chamar AWS serviços, configure a função opcional do aplicativo conforme descrito emConfigurar uma função de aplicativo.

O conjunto de sub-redes sozinho seleciona o cluster, portanto, use um conjunto de sub-redes diferente quando precisar de um cluster separado com diferentes funções de infraestrutura. Você não pode alterar as sub-redes ou as funções de cluster, nó e observabilidade de um ambiente existente do Beanstalk Cluster. Consulte Agrupamento de ambientes. A função opcional do aplicativo é específica de um ambiente e pode diferir entre os ambientes; consulteConfigurar uma função de aplicativo.

Permissões para criar o ambiente

Como você entrega essas funções ao Elastic Beanstalk, o diretor que cria o ambiente precisa de permissão para transferi-las. O Elastic Beanstalk verifica isso antes de provisionar qualquer coisa, então conceda o seguinte a esse diretor:

  • iam:GetRolee iam:PassRole em cada função que você passa: as funções de cluster, nó e observabilidade, e também a função do aplicativo e a função de criação de imagem, se você as usar. Escopo iam:PassRole com a chave de iam:PassedToService condição. Seus valores são os serviços que recebem as funções: eks.amazonaws.com para a função de cluster, ec2.amazonaws.com para a função de nó, pods.eks.amazonaws.com para as funções de observabilidade e aplicação, codebuild.amazonaws.com para a função de criação de imagem e elasticbeanstalk.amazonaws.com porque o Elastic Beanstalk passa essas funções em seu nome.

  • iam:CreateServiceLinkedRole, que o primeiro ambiente Beanstalk Cluster em uma conta precisa para que o Elastic Beanstalk e o Amazon EKS possam criar suas funções vinculadas a serviços. Defina o escopo com a chave de iam:AWSServiceName condição, cujos valores são elasticbeanstalk.amazonaws.com eks.amazonaws.com e.

A política a seguir concede tudo isso. Substitua o ID da conta pelo seu, use o nome da função do seu aplicativo e remova qualquer função que você não passar. Os nomes das funções mostrados são os da tabela anterior, que o console cria e seleciona.

Diferentemente do console, que seleciona uma função pelo nome, uma política corresponde a uma função pelo ARN completo, portanto, cada Resource entrada precisa incluir o caminho do IAM da função. As funções que o console cria permanecem/service-role/, conforme mostrado aqui. Se você criou uma função de outra forma, ela pode não ter um caminho; nesse caso, seu ARN éarn:aws:iam::111122223333:role/role-name. Para ler o ARN de uma função, executeaws 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á em sua própria declaração porque a chave de iam:PassedToService condição existe somente em uma PassRole solicitação. Aplicá-la iam:GetRole na mesma declaração impediria que essa permissão fosse concedida.

Esta política abrange apenas a aprovação das funções. Ele não concede as ações do Elastic Beanstalk que a criação de um aplicativo e de um ambiente exige.

Sem essas permissões, CreateEnvironment falha com um AccessDenied erro ao nomear a ação que não pôde executar. Para obter mais informações, consulte Conceder uma permissão principal para passar uma função para um AWS serviço CreateEnvironment e.

Funções que o Elastic Beanstalk gerencia

O Elastic Beanstalk opera um ambiente Beanstalk Cluster por meio da função AWSServiceRoleForElasticBeanstalk vinculada ao serviço, que ele cria em sua conta. Você não cria, configura ou transmite essa função. O Amazon EKS também usa sua própria função vinculada a serviços,. AWSServiceRoleForAmazonEKS Para saber como o Elastic Beanstalk usa funções vinculadas a serviços, consulte. Usar funções vinculadas ao serviço para o Elastic Beanstalk

Confirme as funções que o ambiente usa

Depois que o ambiente atingir o Ready estado, leia sua configuração resolvida:

$ 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 se as entradas do cluster, do nó e da função de observabilidade contêm os ARNs fornecidos durante a criação. Se o ambiente usar uma função de aplicativo, execute a verificação de identidade de credencial Configurar uma função de aplicativo e confirme se o ARN retornado identifica a função selecionada. Para uma versão de aplicativo baseada na fonte, aguarde até que a versão seja relatadaPROCESSED; esse estado confirma que AWS CodeBuild poderia usar a função de construção e concluir a criação da imagem. Consulte Criação de imagens de contêiner para ambientes Beanstalk Cluster.

Permissões para aplicativos

Use uma função de aplicativo quando o aplicativo em execução precisar chamar AWS serviços. Configure a função antes de criar o ambiente e conceda somente as permissões exigidas pelo aplicativo. O aplicativo recebe a função por meio do Amazon EKS Pod Identity em vez de por meio de um perfil de instância do Amazon EC2.

Passe o ARN da função na application-role configuração do aws:elasticbeanstalk:eks:environment namespace ou selecione a função no console do Elastic Beanstalk ao criar o ambiente.

A função do aplicativo também é a função que lê as credenciais de um back-end de observabilidade de terceiros. Se você definir qualquer back-end de observabilidade comocustom, conceda a função do aplicativo secretsmanager:GetSecretValue e secretsmanager:DescribeSecret o segredo do Secrets Manager nomeado por. custom-credentials Consulte Envio de dados de observabilidade para um back-end de terceiros.

Configurar uma função de aplicativo

Crie a função do aplicativo antes de criar o ambiente. Conceda à função somente as ações e os recursos necessários ao aplicativo. Configure sua política de confiança para o Amazon EKS Pod Identity, incluindo sts:AssumeRole e sts:TagSession para o principal do pods.eks.amazonaws.com serviço:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ] } ] }
  1. Crie a função com a política de confiança anterior.

  2. Anexe uma política baseada em identidade que conceda somente as ações de serviço e os recursos exigidos pelo aplicativo.

  3. No console do Elastic Beanstalk, inicie o fluxo de trabalho de criação do ambiente e expanda o acesso ao serviço.

  4. Escolha a função em Função do aplicativo - opcional. Conclua a configuração restante do ambiente e, em seguida, crie o ambiente.

    Com a AWS CLI ou a API, escolha a função adicionando a application-role opção à sua create-environment solicitação em vez disso:

    --option-settings \ Namespace=aws:elasticbeanstalk:eks:environment,OptionName=application-role,Value=arn:aws:iam::111122223333:role/my-application-role
  5. Depois que o aplicativo for implantado, chame o AWS serviço necessário a partir do aplicativo. Para verificar a identidade da credencial independentemente da política de serviço, ligue AWS STS GetCallerIdentity e confirme se o ARN retornado identifica a função do aplicativo selecionada.

Se o aplicativo receberAccessDenied, verifique se você selecionou a função pretendida durante a criação do ambiente, se sua política de confiança permite o Amazon EKS Pod Identity e se sua política baseada em identidade permite a ação e o recurso solicitados. Corrija a política de confiança ou permissões e repita a verificação de identidade da credencial e a chamada do serviço do aplicativo. Se a função errada foi selecionada, crie um ambiente substituto com a função pretendida em vez de adicionar permissões de aplicativo à função errada. Use funções de aplicativo separadas quando os ambientes exigirem acesso diferente. Não conceda permissões de aplicativo para a função de cluster ou nó.

Diagnosticar falhas de função

Comece com os eventos do Elastic Beanstalk para o ambiente. operation_startDefina o carimbo de data/hora registrado imediatamente antes da falha na solicitação:

$ 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
A criação do ambiente rejeita uma função de infraestrutura

Confirme se a função está na conta do ambiente, se sua política de confiança e as políticas anexadas correspondem às diretrizes atuais do Amazon EKS Auto Mode e se o ARN está completo. Se o conjunto de sub-redes solicitado já tiver um cluster registrado, use suas funções registradas de cluster e nó. O erro de operação identifica valores conflitantes solicitados e registrados. Corrija a solicitação e crie o ambiente novamente. Você não pode substituir essas funções em um ambiente existente.

A imagem do aplicativo não pode ser recuperada

Verifique se a função do nó tem as permissões de recuperação e a política de confiança documentadas do Amazon ECR. Verifique também o URI da imagem e qualquer política de repositório que restrinja o acesso. Corrija a política da função ou do repositório e implante a versão do aplicativo novamente.

Relatórios de compilação de uma fonte FAILED

Verifique a função de compilação na configuração de compilação da versão do aplicativo e inspecione o diagnóstico de compilação. Corrija a política de confiança ou permissões da função antes de criar uma nova versão do aplicativo. Consulte Criação de imagens de contêiner para ambientes Beanstalk Cluster.

O aplicativo em execução recebe AccessDenied

Use as verificações da função do aplicativo. Configurar uma função de aplicativo Primeiro, confirme a identidade da credencial e, em seguida, compare a ação e o recurso negados nos registros e CloudTrail eventos do aplicativo com a política de função.