

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

# Use o usuário IDs nas políticas do IAM para controle de acesso e automação
<a name="use-user-ids-iam-policies-access-control-automation"></a>

*Srinivas Ananda Babu e Ram Kandaswamy, Amazon Web Services*

## Resumo
<a name="use-user-ids-iam-policies-access-control-automation-summary"></a>

Esse padrão explica as possíveis armadilhas do uso de políticas baseadas em nome de usuário no AWS Identity and Access Management (IAM), os benefícios de usar o usuário IDs e como integrar essa abordagem à automação. AWS CloudFormation 

No Nuvem AWS, o serviço IAM ajuda você a gerenciar as identidades dos usuários e o controle de acesso com precisão. No entanto, a dependência de nomes de usuário na criação de políticas do IAM pode resultar em riscos de segurança inesperados e problemas de controle de acesso. Por exemplo, considere este cenário: um novo colaborador, chamado John Doe, começa a trabalhar na sua equipe e você cria uma conta de usuário do IAM com o nome de usuário `j.doe`, concedendo permissões por meio de políticas do IAM que fazem referência a nomes de usuários. Quando John é desligado da empresa, a conta é excluída. O problema começa quando uma nova colaboradora, chamada Jane Doe, entra para a equipe, e o nome de usuário `j.doe` é recriado. As políticas existentes concedem à Jane Doe as mesmas permissões que concediam ao John Doe. Isso pode gerar sérios problemas de segurança e de conformidade.

A atualização manual de cada política para refletir os novos detalhes dos usuários é um processo demorado e propenso a erros, especialmente com o crescimento da organização. A solução consiste em usar uma ID de usuário exclusiva e imutável. Ao criar uma conta de usuário do IAM, AWS atribui ao usuário do IAM um ID de usuário exclusivo (ou ID principal). Você pode usar esses usuários IDs em suas políticas do IAM para garantir um controle de acesso consistente e confiável que não seja afetado pelas alterações ou reutilização do nome de usuário.

Por exemplo, uma política do IAM que usa uma ID de usuário pode ter a seguinte aparência:

```
{ 
    "Version": "2012-10-17",		 	 	  
    "Statement": [ 
        { 
            "Effect": "Allow", 
            "Action": "s3:ListBucket", 
            "Resource": "arn:aws:s3:::example-bucket", 
            "Principal": { "AWS": "arn:aws:iam::123456789012:user/abcdef01234567890" } 
        } 
      ] 
}
```

Os benefícios de usar o usuário IDs nas políticas do IAM incluem:
+ **Exclusividade.** IDs Os usuários são únicos em todos Contas da AWS, portanto, fornecem uma aplicação de permissão correta e consistente.
+ **Imutabilidade.** O usuário IDs não pode ser alterado, portanto, ele fornece um identificador estável para referenciar usuários nas políticas.
+ **Auditoria e conformidade.** Serviços da AWS geralmente incluem o usuário IDs em registros e trilhas de auditoria, o que facilita o rastreamento de ações até usuários específicos.
+ **Automação e integração.** O uso de scripts IDs de AWS APIs entrada SDKs de usuário ou de automação garante que os processos permaneçam inalterados pelas alterações do nome de usuário.
+ **Preparação para o futuro.** Usar o usuário IDs nas políticas desde o início pode evitar possíveis problemas de controle de acesso ou extensas atualizações de políticas.

**Automação**

Quando você usa ferramentas de infraestrutura como código (IaC) AWS CloudFormation, como as armadilhas das políticas de IAM baseadas em nome de usuário, ainda podem causar problemas. O recurso de usuário do IAM retorna o nome de usuário quando você chama a função intrínseca `Ref`. À medida que a infraestrutura da sua organização evolui, o ciclo de criação e exclusão de recursos, incluindo as contas de usuário do IAM, pode gerar problemas de controle de acesso não intencionais, caso você reutilize nomes de usuário.

Para resolver esse problema, recomendamos que você incorpore o usuário IDs em seus CloudFormation modelos. No entanto, obter um usuário IDs para essa finalidade pode ser um desafio. É nesse ponto que os recursos personalizados podem ser úteis. Você pode usar recursos CloudFormation personalizados para ampliar a funcionalidade do serviço por meio da integração com AWS APIs ou de serviços externos. Ao criar um recurso personalizado que busca o ID do usuário de um determinado usuário do IAM, você pode disponibilizar o ID do usuário nos seus CloudFormation modelos. Essa abordagem simplifica o processo de referenciar o usuário IDs e garante que seus fluxos de trabalho de automação permaneçam robustos e preparados para o futuro.

