

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
<a name="beanstalk-cluster-permissions"></a>

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
<a name="beanstalk-cluster-permissions-customer-roles"></a>

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 nomes[Nome, serviço confiável e permissões para cada função](#beanstalk-cluster-permissions-role-details), 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](#beanstalk-cluster-permissions-role-details) 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, consulte[Começando com o Beanstalk Cluster](beanstalk-cluster-getting-started.md).

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](beanstalk-cluster-app-versions.md).

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](#beanstalk-cluster-permissions-application).

**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](beanstalk-cluster-concepts.md#beanstalk-cluster-clusters-sharing).

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](#beanstalk-cluster-permissions-application-role). | 

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

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

1. Forneça todos os três ARNs nas `observability-role` configurações `cluster-role``node-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.

1. Se seu aplicativo chamar AWS serviços, configure a função opcional do aplicativo conforme descrito em[Configurar uma função de aplicativo](#beanstalk-cluster-permissions-application-role).

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](beanstalk-cluster-concepts.md#beanstalk-cluster-clusters-sharing). A função opcional do aplicativo é específica de um ambiente e pode diferir entre os ambientes; consulte[Configurar uma função de aplicativo](#beanstalk-cluster-permissions-application-role).

## Permissões para criar o ambiente
<a name="beanstalk-cluster-permissions-caller"></a>

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:GetRole`e `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, execute`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:GetRole`está 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 ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html) [`CreateEnvironment`](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_CreateEnvironment.html) e.

## Funções que o Elastic Beanstalk gerencia
<a name="beanstalk-cluster-permissions-service-roles"></a>

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](using-service-linked-roles.md)

## Confirme as funções que o ambiente usa
<a name="beanstalk-cluster-permissions-verify"></a>

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](#beanstalk-cluster-permissions-application-role) 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 relatada`PROCESSED`; 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](beanstalk-cluster-app-versions.md).

## Permissões para aplicativos
<a name="beanstalk-cluster-permissions-application"></a>

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 como`custom`, 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](monitoring-cluster-environments.md#monitoring-cluster-environments-custom-backend).

### Configurar uma função de aplicativo
<a name="beanstalk-cluster-permissions-application-role"></a>

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.

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

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

1. 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}}
   ```

1. 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 receber`AccessDenied`, 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
<a name="beanstalk-cluster-permissions-diagnosis"></a>

Comece com os eventos do Elastic Beanstalk para o ambiente. `operation_start`Defina 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](beanstalk-cluster-app-versions.md).

O aplicativo em execução recebe `AccessDenied`  
Use as verificações da função do aplicativo. [Configurar uma função de aplicativo](#beanstalk-cluster-permissions-application-role) 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.