

 **Ajudar a melhorar esta página** 

Para contribuir com este guia de usuário, escolha o link **Editar esta página no GitHub**, disponível no painel direito de cada página.

# Acessar Recursos da AWS usando os perfis do IAM de destino da Identidade de Pods do EKS
<a name="pod-id-assign-target-role"></a>

Ao executar aplicações no Amazon Elastic Kubernetes Service (Amazon EKS), talvez você precise acessar recursos da AWS que existem em diferentes contas da AWS. Este guia mostra como configurar o acesso entre contas usando a Identidade de Pods do EKS, que permite que seus pods do Kubernetes acessem outros recursos da AWS usando perfis de destino.

## Pré-requisitos
<a name="_prerequisites"></a>

Antes de começar, certifique-se de ter concluído as seguintes etapas:
+  [Configurar o agente da Identidade de Pods do Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-agent-setup.html) 
+  [Criar perfil da Identidade de Pods do EKS](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-role.html) 

## Como funciona
<a name="_how_it_works"></a>

A Identidade de Pods permite que as aplicações em seu cluster de EKS acessem recursos da AWS em várias contas por meio de um processo chamado encadeamento de perfis.

Ao criar uma associação da Identidade de Pods, é possível fornecer dois perfis do IAM: um [perfil da Identidade de Pods do EKS](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-role.html) na mesma conta do cluster de EKS e um perfil do IAM de destino da conta que contém os recursos da AWS (como buckets do S3 ou bancos de dados RDS). O [perfil da Identidade de Pods do EKS](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-role.html) deve estar na conta do cluster de EKS devido aos requisitos do [IAM PassRole](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_iam-passrole-service.html), enquanto o perfil do IAM de destino pode estar em qualquer conta da AWS. O PassRole permite que uma entidade da AWS delegue a suposição de perfil a outro serviço. A Identidade de Pods do EKS usa o PassRole para conectar um perfil a uma conta de serviço do Kubernetes, exigindo que o perfil e a identidade que a transmitem estejam na mesma conta da AWS que o cluster de EKS. Quando o pod da aplicação precisa acessar os recursos da AWS, ele solicita as credenciais da Identidade de Pods. Em seguida, a Identidade de Pods executa automaticamente duas suposições de perfil em sequência: primeiro, assumindo o [perfil da Identidade de Pods do EKS](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-role.html) e, em seguida, usando essas credenciais para assumir o perfil do IAM de destino. Esse processo fornece ao seu pod credenciais temporárias que têm as permissões definidas no perfil de destino, permitindo acesso seguro aos recursos em outras contas da AWS.

## Considerações sobre armazenamento em cache
<a name="_caching_considerations"></a>

Devido aos mecanismos de armazenamento em cache, as atualizações de um perfil do IAM em uma associação existente da Identidade de Pods podem não entrar em vigor imediatamente nos pods em execução no cluster de EKS. O agente da Identidade de Pods armazena em cache as credenciais do IAM com base na configuração da associação no momento em que as credenciais são obtidas. Se a associação incluir apenas um [perfil da Identidade de Pods do EKS](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-role.html) e nenhum perfil do IAM de destino, a duração das credenciais em cache será de seis horas. Se a associação incluir o ARN do [perfil da Identidade de Pods do EKS](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-role.html) e um perfil do IAM de destino, as credenciais em cache vão durar 59 minutos. Modificar uma associação existente, como atualizar o ARN do [perfil da Identidade de Pods do EKS](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-role.html) ou adicionar um perfil do IAM de destino, não redefine o cache existente. Como resultado, o agente não reconhecerá as atualizações até que as credenciais em cache sejam atualizadas. Para aplicar as alterações antes, você pode recriar os pods existentes; caso contrário, você precisará esperar que o cache expire.

## Etapa 1: criar e associar um perfil do IAM de destino
<a name="_step_1_create_and_associate_a_target_iam_role"></a>

Nesta etapa, você estabelecerá uma cadeia de confiança segura criando e configurando um perfil do IAM de destino. Para fins de demonstração, criaremos um novo perfil do IAM de destino para estabelecer uma cadeia de confiança entre duas contas da AWS: o [perfil da Identidade de Pods do EKS](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-role.html) (por exemplo, `eks-pod-identity-primary-role`) na conta da AWS do cluster de EKS ganha permissão para assumir o perfil do IAM de destino (por exemplo, `eks-pod-identity-aws-resources`) em sua conta de destino, permitindo o acesso a recursos da AWS como buckets do Amazon S3.

### Criar perfil do IAM de destino
<a name="_create_the_target_iam_role"></a>