## Pré-requisitos e limitações
<a name="use-user-ids-iam-policies-access-control-automation-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS
+ Uma função do IAM para um administrador de nuvem executar o CloudFormation modelo

**Limitações**
+ Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte [Serviços da AWS by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para endpoints específicos, consulte a página [Cotas e endpoints de serviços](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) e clique no link correspondente ao serviço desejado.

## Arquitetura
<a name="use-user-ids-iam-policies-access-control-automation-architecture"></a>

**Arquitetura de destino**

O diagrama a seguir mostra como CloudFormation usa um recurso personalizado apoiado por AWS Lambda para recuperar o ID de usuário do IAM.

![\[Obter o ID de usuário do IAM usando um recurso CloudFormation personalizado.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/71698647-274e-4911-92f0-549e444b53f6/images/7e507df4-f597-499e-bd5b-6d7a55e64146.png)


**Automação e escala**

Você pode usar o CloudFormation modelo várias vezes para contas diferentes Regiões da AWS . Você precisa executá-lo apenas uma vez em cada região ou conta.

## Ferramentas
<a name="use-user-ids-iam-policies-access-control-automation-tools"></a>

**Serviços da AWS**
+ [IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) — AWS Identity and Access Management (IAM) é um serviço web que ajuda você a controlar com segurança o acesso aos AWS recursos. Com o IAM, você controla quem pode se autenticar (fazer login) e quem tem autorização (permissões) para acessar os recursos.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)— AWS CloudFormation ajuda você a modelar e configurar seus AWS recursos para que você possa passar menos tempo gerenciando esses recursos e mais tempo se concentrando nos aplicativos que são executados AWS. Você cria um modelo que descreve os AWS recursos que você deseja e CloudFormation se encarrega de provisionar e configurar esses recursos para você.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)— AWS Lambda é um serviço de computação que oferece suporte à execução de código sem provisionar ou gerenciar servidores. O Lambda executa o código somente quando necessário e dimensiona automaticamente, desde algumas solicitações por dia até milhares por segundo. 

## Práticas recomendadas
<a name="use-user-ids-iam-policies-access-control-automation-best-practices"></a>

Caso esteja começando do zero ou planejando uma implantação sem dependências anteriores, recomendamos o uso do [Centro de Identidade do AWS IAM](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) para o gerenciamento centralizado de usuários. O IAM Identity Center se integra aos seus provedores de identidade existentes (como Active Directory ou Okta) para federar identidades de usuários AWS, o que elimina a necessidade de criar e gerenciar usuários do IAM diretamente. Essa abordagem não apenas garante um controle de acesso consistente, mas também simplifica o gerenciamento do ciclo de vida do usuário e ajuda a aprimorar a segurança e a conformidade em todo o seu ambiente. AWS 

## Épicos
<a name="use-user-ids-iam-policies-access-control-automation-epics"></a>

