

# Criar um perfil para conceder permissões a um usuário do IAM
<a name="id_roles_create_for-user"></a>

É possível usar perfis do IAM para delegar acesso aos seus recursos da AWS. Com funções do IAM, você pode estabelecer relações de confiança entre sua conta de *confiança* e outras contas *confiáveis* da AWS. A conta de confiança tem o recurso a ser acessado e a conta confiável contém os usuários que precisam de acesso ao recurso. No entanto, é possível que outra conta tenha um recurso em sua conta. Por exemplo, a conta de confiança pode permitir que a conta confiável crie novos recursos, como a criação de novos objetos em um bucket do Amazon S3. Nesse caso, a conta que cria o recurso possui o recurso e controla quem pode acessar esse recurso.

Depois de criar a relação de confiança, um usuário do IAM ou um aplicativo da conta confiável pode usar a operação [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) da API do AWS Security Token Service (AWS STS). Essa operação fornece credenciais de segurança temporárias que permitem acesso aos recursos da AWS em sua conta.

As contas podem ser controladas por você ou a conta com os usuários pode ser controlada por terceiros. Se a outra conta com os usuários for uma Conta da AWS controlada por você, use o atributo `externalId`. O ID externo pode ser qualquer palavra ou número combinado entre você e o administrador da conta de terceiros. Esta opção adiciona automaticamente uma condição à política de confiança que permite ao usuário assumir a função somente se a solicitação incluir o correto `sts:ExternalID`. Para obter mais informações, consulte [Acesso às Contas da AWS de propriedade de terceiros](id_roles_common-scenarios_third-party.md).