1. Abra o [console do Amazon IAM](https://console.aws.amazon.com/iam/home).

1. Na barra de navegação superior, verifique se você fez login na conta que contém os recursos da AWS (como buckets do S3 ou tabelas do DynamoDB) para o perfil do IAM de destino.

1. No painel de navegação à esquerda, selecione **Perfis**.

1. Escolha o botão **Criar perfil** e, em seguida, **Conta da AWS** em "Tipo de entidade confiável".

1. Escolha **Outra conta da AWS**, insira o número da sua conta da AWS (a conta em que seu [perfil da Identidade de Pods do EKS](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-role.html) existe) e escolha **Avançar**.

1. Adicione as políticas de permissão que você gostaria de associar ao perfil (por exemplo, AmazonS3FullAccess) e escolha **Avançar**.

1. Insira um nome de perfil, como `MyCustomIAMTargetRole`, e escolha **Criar perfil**.

### Atualizar a política de confiança de um perfil do IAM de destino
<a name="_update_the_target_iam_role_trust_policy"></a>

1. Depois de criar o perfil, você retornará à lista de **Perfis**. Encontre e selecione o novo perfil que você criou na etapa anterior (por exemplo, `MyCustomIAMTargetRole`).

1. Selecione a guia **Relações de confiança**.

1. Clique em **Editar política de confiança** no lado direito.

1. No editor de políticas, substitua a política JSON padrão pela sua política de confiança. Substitua os valores do espaço reservado pelo nome do perfil e `111122223333` no ARN do perfil do IAM pelo ID da conta da AWS que hospeda o cluster de EKS. Opcionalmente, você também pode usar PrincipalTags na política de confiança do perfil para autorizar somente contas de serviço específicas de um determinado cluster e namespace a assumir seu perfil de destino. Por exemplo:

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:root"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:TagSession"
      ],
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/eks-cluster-arn": "arn:aws:eks:us-east-1:111122223333:cluster/example-cluster",
          "aws:RequestTag/kubernetes-namespace": "ExampleNameSpace",
          "aws:RequestTag/kubernetes-service-account": "ExampleServiceAccountName"
        },
        "ArnEquals": {
          "aws:PrincipalARN": "arn:aws:iam::111122223333:role/eks-pod-identity-primary-role"
        }
      }
    }
  ]
}
```

A política acima permite que o perfil `eks-pod-identeity-primary-role` da conta da AWS 111122223333 com as tags de sessão de [Identidade de Pods do EKS](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-abac.html) relevantes assumam esse perfil.

Se você [desativou as tags de sessão](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-abac.html#pod-id-abac-tags) na sua Identidade de Pods do EKS, a Identidade de Pods do EKS também define `sts:ExternalId` com informações sobre o cluster, namespace e conta de serviço de um pod ao assumir um perfil de destino.

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:root"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "sts:ExternalId": "region/111122223333/cluster-name/namespace/service-account-name"
        },
        "ArnEquals": {
          "aws:PrincipalARN": "arn:aws:iam::111122223333:role/eks-pod-identity-primary-role"
        }
      }
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:root"
      },
      "Action": "sts:TagSession"
    }
  ]
}
```

A política acima ajuda a garantir que somente o cluster, namespace e conta de serviço esperados possam assumir o perfil de destino.

### Atualizar a política de permissão para o perfil da Identidade de Pods do EKS
<a name="_update_the_permission_policy_for_eks_pod_identity_role"></a>

Nesta etapa, você atualizará a política de permissão do [perfil da Identidade de Pods do EKS](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-role.html) associada ao cluster do Amazon EKS adicionando o ARN do perfil do IAM de destino como um recurso.

1. Abra o [console do Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. No painel de navegação à esquerda, selecione **Clusters** e depois o nome do seu cluster de EKS.

1. Escolha a guia **Acesso**.

1. Em **Associações da Identidade de Pods**, selecione seu [perfil da Identidade de Pods do EKS](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-role.html).

1. Escolha **Permissões**, **Adicionar permissões** e **Criar política em linha**.

1. Escolha **JSON** no lado direito.

1. No editor de políticas, substitua a política JSON padrão pela sua política de permissão. Substitua o valor do espaço reservado pelo nome do perfil e `222233334444` no ARN do perfil do IAM pelo perfil do IAM de destino. Por exemplo:

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sts:AssumeRole",
                "sts:TagSession"
            ],
            "Resource": "arn:aws:iam::222233334444:role/eks-pod-identity-aws-resources"
        }
    ]
}
```

## Etapa 2: associar o perfil do IAM de destino a uma conta de serviço do Kubernetes
<a name="_step_2_associate_the_target_iam_role_to_a_kubernetes_service_account"></a>

Nesta etapa, você criará uma associação entre o perfil do IAM de destino e a conta de serviço do Kubernetes no cluster de EKS.

1. Abra o [console do Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. No painel de navegação à esquerda, selecione **Clusters** e depois o nome do cluster para o qual você deseja adicionar a associação.

1. Escolha a guia **Acesso**.

1. Nas **Associações do Pod Identity**, escolha **Criar**.

1. Escolha o [perfil da Identidade de Pods do EKS](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-role.html) em **Perfil do IAM** para que suas workloads assumam.

1. Escolha o perfil do IAM de destino em **Perfil do IAM de destino** que será assumido pelo [perfil da Identidade de Pods do EKS](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-role.html).

1. No campo **Namespace do Kubernetes**, insira o nome do namespace em que você deseja criar a associação (por exemplo, `my-app-namespace`). Isso definirá onde a conta de serviço vai residir.

1. No campo **Conta de serviço do Kubernetes**, insira o nome da conta de serviço (por exemplo, `my-service-account`) que usará as credenciais do IAM. Isso vinculará o perfil do IAM à conta de serviço.

1. (Opcional) Selecione **Desabilitar tags de sessão** para desabilitar as tags de sessão padrão que a Identidade de Pods adiciona automaticamente quando assume o perfil.

1. (Opcional) Alterne **Configurar política de sessão** para configurar uma política do IAM para aplicar restrições adicionais a essa associação de Identidade de Pods além das permissões definidas na política do IAM anexada ao **perfil do IAM de destino**.
**nota**  
1. Uma política de sessão só pode ser aplicada quando a configuração **Desabilitar tags de sessão** está marcada. 2. Se você especificar uma política de sessão, as restrições da política se aplicarão às permissões do **perfil do IAM de destino**, e não ao **perfil do IAM** associado a essa associação de Identidade de Pods.

1. Escolha **Criar** para criar a associação.