### Validação das permissões
<a name="validate-permissions"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Valide sua função Conta da AWS e do IAM. | Confirme se você tem uma função do IAM com permissões para implantar CloudFormation modelos no seu Conta da AWS.Se você planeja usar o AWS CLI em vez do CloudFormation console para implantar o modelo na última etapa desse procedimento, você também deve configurar credenciais temporárias para executar AWS CLI comandos. Para obter instruções, consulte a [documentação do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html#using-temp-creds-sdk-cli). | Arquiteto de nuvem | 

### Crie um CloudFormation modelo
<a name="build-a-cfnshort-template"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um CloudFormation modelo. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/use-user-ids-iam-policies-access-control-automation.html) | AWS DevOps, arquiteto de nuvem | 
| Adicione um parâmetro de entrada para o nome de usuário. | Adicione o código a seguir à `Parameters` seção do CloudFormation modelo:<pre>Parameters:<br />  NewIamUserName:<br />    Type: String<br />    Description: Unique username for the new IAM user<br /></pre>Este parâmetro solicita ao usuário o nome de usuário. | AWS DevOps, arquiteto de nuvem | 
| Adicione um recurso personalizado para criar um usuário do IAM. | Adicione o código a seguir à `Resources` seção do CloudFormation modelo:<pre>Resources:<br />  rNewIamUser:<br />    Type: 'AWS::IAM::User'<br />    Properties:<br />      UserName: !Ref NewIamUserName<br /></pre>Esse código adiciona um CloudFormation recurso que cria um usuário do IAM com o nome fornecido pelo `NewIamUserName` parâmetro. | AWS DevOps, arquiteto de nuvem | 
| Adicione um perfil de execução para a função do Lambda. | Nesta etapa, você cria uma função do IAM que concede uma permissão de AWS Lambda função para obter o IAM`UserId`. Especifique as seguintes permissões mínimas necessárias para que o Lambda seja executado:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/use-user-ids-iam-policies-access-control-automation.html)Para obter instruções sobre como criar um perfil de execução, consulte a [documentação do Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html). Este perfil será referenciado na próxima etapa, quando você criar a função do Lambda. | Administrador da AWS, arquiteto de nuvem | 
| Adicione uma função do Lambda para obter a `UserId` exclusiva do IAM. | Nesta etapa, você define uma função do Lambda com runtime do Python para obter a `UserId` exclusiva do IAM. Para fazer isso, adicione o código a seguir à `Resources` seção do CloudFormation modelo. Substitua `<<ROLENAME>>` pelo nome do perfil de execução que você criou na última etapa.<pre>  GetUserLambdaFunction:<br />    Type: 'AWS::Lambda::Function'<br />    Properties:<br />      Handler: index.handler<br />      Role: <<ROLENAME>><br />      Timeout: 30<br />      Runtime: python3.11<br />      Code:<br />        ZipFile: |<br />          import cfnresponse, boto3<br />          def handler(event, context):<br />            try:<br />              print(event)<br />              user = boto3.client('iam').get_user(UserName=event['ResourceProperties']['NewIamUserName'])['User']<br />              cfnresponse.send(event, context, cfnresponse.SUCCESS, {'NewIamUserId': user['UserId'], 'NewIamUserPath': user['Path'], 'NewIamUserArn': user['Arn']})<br />            except Exception as e:<br />              cfnresponse.send(event, context, cfnresponse.FAILED, {'NewIamUser': str(e)})<br /></pre> | AWS DevOps, arquiteto de nuvem | 
| Adicione um recurso personalizado. | Adicione o código a seguir à `Resources` seção do CloudFormation modelo:<pre>  rCustomGetUniqueUserId:<br />    Type: 'Custom::rCustomGetUniqueUserIdWithLambda'<br />    Properties:<br />      ServiceToken: !GetAtt GetUserLambdaFunction.Arn<br />      NewIamUserName: !Ref NewIamUserName<br /></pre>Este recurso personalizado chama a função do Lambda para obter a `UserID` do IAM. | AWS DevOps, arquiteto de nuvem | 
| Defina as CloudFormation saídas. | Adicione o código a seguir à `Outputs` seção do CloudFormation modelo:<pre>Outputs:<br />  NewIamUserId:<br />    Value: !GetAtt rCustomGetUniqueUserId.NewIamUserId<br /></pre>Isso exibe a `UserID` do IAM para o novo usuário do IAM. | AWS DevOps, arquiteto de nuvem | 
| Salve o modelo. | Salve suas alterações no CloudFormation modelo. | AWS DevOps, arquiteto de nuvem | 

### Implante o CloudFormation modelo
<a name="deploy-the-cfnshort-template"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Implante o CloudFormation modelo. | Para implantar o `get_unique_user_id.yaml` modelo usando o CloudFormation console, siga as instruções na [CloudFormation documentação](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html).Como alternativa, você pode executar o seguinte AWS CLI comando para implantar o modelo:<pre>aws cloudformation create-stack \<br />--stack-name DemoNewUser \<br />--template-body file://get_unique_user_id.yaml \<br />--parameters ParameterKey=NewIamUserName,ParameterValue=demouser \<br />--capabilities CAPABILITY_NAMED_IAM</pre> | AWS DevOps, arquiteto de nuvem | 

## Recursos relacionados
<a name="use-user-ids-iam-policies-access-control-automation-resources"></a>
+ [Crie uma pilha a partir do CloudFormation console](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html) (CloudFormation documentação)
+ [Recursos personalizados apoiados pelo Lambda (documentação](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-custom-resources-lambda.html)) CloudFormation 
+ [Identificadores exclusivos](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids) (documentação do IAM)
+ [Use credenciais temporárias com AWS recursos](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) (documentação do IAM)