Para obter informações sobre como usar funções para delegar permissões, consulte [Termos e conceitos das funções](id_roles.md#id_roles_terms-and-concepts). Para obter mais informações sobre o uso de uma função de serviço para permitir que os serviços acessem recursos na sua conta, consulte [Criar um perfil para delegar permissões a um serviço da AWS](id_roles_create_for-service.md).

## Criação de uma função do IAM (console)
<a name="roles-creatingrole-user-console"></a>

Você pode usar o Console de gerenciamento da AWS para criar uma função que um usuário do IAM pode assumir. Por exemplo, suponha que sua organização tem várias Contas da AWS para isolar um ambiente de desenvolvimento de um ambiente de produção. Para obter informações de alto nível sobre a criação de uma função que permita que os usuários na conta de desenvolvimento acessem recursos na conta de produção, consulte [Cenário de exemplo que usa contas separadas de desenvolvimento e produção](id_roles_common-scenarios_aws-accounts.md#id_roles_common-scenarios_aws-accounts-example).

**Permissões mínimas**  
Para executar as etapas a seguir, é necessário ter as seguintes permissões do IAM:  
`access-analyzer:ValidatePolicy`
`iam:AttachRolePolicy`
`iam:CreatePolicy`
`iam:CreateRole`
`iam:GetAccountSummary`
`iam:GetPolicy`
`iam:GetPolicyVersion`
`iam:GetRole`
`iam:ListAccountAliases`
`iam:ListAttachedRolePolicies`
`iam:ListOpenIDConnectProviders`
`iam:ListPolicies`
`iam:ListRolePolicies`
`iam:ListRoles`
`iam:ListRoleTags`
`iam:ListSAMLProviders`

------
#### [ Console ]

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação do console, escolha **Roles** (Perfis) e, em seguida, clique em **Create role** (Criar perfil).

1. Escolha o tipo de perfil do **Conta da AWS**.

1. Para criar uma função para sua conta, escolha **This account** (Esta conta). Para criar um perfil para outra conta, escolha **Outra Conta da AWS** e insira o **ID da conta** para o qual você deseja conceder acesso a seus recursos.

   O administrador da conta especificada pode conceder permissão para assumir essa função a qualquer usuário do IAM dessa conta. Para fazer isso, o administrador anexa uma política ao usuário ou grupo que concede permissão para a ação `sts:AssumeRole`. Essa política deve especificar o ARN da função como `Resource`. 

1. Se estiver concedendo permissões aos usuários de uma conta que você não controla e os usuários assumirem essa função de maneira programática, selecione **Require external ID** (Exigir ID externo). O ID externo pode ser qualquer palavra ou número combinado entre você e o administrador da conta de terceiros. Esta opção adiciona automaticamente uma condição à política de confiança que permite ao usuário assumir a função somente se a solicitação incluir o correto `sts:ExternalID`. Para obter mais informações, consulte [Acesso às Contas da AWS de propriedade de terceiros](id_roles_common-scenarios_third-party.md).
**Importante**  
A escolha dessa opção restringe o acesso à função apenas por meio da AWS CLI, do Tools for Windows PowerShell ou da API da AWS. A razão disso é que você não pode usar o console da AWS para alternar para uma função que tenha uma condição `externalId` na sua política de confiança. No entanto, você pode criar esse tipo de acesso de modo programático ao escrever um script ou um aplicativo usando o SDK relevante. Para obter mais informações e um script de exemplo, consulte [How to Enable Cross-Account Access to the Console de gerenciamento da AWS](https://aws.amazon.com/blogs/security/how-to-enable-cross-account-access-to-the-aws-management-console) no AWS Security Blog.

1. Se você desejar restringir a função a usuários que façam login usando um dispositivo de multi-factor authentication (MFA), selecione a opção **Exigir MFA**. Isso adiciona uma condição à política de confiança da função que verifica a existência de um login MFA. Um usuário que desejar assumir a função deverá fazer login com uma senha de uso único temporária a partir de um dispositivo MFA configurado. Os usuários sem a autenticação por MFA não podem assumir a função. Para obter mais informações sobre MFA, consulte [Código da autenticação multifator no IAM da AWS](id_credentials_mfa.md)

1. Escolha **Próximo**.

1. O IAM inclui uma lista das políticas gerenciadas pela AWS e pelo cliente em sua conta. Selecione a política a ser usada para a política de permissões ou escolha **Create policy (Criar política)** para abrir uma nova guia no navegador e criar uma nova política a partir do zero. Para obter mais informações, consulte [Criação de políticas do IAM](access_policies_create-console.md#access_policies_create-start). Depois de criar a política, feche essa guia e retorne à guia original. Marque a caixa de seleção ao lado das políticas de permissões que você deseja que qualquer pessoa que assuma a função tenha. Se preferir, você pode optar por não selecionar nenhuma política neste momento e anexar as políticas à função mais tarde. Por padrão, uma função não tem nenhuma permissões.

1. (Opcional) Defina um [limite de permissões](access_policies_boundaries.md). Este é um recurso avançado. 

   Abra a seção **Set permissions boundary (Definir limite de permissões)** e escolha **Use a permissions boundary to control the maximum role permissions (Usar um limite de permissões para controlar o número máximo de permissões de funções)**. Selecione a política a ser usada para o limite de permissões.

1. Escolha **Próximo**.

1. Em **Role name (Nome da função)**, digite um nome para sua função. Os nomes de função devem ser exclusivos em sua Conta da AWS. Ao ser usado em uma política ou como parte de um ARN, o nome de perfil diferencia maiúsculas de minúsculas. Quando exibida para os clientes no console, por exemplo, como durante o processo de login, o nome de função não diferencia maiúsculas de minúsculas. Como várias entidades podem fazer referência à função, não é possível editar o nome da função depois de criada.

1. (Opcional) Em **Descrição da função**, insira uma descrição para a nova função.

1. Escolha **Edit** (Editar) nas seções **Etapa 1: selecionar entidades confiáveis** ou na **Etapa 2: adicionar permissões** para editar os casos de uso e as permissões para a função. Você será levado de volta às páginas anteriores para fazer as edições.

1. (Opcional) Adicione metadados à função anexando tags como pares de chave-valor. Para obter mais informações sobre como usar tags no IAM, consulte [Tags para recursos do AWS Identity and Access Management](id_tags.md).

1. Revise o perfil e escolha **Criar perfil**.
**Importante**  
Lembre-se de que esta é apenas a metade da configuração necessária. Você também deve conceder aos usuários individuais na conta confiável permissões para alternar para a função no console ou assumir a função de forma programática. Para obter mais informações sobre essa etapa, consulte [Conceder permissões a um usuário para alternar perfis](id_roles_use_permissions-to-switch.md).

------

## Criação de uma função do IAM (AWS CLI)
<a name="roles-creatingrole-user-cli"></a>

A criação de uma função a partir da AWS CLI envolve várias etapas. Quando o console é usado para criar uma função, muitas das etapas são concluídas por você, mas com a AWS CLI, é necessário executar explicitamente cada etapa. Você deve criar a função e atribuir uma política de permissões à função. Opcionalmente, você também pode definir o [limite de permissões](access_policies_boundaries.md) para sua função.

**Para criar uma função para acesso entre contas (AWS CLI)**

1. Criar uma função: [aws iam create-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html)

1. Anexar uma política de permissões gerenciada à função: [aws iam attach-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-role-policy.html)

    ou

   Criar uma política de permissões em linha para a função: [aws iam put-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/put-role-policy.html)

1. (Opcional) Adicione atributos personalizados à função anexando tags: [aws iam tag-role](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-role.html)

   Para obter mais informações, consulte [Gerenciar etiquetas em funções do IAM (AWS CLI ou API da AWS)](id_tags_roles.md#id_tags_roles_procs-cli-api).

1. (Opcional) Definir o [limite de permissões](access_policies_boundaries.md) para a função: [aws iam put-role-permissions-boundary](https://docs.aws.amazon.com/cli/latest/reference/iam/put-role-permissions-boundary.html)

   Um limite de permissões controla o número máximo de permissões que uma função pode ter. Os limites de permissões são um recurso avançado da AWS.

O exemplo a seguir mostra as duas primeiras e as etapas mais comuns para a criação de uma função entre contas em um ambiente simples. Este exemplo permite que qualquer usuário na conta `123456789012` assuma a função e visualize o bucket `example_bucket` do Amazon S3. Este exemplo também supõe que você está em um computador cliente com o Windows e já configurou a interface de linha de comando com as credenciais de sua conta e região. Para obter mais informações, consulte [Configurar a interface de linha de comando da AWS](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html).

Neste exemplo, inclua a seguinte política de confiança no primeiro comando ao criar a função. A política de confiança permite que os usuários na conta `123456789012` assumam a função usando a operação `AssumeRole`, mas apenas se o usuário fornecer autenticação MFA usando os parâmetros `SerialNumber` e `TokenCode`. Para obter mais informações sobre MFA, consulte [Código da autenticação multifator no IAM da AWS](id_credentials_mfa.md).

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
      {
          "Effect": "Allow",
          "Principal": { "AWS": "arn:aws:iam::123456789012:root" },
          "Action": "sts:AssumeRole",
          "Condition": { "Bool": { "aws:MultiFactorAuthPresent": "true" } }
      }
  ]
}
```

------

**Importante**  
Se seu elemento `Principal` contiver o ARN de uma função ou um usuário específico do IAM, esse ARN será transformado em um ID de entidade de segurança exclusivo quando a política for salva. Isso ajuda a reduzir o risco de alguém elevar suas permissões ao remover e recriar a função ou usuário. Normalmente, você não vê esse ID no console, porque há também uma transformação reversa de volta para o ARN quando a política de confiança é exibida. No entanto, se você excluir a função ou o usuário, o ID da entidade principal aparecerá no console porque a AWS não pode mais mapeá-lo de volta para um ARN. Portanto, se você excluir e recriar um usuário ou função referenciado no elemento `Principal` de uma política de confiança, você deverá editar a função para substituir o ARN.

Quando usa o segundo comando, você deve anexar uma política gerenciada existente à função. A política de permissões a seguir permite que qualquer pessoa que assuma a função execute apenas a ação `ListBucket` no bucket `example_bucket` do Amazon S3.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
      {
          "Effect": "Allow",
          "Action": "s3:ListBucket",
          "Resource": "arn:aws:s3:::example_bucket"
      }
  ]
}
```

------

Para criar essa `Test-UserAccess-Role` função, você deve primeiro salvar a política de confiança anterior com o nome `trustpolicyforacct123456789012.json` na pasta `policies` em sua `C:` unidade local. Em seguida, salve a política de permissões anterior como uma política gerenciada pelo cliente na sua Conta da AWS com o nome `PolicyForRole`. Você pode usar os comandos a seguir para criar a função e anexar a política gerenciada.

```
# Create the role and attach the trust policy file that allows users in the specified account to assume the role.
$ aws iam create-role --role-name Test-UserAccess-Role --assume-role-policy-document file://C:\policies\trustpolicyforacct123456789012.json

# Attach the permissions policy (in this example a managed policy) to the role to specify what it is allowed to do.
$ aws iam attach-role-policy --role-name Test-UserAccess-Role --policy-arn arn:aws:iam::123456789012:policy/PolicyForRole
```

**Importante**  
Lembre-se de que esta é apenas a metade da configuração necessária. Você também deve conceder aos usuários individuais na conta confiável permissões para alternar para a função. Para obter mais informações sobre essa etapa, consulte [Conceder permissões a um usuário para alternar perfis](id_roles_use_permissions-to-switch.md).

Depois de criar a função e conceder permissões a ela para executar tarefas da AWS ou acessar recursos da AWS, qualquer usuário da conta `123456789012` poderá assumir a função. Para obter mais informações, consulte [Alterar para uma perfil do IAM (AWS CLI)](id_roles_use_switch-role-cli.md).

## Criação de uma função do IAM (API da AWS)
<a name="roles-creatingrole-user-api"></a>

A criação de uma função na API da AWS envolve várias etapas. Quando o console é usado para criar uma função, muitas das etapas são concluídas por você, mas com a API, é necessário executar explicitamente cada etapa. Você deve criar a função e atribuir uma política de permissões à função. Opcionalmente, você também pode definir o [limite de permissões](access_policies_boundaries.md) para sua função.

**Para criar uma função em código (API da AWS)**

1. Criar uma função: [CreateRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateRole.html)

   Para a política de confiança da função, você pode especificar um local de arquivo.

1. Anexar uma política de permissões gerenciada à função: [AttachRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AttachRolePolicy.html)

   ou

   Criar uma política de permissões embutida para a função: [PutRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutRolePolicy.html)
**Importante**  
Lembre-se de que esta é apenas a metade da configuração necessária. Você também deve conceder aos usuários individuais na conta confiável permissões para alternar para a função. Para obter mais informações sobre essa etapa, consulte [Conceder permissões a um usuário para alternar perfis](id_roles_use_permissions-to-switch.md).

1. (Opcional) Adicione atributos personalizados ao usuário anexando tags: [TagRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagRole.html)

   Para obter mais informações, consulte [Gerenciamento de etiquetas em usuários do IAM (AWS CLI ou API da AWS)](id_tags_users.md#id_tags_users_procs-cli-api).

1. (Opcional) Definir o [limite de permissões](access_policies_boundaries.md) para a função: [PutRolePermissionsBoundary](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutRolePermissionsBoundary.html)

   Um limite de permissões controla o número máximo de permissões que uma função pode ter. Os limites de permissões são um recurso avançado da AWS.

Depois de criar a função e conceder permissões a ela para executar tarefas da AWS ou acessar recursos da AWS, você deve conceder permissões aos usuários da conta para permitir que eles assumam a função. Para obter mais informações sobre a assunção de uma função, consulte [Alternar para um perfil do IAM (API da AWS)](id_roles_use_switch-role-api.md).

## Criação de uma função do IAM (AWS CloudFormation)
<a name="roles_creatingrole-user-cloudformation"></a>

Para obter informações sobre como criar uma função do IAM no AWS CloudFormation, consulte a [referência de recursos e propriedades](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html) e [exemplos](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#aws-resource-iam-role--examples) no *Guia do usuário do AWS CloudFormation*.

Para obter mais informações sobre os modelos do IAM no AWS CloudFormation, consulte [Trechos de modelo do AWS Identity and Access Management](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-iam.html) no *Guia do usuário do AWS CloudFormation*.