

# Criar um perfil do IAM
<a name="id_roles_create"></a>

Para criar uma função você pode usar o Console de gerenciamento da AWS, a AWS CLI, o Tools for Windows PowerShell ou a API do IAM.

Se você usar o Console de gerenciamento da AWS, um assistente orienta você durante as etapas para a criação de uma função. O assistente tem etapas ligeiramente diferentes dependendo se você esta criando um perfil para um serviço da AWS, para uma Conta da AWS ou para uma entidade principal federada SAML ou OIDC.

**Perfis para usuários do IAM**  
Crie esse perfil para delegar permissões na sua Conta da AWS ou para perfis definidos em outras Contas da AWS que você possui. Um usuário em uma conta pode alternar para uma função na mesma conta ou em uma diferente. Ao usar a função, o usuário pode executar somente as ações e acessar somente os recursos permitidos pela função; as permissões originais do usuário são suspensas. Quando o usuário fecha a função, as permissões originais do usuário são restauradas.

Para obter mais informações, consulte [Criar um perfil para conceder permissões a um usuário do IAM](id_roles_create_for-user.md).

Para obter mais informações sobre a criação de perfis para acesso entre contas, consulte [Criar um perfil usando políticas de confiança personalizadas](id_roles_create_for-custom.md).

**Perfis para serviços da AWS**  
Crie esse perfil para delegar permissões a um serviço que pode realizar ações em seu nome. Um [perfil de serviço](id_roles.md#iam-term-service-role) que você passa para um serviço deve ter uma política do IAM com as permissões que possibilitem que o serviço realize ações associadas a esse serviço. Diferentes permissões são necessárias para cada um dos serviços da AWS.

Para obter mais informações sobre como criar perfis de serviço, consulte [Criar um perfil para delegar permissões a um serviço da AWS](id_roles_create_for-service.md).

Para obter mais informações sobre como criar perfis vinculados a serviço, consulte [Criar um perfil vinculado ao serviço](id_roles_create-service-linked-role.md).

**Perfis para federação de identidades**  
Crie esse perfil para delegar permissões a usuários que já têm identidades externas à AWS. Quando você usa um provedor de identidade do , não precisa criar código de login personalizado nem gerenciar suas próprias identidades de usuários. Os usuários externos fazem login por meio do IdP, e você pode conceder a essas identidades externas permissões para usar os recursos da AWS na sua conta. Os provedores de identidade ajudam a manter sua conta da AWS segura, pois você não precisa distribuir nem incorporar credenciais de segurança de longo prazo, como chaves de acesso, em sua aplicação.

Para obter mais informações, consulte [Criar um perfil para um provedor de identidade de terceiros](id_roles_create_for-idp.md).

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

# Criar um perfil para delegar permissões a um serviço da AWS
<a name="id_roles_create_for-service"></a>

Muitos serviços da AWS exigem que você use funções para permitir que o serviço acesse recursos em outros serviços em seu nome. A [função de serviço](id_roles.md#iam-term-service-role) é uma função que um serviço assume para realizar ações em seu nome. Quando um perfil atende a uma finalidade especializada para um serviço, ela é categorizada como um [perfil vinculado ao serviço](id_roles.md#iam-term-service-linked-role). Para ver quais serviços oferecem suporte ao uso de funções vinculadas a serviços, ou se um serviço oferece suporte a qualquer forma de credenciais temporárias, consulte [AWSServiços da que funcionam com o IAM](reference_aws-services-that-work-with-iam.md). Para saber como determinado serviço usa funções, escolha o nome do serviço na tabela para visualizar a documentação dele.

Ao definir a permissão `PassRole`, é necessário garantir que um usuário não passe um perfil em que o perfil tenha mais permissões do que você deseja que o usuário tenha. Por exemplo, Alice pode não ter permissão para realizar nenhuma ação do Amazon S3. Se Alice pudesse passar um perfil para um serviço que permite ações do Amazon S3, o serviço poderia realizar ações do Amazon S3 em nome de Alice ao executar o trabalho.

Para obter informações sobre como as funções ajudam você a delegar permissões, consulte [Termos e conceitos das funções](id_roles.md#id_roles_terms-and-concepts).

## Permissões de função de serviço
<a name="id_roles_create_service-permissions"></a>

Configure permissões para que uma entidade do IAM (usuário ou função) crie ou edite uma função de serviço.

**nota**  
O ARN de uma função vinculado ao serviço inclui uma entidade principal do serviço que é indicada nas políticas a seguir como `SERVICE-NAME.amazonaws.com`. Não tente adivinhar a entidade principal do serviço, pois ela faz distinção entre maiúsculas e minúsculas, e o formato pode variar entre os serviços da AWS. Para visualizar a entidade principal do serviço, consulte a documentação do perfil vinculado ao serviço.

**Para permitir que uma entidade do IAM crie uma função de serviço específica**

Adicione a seguinte política à entidade do IAM que precisa criar a função de serviço. Essa política permite que você crie uma função de serviço para o serviço especificado e com um nome específico. Em seguida, você poderá anexar políticas em linha ou gerenciadas a essa função. 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:AttachRolePolicy",
                "iam:CreateRole",
                "iam:PutRolePolicy"
            ],
            "Resource": "arn:aws:iam::*:role/SERVICE-ROLE-NAME"
        }
    ]
}
```

------

**Para permitir que uma entidade do IAM crie qualquer função de serviço**

A AWS recomenda permitir apenas que usuários administrativos criem qualquer perfil de serviço. Uma pessoa com permissões para criar uma função e anexar qualquer política pode aumentar as próprias permissões. Em vez disso, crie uma política que permita criar apenas as funções necessárias ou peça para um administrador criar a função de serviço no nome dessas pessoas.

Para anexar uma política que permita que um administrador acesse toda a sua Conta da AWS, use a política gerenciada [AdministratorAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AdministratorAccess) da AWS.

**Para permitir que uma entidade do IAM edite uma função de serviço**

Adicione a seguinte política à entidade do IAM que precisa editar a função de serviço.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "EditSpecificServiceRole",
            "Effect": "Allow",
            "Action": [
                "iam:AttachRolePolicy",
                "iam:DeleteRolePolicy",
                "iam:DetachRolePolicy",
                "iam:GetRole",
                "iam:GetRolePolicy",
                "iam:ListAttachedRolePolicies",
                "iam:ListRolePolicies",
                "iam:PutRolePolicy",
                "iam:UpdateRole",
                "iam:UpdateRoleDescription"
            ],
            "Resource": "arn:aws:iam::*:role/SERVICE-ROLE-NAME"
        },
        {
            "Sid": "ViewRolesAndPolicies",
            "Effect": "Allow",
            "Action": [
                "iam:GetPolicy",
                "iam:ListRoles"
            ],
            "Resource": "*"
        }
    ]
}
```

------

**Para permitir que uma entidade do IAM exclua uma função de serviço específica**

Adicione a seguinte instrução à política de permissões à entidade do IAM que precisa excluir a função de serviço especificada.

```
{
    "Effect": "Allow",
    "Action": "iam:DeleteRole",
    "Resource": "arn:aws:iam::*:role/SERVICE-ROLE-NAME"
}
```

**Para permitir que uma entidade do IAM exclua qualquer função de serviço**

A AWS recomenda permitir apenas que usuários administrativos excluam qualquer perfil de serviço. Em vez disso, crie uma política que permita excluir apenas as funções necessárias ou peça para um administrador excluir a função de serviço no nome dessas pessoas.

Para anexar uma política que permita que um administrador acesse toda a sua Conta da AWS, use a política gerenciada [AdministratorAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AdministratorAccess) da AWS.

## Criar uma função para um serviço da AWS (console)
<a name="roles-creatingrole-service-console"></a>

É possível usar o Console de gerenciamento da AWS para criar um perfil para um serviço. Como alguns serviços oferecem suporte a mais de uma função de serviço, consulte a [Documentação da AWS](https://docs.aws.amazon.com/) para o seu serviço para ver qual caso de uso escolher. É possível saber como atribuir as políticas de confiança e as permissões necessárias ao perfil para que o serviço possa assumir o perfil em seu nome. As etapas que podem se usadas para controlar as permissões para a sua função podem variar, dependendo de como o serviço define os casos de uso e de se você cria ou não uma função vinculada ao serviço.

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

**Para criar uma função para um AWS service (Serviço da AWS) (console do IAM)**

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 do IAM, escolha **Perfis** e, em seguida, **Criar perfil**.

1. Em **Tipo de entidade confiável**, escolha **AWS service (Serviço da AWS)**.

1. Para **Serviço ou caso de uso**, escolha um serviço e, em seguida, escolha o caso de uso. Casos de uso são definidos pelo serviço para incluir a política de confiança exigida pelo serviço.

1. Escolha **Próximo**.

1. As opções para **Políticas de permissões** dependem do caso de uso selecionado.
   + Se o serviço definir as permissões para o perfil, não será possível selecionar políticas de permissões.
   + Selecione em um conjunto limitado de políticas de permissões.
   + Selecione entre todas as políticas de permissões.
   + Não selecione nenhuma política de permissão; crie políticas após a criação do perfil e, em seguida, anexe as políticas ao perfil.

1. (Opcional) Defina um [limite de permissões](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html). Esse é um atributo avançado que está disponível para perfis de serviço, mas não para perfis vinculados ao serviço.

   1. Abra a seção **Definir limite de permissões** e escolha **Usar um limite de permissões para controlar o número máximo de permissões do perfil**. 

      O IAM inclui uma lista das políticas gerenciadas pela AWS e pelo cliente em sua conta.

   1. Selecione a política a ser usada para o limite de permissões.

1. Escolha **Próximo**.

1. Para **Nome do perfil**, as opções dependem do serviço:
   + Se o serviço definir o nome do perfil, não será possível editar esse nome.
   + Se o serviço definir um prefixo para o nome do perfil, você poderá inserir um sufixo opcional.
   + Se o serviço definir o nome do perfil, você poderá atribuir um nome ao perfil.
**Importante**  
Quando nomear um perfil, observe o seguinte:  
Os nomes do perfil devem ser exclusivos em sua Conta da AWS e não podem ser diferenciados caso a caso.  
Por exemplo, não crie dois perfis denominados **PRODROLE** e **prodrole**. Quando usado em uma política ou como parte de um ARN, o nome de perfil diferencia maiúsculas de minúsculas. No entanto, quando exibido para os clientes no console, como durante o processo de login, o nome de perfil diferencia maiúsculas de minúsculas.
Não é possível editar o nome do perfil depois de criá-lo porque outras entidades podem referenciar o perfil.

1. (Opcional) Em **Descrição**, insira uma descrição para o perfil.

1. (Opcional) Para editar os casos de uso e as permissões do perfil, escolha **Editar** nas seções **Etapa 1: selecionar entidades confiáveis** ou **Etapa 2: adicionar permissões**.

1. (Opcional) Para ajudar a identificar, organizar ou pesquisar o perfil, adicione tags como pares de chave-valor. Para obter mais informações sobre o uso de tags no IAM, consulte [Tags para recursos do AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) no *Guia do usuário do IAM*.

1. Reveja a função e escolha **Criar função**.

------

## Criar uma função para um serviço (AWS CLI)
<a name="roles-creatingrole-service-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. Se o serviço com o qual você está trabalhando for o Amazon EC2, você também deverá criar um perfil de instância e adicionar a função a ele. 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 um serviço da AWS na AWS CLI**

1. O seguinte comando `[create-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html)` cria uma função chamada *Test-Role* e anexa uma política de confiança a ela:

   `aws iam create-role --role-name Test-Role --assume-role-policy-document file://Test-Role-Trust-Policy.json`

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

   Por exemplo, o seguinte comando `attach-role-policy` anexa a política gerenciada pela AWS chamada `ReadOnlyAccess` à função do IAM chamada `ReadOnlyRole`:

   `aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/ReadOnlyAccess --role-name ReadOnlyRole`

    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)

   Para adicionar uma política de permissões em linha, consulte o seguinte exemplo:

    `aws iam put-role-policy --role-name Test-Role --policy-name ExamplePolicy --policy-document file://AdminPolicy.json`

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.

Se você for usar a função com o Amazon EC2 ou outro produto da AWS que use o Amazon EC2, armazene a função em um perfil de instância. Um perfil da instância é um contêiner para uma função que pode ser anexado a uma instância do Amazon EC2 quando iniciada. Um perfil da instância pode conter somente uma função, e esse limite não pode ser aumentado. Se você criar a função usando o Console de gerenciamento da AWS, o perfil da instância será criado com o mesmo nome que a função. Para obter mais informações sobre os perfis da instância, consulte [Usar perfis de instância](id_roles_use_switch-role-ec2_instance-profiles.md). Para obter informações sobre como executar uma instância do EC2 com um perfil, consulte [Controle de acesso aos recursos do Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UsingIAM.html#UsingIAMrolesWithAmazonEC2Instances) no *Guia do usuário do Amazon EC2*.

**Para criar um perfil de instância e armazenar a função nele (AWS CLI)**

1. Criar um perfil da instância: [aws iam create-instance-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/create-instance-profile.html)

1. Adicionar a função ao perfil da instância: [aws iam add-role-to-instance-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/add-role-to-instance-profile.html)

O comando da AWS CLI de exemplo definido a seguir demonstra as duas primeiras etapas para criar uma função e anexar permissões. Também mostra as duas etapas para criar um perfil de instância e adicionar a função ao perfil. Este exemplo de política de confiança permite que o serviço Amazon EC2 assuma a função e visualize o bucket `example_bucket` do Amazon S3. O exemplo também presume que você está executando 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. Essa política de confiança permite que o serviço Amazon EC2 assuma a função. 

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Principal": {"Service": "ec2.amazonaws.com"},
    "Action": "sts:AssumeRole"
  }
}
```

------

Quando usa o segundo comando, você deve anexar uma política de permissões à função. A política de permissões de exemplo a seguir permite que 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 função `Test-Role-for-EC2`, você deve primeiro salvar a política de confiança anterior com o nome `trustpolicyforec2.json` e a política de permissões anterior com o nome `permissionspolicyforec2.json` no diretório `policies` na unidade `C:` local. Em seguida, você pode usar os seguintes comandos para criar a função, anexar a política, criar o perfil da instância e adicionar a função ao perfil da instância.

```
# Create the role and attach the trust policy that allows EC2 to assume this role.
$ aws iam create-role --role-name Test-Role-for-EC2 --assume-role-policy-document file://C:\policies\trustpolicyforec2.json

# Embed the permissions policy (in this example an inline policy) to the role to specify what it is allowed to do.
$ aws iam put-role-policy --role-name Test-Role-for-EC2 --policy-name Permissions-Policy-For-Ec2 --policy-document file://C:\policies\permissionspolicyforec2.json

# Create the instance profile required by EC2 to contain the role
$ aws iam create-instance-profile --instance-profile-name EC2-ListBucket-S3

# Finally, add the role to the instance profile
$ aws iam add-role-to-instance-profile --instance-profile-name EC2-ListBucket-S3 --role-name Test-Role-for-EC2
```

Quando você ativar a instância do EC2, especifique o nome do perfil da instância na página **Configure Instance Details** se você usar o console da AWS. Se você usar o comando CLI `aws ec2 run-instances`, especifique o parâmetro `--iam-instance-profile`.

## Criar uma função para um serviço (API da AWS)
<a name="roles-creatingrole-service-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. Se o serviço com o qual você está trabalhando for o Amazon EC2, você também deverá criar um perfil de instância e adicionar a função a ele. 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 um serviço da AWS (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 em linha para a função: [PutRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutRolePolicy.html)

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.

Se você for usar a função com o Amazon EC2 ou outro produto da AWS que use o Amazon EC2, armazene a função em um perfil de instância. Um perfil da instância é um contêiner para uma função. Cada perfil da instância pode conter somente uma função e esse limite não pode ser aumentado. Se você criar a função no Console de gerenciamento da AWS, o perfil da instância será criado para você com o mesmo nome da função. Para obter mais informações sobre os perfis da instância, consulte [Usar perfis de instância](id_roles_use_switch-role-ec2_instance-profiles.md). Para obter informações sobre como executar uma instância do Amazon EC2 com um perfil, consulte [Controle de acesso aos recursos do Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UsingIAM.html#UsingIAMrolesWithAmazonEC2Instances) no *Guia do usuário do Amazon EC2*. 

**Para criar um perfil de instância e armazenar a função nele (API da AWS)**

1. Criar um perfil da instância: [CreateInstanceProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateInstanceProfile.html)

1. Adicionar a função ao perfil da instância: [AddRoleToInstanceProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AddRoleToInstanceProfile.html)

# Criar um perfil vinculado ao serviço
<a name="id_roles_create-service-linked-role"></a>

Uma função vinculada ao serviço é um tipo exclusivo de função do IAM vinculado diretamente a um serviço da AWS. As funções vinculadas a serviços são predefinidas pelo serviço e incluem todas as permissões que o serviço requer para chamar outros serviços da AWS em seu nome. O serviço vinculado também define como criar, modificar e excluir uma função vinculada a serviço. Um serviço pode criar ou excluir a função automaticamente. Ele pode permitir que você crie, modifique ou exclua a função como parte de um assistente ou processo no serviço. Ou pode exigir que você use o IAM para criar ou excluir a função. Independente do método, as funções vinculadas a serviço simplificam o processo de configurar um serviço da , pois você não precisa adicionar manualmente as permissões para o serviço concluir as ações em seu nome.

**nota**  
Lembre-se de que perfis de serviço são diferentes de perfis vinculados a serviços. O perfil de serviço é um [perfil do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) que um serviço assume para executar ações em seu nome. Um administrador do IAM pode criar, modificar e excluir um perfil de serviço do IAM. Para obter mais informações, consulte [Criação de um perfil para delegar permissões a um AWS service (Serviço da AWS)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) no *Guia do Usuário do IAM*. Um perfil vinculado ao serviço é um tipo de perfil de serviço vinculado a um AWS service (Serviço da AWS). O serviço pode presumir o perfil de executar uma ação em seu nome. Perfis vinculados ao serviço aparecem em sua Conta da AWS e são de propriedade do serviço. Um administrador do IAM pode visualizar, mas não editar as permissões para perfis vinculados ao serviço. 

O serviço vinculado define as permissões de suas funções vinculadas ao serviço e, a menos que definido em contrário, somente aquele serviço pode assumir as funções. As permissões definidas incluem a política de confiança e a política de permissões, que não pode ser anexada a nenhuma outra entidade do IAM.

Para poder excluir as funções, você deve primeiroexcluir os recursos relacionados a eles. Isso ajuda a impedir que você remova por engano a permissão para acessar os recursos. 

**dica**  
Para obter informações sobre quais serviços oferecem suporte a funções vinculadas a serviços, consulte [AWSServiços da que funcionam com o IAM](reference_aws-services-that-work-with-iam.md) e procure os serviços que têm **Sim **na coluna **Função vinculada ao serviço**. Escolha um **Sim** com um link para visualizar a documentação do perfil vinculado para esse serviço.

## Permissões de perfil vinculado ao serviço
<a name="service-linked-role-permissions"></a>

Configure as permissões para que uma entidade do IAM (usuário ou função) permita que o usuário ou a função crie ou edite a função vinculada ao serviço.

**nota**  
O ARN de uma função vinculada ao serviço inclui uma entidade principal do serviço que é indicada nas políticas abaixo como `SERVICE-NAME.amazonaws.com`. Não tente adivinhar a entidade principal do serviço, pois ela faz distinção entre maiúsculas e minúsculas, e o formato pode variar entre os serviços da AWS. Para visualizar a entidade principal do serviço, consulte a documentação do perfil vinculado ao serviço.

**Para permitir que uma entidade do IAM; crie uma função vinculada ao serviço**

Adicione a seguinte política à entidade do IAM que precisa criar a função vinculada ao serviço.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "arn:aws:iam::*:role/aws-service-role/SERVICE-NAME.amazonaws.com/SERVICE-LINKED-ROLE-NAME-PREFIX*",
            "Condition": {"StringLike": {"iam:AWSServiceName": "SERVICE-NAME.amazonaws.com"}}
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:AttachRolePolicy",
                "iam:PutRolePolicy"
            ],
            "Resource": "arn:aws:iam::*:role/aws-service-role/SERVICE-NAME.amazonaws.com/SERVICE-LINKED-ROLE-NAME-PREFIX*"
        }
    ]
}
```

------

**Para permitir que uma entidade do IAM crie qualquer função vinculada ao serviço**

Adicione a seguinte instrução à política de permissões da entidade do IAM que precisa criar uma função vinculada ao serviço ou qualquer função de serviço que inclua as políticas necessárias. Esta declaração de política não permite que a entidade do IAM anexe uma política à função.

```
{
    "Effect": "Allow",
    "Action": "iam:CreateServiceLinkedRole",
    "Resource": "arn:aws:iam::*:role/aws-service-role/*"
}
```

**Para permitir que uma entidade do IAM edite a descrição de todas as funções de serviço**

Adicione a seguinte instrução à política de permissões da entidade do IAM que precisa editar uma descrição de uma função vinculada ao serviço ou qualquer função de serviço.

```
{
    "Effect": "Allow",
    "Action": "iam:UpdateRoleDescription",
    "Resource": "arn:aws:iam::*:role/aws-service-role/*"
}
```

**Para permitir que uma entidade do IAM exclua uma função vinculada ao serviço específica**

Adicione a seguinte instrução à política de permissões para a entidade do IAM que precisa excluir a função vinculada ao serviço.

```
{
    "Effect": "Allow",
    "Action": [
        "iam:DeleteServiceLinkedRole",
        "iam:GetServiceLinkedRoleDeletionStatus"
    ],
    "Resource": "arn:aws:iam::*:role/aws-service-role/SERVICE-NAME.amazonaws.com/SERVICE-LINKED-ROLE-NAME-PREFIX*"
}
```

**Para permitir que uma entidade do IAM exclua qualquer função vinculada ao serviço**

Adicione a seguinte instrução à política de permissões da entidade do IAM que precisa excluir uma função vinculada ao serviço, mas não a função de serviço.

```
{
    "Effect": "Allow",
    "Action": [
        "iam:DeleteServiceLinkedRole",
        "iam:GetServiceLinkedRoleDeletionStatus"
    ],
    "Resource": "arn:aws:iam::*:role/aws-service-role/*"
}
```

**Para permitir que uma entidade do IAM transmita uma função existente para o serviço**

Alguns serviços do AWS permitem que você transmita uma função existente para o serviço, ao invés de criar uma nova função vinculada ao serviço. Para fazer isso, um usuário deve ter permissões para *transmitir a função* para o serviço. Adicione a seguinte instrução à política de permissões para a entidade do IAM necessária para transmitir a função. Esta declaração de política também permite que a entidade visualize uma lista de funções a partir da qual elas podem escolher a função a ser transmitida. Para obter mais informações, consulte [Conceda permissões a um usuário para passar um perfil para um serviço da AWS](id_roles_use_passrole.md).

```
{
  "Sid": "PolicyStatementToAllowUserToListRoles",
  "Effect": "Allow",
  "Action": ["iam:ListRoles"],
  "Resource": "*"
},
{
  "Sid": "PolicyStatementToAllowUserToPassOneSpecificRole",
  "Effect": "Allow",
  "Action": [ "iam:PassRole" ],
  "Resource": "arn:aws:iam::account-id:role/my-role-for-XYZ"
}
```

## Permissões indiretas com funções vinculadas a serviços
<a name="create-service-linked-role-permissions-transfer"></a>

As permissões concedidas por uma função vinculada a um serviço podem ser transferidas indiretamente para outros usuários e funções. Quando um perfil vinculado ao serviço é usado por um serviço da AWS, esse perfil vinculado ao serviço pode usar suas próprias permissões para chamar outros serviços da AWS. Isso significa que usuários e funções com permissões para chamar um serviço que usa uma função vinculada ao serviço podem ter acesso indireto aos serviços acessíveis por essa função vinculada ao serviço.

Por exemplo, quando você cria uma instância de banco de dados do Amazon RDS, [uma função vinculada ao serviço para o RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAM.ServiceLinkedRoles.html) será criada automaticamente se ainda não houver uma. Essa função permite que o RDS chame o Amazon EC2, o Amazon SNS, o Amazon CloudWatch Logs e o Amazon Kinesis em seu nome. Se você permitir que usuários e perfis em sua conta modifiquem ou criem bancos de dados do RDS, eles poderão interagir indiretamente com o Amazon EC2, o Amazon SNS, os logs do Amazon CloudWatch Logs e os recursos do Amazon Kinesis por meio de chamadas ao RDS, pois o RDS usaria sua função vinculada ao serviço para acessar esses recursos.

### Métodos de criação de perfis vinculados ao serviço
<a name="create-service-linked-role"></a>

O método que você usa para criar uma função vinculada ao serviço depende do serviço. Em alguns casos, você não precisa criar manualmente uma função vinculada ao serviço. Por exemplo, quando você conclui uma ação específica (como a criação de um recurso) no serviço, o serviço pode criar a função vinculada ao serviço para você. Ou, se você estava usando um serviço antes que ele começou a oferecer suporte a funções vinculadas ao serviço, o serviço pode ter criado automaticamente a função na sua conta. Para saber mais, consulte [Uma nova função apareceu na minha conta da AWS](troubleshoot_roles.md#troubleshoot_roles_new-role-appeared).

Em outros casos, o serviço pode oferecer suporte à criação de uma função vinculada ao serviço manualmente usando o console, API ou CLI do serviço. Para obter informações sobre quais serviços oferecem suporte a funções vinculadas a serviços, consulte [AWSServiços da que funcionam com o IAM](reference_aws-services-that-work-with-iam.md) e procure os serviços que têm **Sim **na coluna **Função vinculada ao serviço**. Para saber se o serviço oferece suporte para criar a função vinculada ao serviço, escolha o link **Sim** para visualizar a documentação da função vinculada a esse serviço.

Se o serviço não for compatível com a criação da função, você poderá usar o IAM para criar a função vinculada ao serviço.

**Importante**  
Perfis vinculados a serviço contam para o limite dos seus [perfis do IAM em uma Conta da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-quotas-entities), mas, se você tiver atingido seu limite, ainda poderá criar perfis vinculados a serviço na sua conta. Somente as funções vinculadas ao serviço podem exceder o limite.

### Criar uma função vinculada ao serviço (console)
<a name="create-service-linked-role-iam-console"></a>

Antes de criar uma função vinculada ao serviço no IAM, descubra se o serviço vinculado cria automaticamente funções vinculadas ao serviço. Além disso, saiba se você pode criar a função no console, na API ou na CLI do serviço.<a name="create-service-linked-role-iam-console"></a>

**Para criar uma função vinculada ao serviço (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 do IAM, escolha **Perfis**. Depois, escolha **Create role** (Criar perfil).

1. Escolha o tipo de função **AWS Service** (Service).

1. Escolha o caso de uso para o seu serviço. Casos de uso são definidos pelo serviço para incluir a política de confiança exigida pelo serviço. Em seguida, escolha **Próximo**.

1. Escolha uma ou mais políticas de permissões a serem anexadas à função. Dependendo do caso de uso que você selecionou, o serviço pode executar uma das seguintes ações:
   + Defina as permissões usadas pela função.
   + Permita que você escolha um conjunto limitado de permissões.
   + Permita que você escolha entre todas as permissões.
   + Permitir que você opte por não selecionar nenhuma política no momento, criar políticas mais tarde e, em seguida, anexá-las à função.

   Marque a caixa de seleção ao lado da política que atribui as permissões que você deseja que o perfil tenha e escolha **Próximo**. 
**nota**  
As permissões que você especificar estarão disponíveis para qualquer entidade que usar a função. Por padrão, uma função não tem nenhuma permissões.

1. Para **Nome do perfil**, o grau de personalização do nome do perfil é definido pelo serviço. Se o serviço define o nome da função, essa opção não é editável. Em outros casos, o serviço pode definir um prefixo para a função e permitir que você insira um sufixo opcional.

   Se possível, insira um sufixo de nome de função a ser adicionado ao nome padrão. O sufixo ajuda a identificar a finalidade dessa função. Os nomes de função devem ser exclusivos em sua conta AWS. Eles não são diferenciados por letras maiúsculas e minúsculas. Por exemplo, não é possível criar perfis denominados **<service-linked-role-name>\$1SAMPLE** e **<service-linked-role-name>\$1sample**. Como várias entidades podem fazer referência à função, não é possível editar o nome da função depois que ela é criada.

1. (Opcional) Em **Description** (Descrição), edite a descrição para a nova função vinculado ao serviço.

1. Você não pode anexar tags para funções vinculadas ao serviço durante a criação. 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**.

### Criar uma função vinculada ao serviço (AWS CLI)
<a name="create-service-linked-role-iam-cli"></a>

Antes de criar uma função vinculada ao serviço no IAM, descubra se o serviço vinculado cria automaticamente as funções vinculadas ao serviço e se você pode criar a função na CLI do serviço. Se a CLI do serviço não for compatível, você poderá usar comandos do IAM para criar uma função vinculada ao serviço com a política de confiança e políticas em linha de que o serviço precisa assumir a função.

**Para criar uma função vinculada ao serviço (AWS CLI)**

Execute o seguinte comando:

```
aws iam [create-service-linked-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-service-linked-role.html) --aws-service-name SERVICE-NAME.amazonaws.com
```

### Criar uma função vinculada ao serviço (API da AWS)
<a name="create-service-linked-role-iam-api"></a>

Antes de criar uma função vinculada ao serviço no IAM, descubra se o serviço vinculado cria automaticamente as funções vinculadas ao serviço e se você pode criar a função na API do serviço. Se a API do serviço não for suportada, você pode usar a API do AWS para criar uma função vinculada ao serviço com a política de confiança e políticas em linha de que o serviço precisa para assumir a função.

**Para criar uma função vinculada ao serviço (API da AWS)**

Use a chamada de API [CreateServiceLinkedRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html). Na solicitação, especifique o nome do serviço na forma de `SERVICE_NAME_URL.amazonaws.com`. 

Por exemplo, para criar a função vinculada ao serviço **Lex Bots**, use `lex.amazonaws.com`.

# Criar um perfil para um provedor de identidade de terceiros
<a name="id_roles_create_for-idp"></a>

Você pode usar provedores de identidade em vez de criar usuários do IAM na sua Conta da AWS. Com um provedor de identidade (IdP), você pode gerenciar as identidades de usuários fora da AWS e fornecer a essas identidades de usuários externos permissões para acessar recursos da AWS na sua conta. Para obter mais informações sobre federação e provedores de identidade, consulte [Federação e provedores de identidade na AWS](id_roles_providers.md).

## Criar um perfil para entidades principais federadas OIDC e SAML (console)
<a name="roles-creatingrole-federated-users-console"></a>

Os procedimentos para criar um perfil dependem de sua opção de provedores de terceiros:
+ Para OpenID Connect (OIDC), consulte [Criar uma função para uma federação do OpenID Connect (console)](id_roles_create_for-idp_oidc.md).
+ Para SAML 2.0, consulte [Criar um perfil para uma federação do SAML 2.0 (console)](id_roles_create_for-idp_saml.md).

## Criar uma função para acesso federado (AWS CLI)
<a name="roles-creatingrole-identityprovider-cli"></a>

As etapas para criar uma função para provedores de identidade (OIDC ou SAML) na AWS CLI são idênticas. A diferença está no conteúdo da política de confiança que você cria nas etapas obrigatórias. Comece seguindo as etapas na seção **Pré-requisitos** para o tipo de provedor que você está usando:
+ Para um provedor do OIDC, consulte [Pré-requisitos para a criação de uma função para o OIDC](id_roles_create_for-idp_oidc.md#idp_oidc_Prerequisites).
+ Para um provedor do SAML, consulte [Pré-requisitos para a criação de uma função para o SAML](id_roles_create_for-idp_saml.md#idp_saml_Prerequisites).

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 um perfil (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 à 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 de provedor de identidade 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ê esteja executando a AWS CLI em um computador Windows e já tenha configurado a AWS CLI com suas credenciais. Para obter mais informações, consulte [Configurar a AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html).

A política de confiança do exemplo a seguir será designada para um aplicativo móvel se o usuário fizer login usando o Amazon Cognito. Neste exemplo, *us-east:12345678-ffff-ffff-ffff-123456* representa o ID do grupo de identidades atribuído pelo Amazon Cognito.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Sid": "RoleForCognito",
        "Effect": "Allow",
        "Principal": {"Federated": "cognito-identity.amazonaws.com"},
        "Action": "sts:AssumeRoleWithWebIdentity",
        "Condition": {"StringEquals": {"cognito-identity.amazonaws.com:aud": "us-east:12345678-ffff-ffff-ffff-123456"}}
    }
}
```

------

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 função `Test-Cognito-Role`, você deve primeiro salvar a política de confiança anterior com o nome `trustpolicyforcognitofederation.json` e a política de permissões anterior com o nome `permspolicyforcognitofederation.json` na pasta `policies` na unidade `C:` local. Você pode usar os comandos a seguir para criar a função e anexar a política em linha.

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

# Attach the permissions policy to the role to specify what it is allowed to do.
aws iam put-role-policy --role-name Test-Cognito-Role --policy-name Perms-Policy-For-CognitoFederation --policy-document file://C:\policies\permspolicyforcognitofederation.json
```

## Criar uma função para acesso federado (API da AWS)
<a name="roles-creatingrole-identityprovider-api"></a>

As etapas para criar uma função para provedores de identidade (OIDC ou SAML) na AWS CLI são idênticas. A diferença está no conteúdo da política de confiança que você cria nas etapas obrigatórias. Comece seguindo as etapas na seção **Pré-requisitos** para o tipo de provedor que você está usando:
+ Para um provedor do OIDC, consulte [Pré-requisitos para a criação de uma função para o OIDC](id_roles_create_for-idp_oidc.md#idp_oidc_Prerequisites).
+ Para um provedor do SAML, consulte [Pré-requisitos para a criação de uma função para o SAML](id_roles_create_for-idp_saml.md#idp_saml_Prerequisites).

**Para criar um perfil (API AWS)**

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

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

    ou

   Criar uma política de permissões em linha para a função: [PutRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutRolePolicy.html)

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.

# Criar uma função para uma federação do OpenID Connect (console)
<a name="id_roles_create_for-idp_oidc"></a>

É possível usar os provedores de identidades federadas do OpenID Connect (OIDC) em vez de criar usuários do AWS Identity and Access Management em sua Conta da AWS. Com um provedor de identidade (IdP), você pode gerenciar as identidades de usuários fora da AWS e fornecer a essas identidades de usuários externos permissões para acessar recursos da AWS na sua conta. Para obter mais informações sobre federação e IdPs, consulte [Federação e provedores de identidade na AWS](id_roles_providers.md).

## Pré-requisitos para a criação de uma função para o OIDC
<a name="idp_oidc_Prerequisites"></a>

Para criar uma função para a federação OIDC, você primeiro deve concluir as etapas obrigatórias a seguir.<a name="oidc-prereqs"></a>

**Para se preparar para uma função para a federação do OIDC**

1. Inscreva-se em um ou mais serviços que oferecem identidades federadas OIDC. Se estiver criando um aplicativo que precisa de acesso a seus recursos da AWS, você também poderá configurar seu aplicativo com as informações do provedor. Quando você faz isso, o provedor fornece a você um ID de aplicação ou público que é exclusivo da aplicação. (Diferentes provedores usam diferentes terminologias para este processo. Este guia usa o termo *configurar* para o processo de identificação de sua aplicação com o provedor.) É possível configurar várias aplicações com cada provedor ou vários provedores com um único aplicativo. Visualize as informações sobre o uso de provedores de identidades:
   + [Centro do desenvolvedor do Login with Amazon](https://login.amazon.com/)
   + [Adicione o login do Facebook ao seu aplicativo ou site](https://developers.facebook.com/docs/facebook-login/v2.1) no site de desenvolvedores do Facebook.
   + [Uso de OAuth 2.0 para login (OpenID Connect)](https://developers.google.com/accounts/docs/OAuth2Login) no site de desenvolvedores do Google.

1. <a name="idpoidcstep2"></a>Depois de receber as informações necessárias do IdP, crie um IdP no IAM. Para obter mais informações, consulte [Criar um provedor de identidade OpenID Connect (OIDC) no IAM](id_roles_providers_create_oidc.md).
**Importante**  
Se você estiver usando um IdP OIDC do Google, Facebook ou Amazon Cognito, não crie um IdP do IAM separado no Console de gerenciamento da AWS. Esses provedores de identidades OIDC já estão integrados à AWS e estão disponíveis para uso. Ignore esta etapa e a criação de novas funções usando seu IdP na etapa a seguir.

1. Prepare as políticas para a função que os usuários autenticados pelo IdP assumirão. Assim como com qualquer função, uma função para um aplicativo móvel inclui duas políticas. Uma é a política de confiança que especifica quem pode assumir a função. A outra é a política de permissões que especifica as ações e os recursos reais da AWS aos quais o aplicativo móvel tem ou não permissão para acessar.

   Para idPs da Web, recomendamos que você use o [Amazon Cognito](https://aws.amazon.com/cognito/) para gerenciar identidades. Nesse caso, use uma política de confiança semelhante a este exemplo.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Principal": {"Federated": "cognito-identity.amazonaws.com"},
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
               "StringEquals": {"cognito-identity.amazonaws.com:aud": "us-east-2:12345678-abcd-abcd-abcd-123456"},
               "ForAnyValue:StringLike": {"cognito-identity.amazonaws.com:amr": "unauthenticated"}
           }
       }
   }
   ```

------

   Substitua `us-east-2:12345678-abcd-abcd-abcd-123456` pelo ID do grupo de identidades que o Amazon Cognito atribuir a você.

   Se você configurar manualmente um IdP do OIDC, ao criar a política de confiança, você deve usar três valores que garantem que apenas seu aplicativo possa assumir a função:
   + No elemento `Action`, use a ação `sts:AssumeRoleWithWebIdentity`.
   + No elemento `Principal`, use a string `{"Federated":providerUrl/providerArn}`.
     + Para alguns IdPs OIDC comuns, a `providerUrl` é um URL. Os exemplos a seguir incluem métodos para especificar a entidade principal para alguns IdPs comuns:

       `"Principal":{"Federated":"cognito-identity.amazonaws.com"}`

       `"Principal":{"Federated":"www.amazon.com"}`

       `"Principal":{"Federated":"graph.facebook.com"}`

       `"Principal":{"Federated":"accounts.google.com"}`
     + Para outros provedores OIDC, use nome do recurso da Amazon (ARN) do IdP OIDC que você criou em [Step 2](#idpoidcstep2), como o exemplo a seguir:

       `"Principal":{"Federated":"arn:aws:iam::123456789012:oidc-provider/server.example.com"}`
   + No elemento `Condition`, use uma condição `StringEquals` para limitar as permissões. Teste o ID do grupo de identidades para o Amazon Cognito ou o ID da aplicação para outros provedores. O ID do grupo de identidades deve corresponder ao ID da aplicação que você recebeu quando configurou a aplicação com o IdP. Essa correspondência entre os IDs garante que a solicitação seja proveniente da aplicação.
**nota**  
Os perfis do IAM para bancos de identidades do Amazon Cognito confiam na entidade principal do serviço `cognito-identity.amazonaws.com` para assumir o perfil. Perfis desse tipo devem conter pelo menos uma chave de condição para limitar as entidades principais que podem assumir o perfil.  
Considerações adicionais se aplicam aos bancos de identidades do Amazon Cognito que assumem [perfis do IAM entre contas](access_policies-cross-account-resource-access.md). As políticas de confiança desses perfis devem aceitar a entidade principal do serviço `cognito-identity.amazonaws.com` e conter a chave de condição `aud` para restringir a suposição de perfis aos usuários dos bancos de identidades pretendidos. Uma política que confia nos bancos de identidades do Amazon Cognito sem essa condição cria o risco de que um usuário de um banco de identidades não intencional possa assumir o perfil. Para obter mais informações, consulte [Políticas de confiança para perfis do IAM na autenticação básica (clássica)](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#trust-policies) no *Guia do Desenvolvedor do Amazon Cognito*.

     Crie um elemento de condição semelhante aos exemplos a seguir, dependendo do IdP que você está usando: 

     `"Condition": {"StringEquals": {"cognito-identity.amazonaws.com:aud": "us-east:12345678-ffff-ffff-ffff-123456"}}`

     `"Condition": {"StringEquals": {"www.amazon.com:app_id": "amzn1.application-oa2-123456"}}`

     `"Condition": {"StringEquals": {"graph.facebook.com:app_id": "111222333444555"}}`

     `"Condition": {"StringEquals": {"accounts.google.com:aud": "66677788899900pro0"}}`

     Para provedores OIDC, use o URL totalmente qualificado do IdP OIDC com a chave de contexto `aud`, como o exemplo a seguir: 

     `"Condition": {"StringEquals": {"server.example.com:aud": "appid_from_oidc_idp"}}`
**nota**  
Observe que os valores para a entidade principal na política de confiança para a função são específicos a um IdP. Um perfil pode especificar apenas uma entidade principal. Portanto, se a aplicação móvel permitir que os usuários se registrem em mais de um IdP, você deverá criar uma função separada para cada IdP que utilizar. Portanto, você deve criar políticas de confiança separadas para cada IdP.

   Se um usuário usar uma aplicação móvel para fazer login estando no Login with Amazon, a política de confiança do exemplo a seguir será aplicada. No exemplo, *amzn1.application-oa2-123456* representa o ID da aplicação que a Amazon atribuiu quando você configurou a aplicação usando o Login with Amazon.

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

****  

   ```
   {
         "Version":"2012-10-17",		 	 	 
         "Statement": [{
             "Sid": "RoleForLoginWithAmazon",
             "Effect": "Allow",
             "Principal": {"Federated": "www.amazon.com"},
             "Action": "sts:AssumeRoleWithWebIdentity",
             "Condition": {"StringEquals": {"www.amazon.com:app_id": "amzn1.application-oa2-123456"}}
         }]
     }
   ```

------

   Se um usuário usar uma aplicação móvel para fazer login estando no Facebook, a política de confiança do exemplo a seguir será aplicada. Neste exemplo, *111222333444555* representa o ID da aplicação atribuído pelo Facebook.

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

****  

   ```
   {
         "Version":"2012-10-17",		 	 	 
         "Statement": [{
             "Sid": "RoleForFacebook",
             "Effect": "Allow",
             "Principal": {"Federated": "graph.facebook.com"},
             "Action": "sts:AssumeRoleWithWebIdentity",
             "Condition": {"StringEquals": {"graph.facebook.com:app_id": "111222333444555"}}
         }]
     }
   ```

------

   Se um usuário usar uma aplicação móvel para fazer login estando no Goggle, a política de confiança do exemplo a seguir será aplicada. Nesse exemplo, *666777888999000* representa o ID da aplicação atribuído pelo Google.

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

****  

   ```
   {
         "Version":"2012-10-17",		 	 	 
         "Statement": [{
             "Sid": "RoleForGoogle",
             "Effect": "Allow",
             "Principal": {"Federated": "accounts.google.com"},
             "Action": "sts:AssumeRoleWithWebIdentity",
             "Condition": {"StringEquals": {"accounts.google.com:aud": "666777888999000"}}
         }]
     }
   ```

------

   Se um usuário usar uma aplicação móvel para fazer login estando no Amazon Cognito, a política de confiança do exemplo a seguir será aplicada. Neste exemplo, *us-east:12345678-ffff-ffff-ffff-123456* representa o ID do grupo de identidades atribuído pelo Amazon Cognito.

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

****  

   ```
   {
         "Version":"2012-10-17",		 	 	 
         "Statement": [{
             "Sid": "RoleForCognito",
             "Effect": "Allow",
             "Principal": {"Federated": "cognito-identity.amazonaws.com"},
             "Action": "sts:AssumeRoleWithWebIdentity",
             "Condition": {"StringEquals": {"cognito-identity.amazonaws.com:aud": "us-east:12345678-ffff-ffff-ffff-123456"}}
         }]
     }
   ```

------

## Como criar um perfil para o OIDC
<a name="idp_oidc_Create"></a>

Depois de concluir as etapas obrigatórias, você pode criar a função no IAM. Para provedores de identidade (IdPs) OpenID Connect (OIDC) compartilhados reconhecidos, o IAM exige uma avaliação explícita de declarações específicas em JSON Web Tokens (JWTs), os quais são conhecidos como *controles de provedor de identidade*. Para obter mais informações sobre quais IdPs OIDC têm *controles de provedor de identidade*, consulte [Controles de provedor de identidade para provedores OIDC compartilhados](id_roles_providers_oidc_secure-by-default.md).

O procedimento a seguir descreve como criar o perfil para federação OIDC no Console de gerenciamento da AWS. Para criar uma função na AWS CLI ou na API da AWS, consulte os procedimentos em [Criar um perfil para um provedor de identidade de terceiros](id_roles_create_for-idp.md).

**Importante**  
Se você estiver usando o Amazon Cognito, use o console do Amazon Cognito para configurar as funções. Caso contrário, use o console do IAM para criar uma função para federação OIDC.

**Criar um perfil do IAM para a federação OIDC**

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, escolha **Funções** e **Criar função**.

1. Escolha a **identidade da Web** como o tipo de entidade confiável e selecione **Avançar**.

1. Em **Identity provider** (Provedor de identidades), escolha o IdP para a função: 
   + Se você desejar criar uma função para um IdP da Web individual, selecione **Login with Amazon**, **Facebook** ou **Google**. 
**nota**  
Você deve criar uma função separada para cada IdP que quiser utilizar.
   + Se você desejar criar uma função de cenário avançado para o Amazon Cognito, escolha **Amazon Cognito**. 
**nota**  
Você só precisa criar manualmente uma função para usar com o Amazon Cognito quando está trabalhando em um cenário avançado. Caso contrário, o Amazon Cognito pode criar funções para você. Para obter mais informações sobre o Amazon Cognito, consulte [Provedores externos de identidade de grupos de identidades (identidades federadas)](https://docs.aws.amazon.com/cognito/latest/developerguide/external-identity-providers.html) no *Guia do desenvolvedor do Amazon Cognito*. 
   + Para criar uma função para o GitHub Actions, é necessário adicionar o provedor OIDC do GitHub ao IAM. Depois de adicionar o provedor OIDC do GitHub ao IAM, escolha **token.actions.githubusercontent.com**. 
**nota**  
Para obter informações sobre como configurar a AWS para confiar no provedor de OIDC do GitHub como uma identidade federada, consulte [Documentos do GitHub – Configuração do OpenID Connect na Amazon Web Services](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services). Para obter informações sobre as práticas recomendadas para limitar o acesso às funções associadas ao IAM IdP para GitHub, consulte [Configurar uma função para o provedor de identidades OIDC GitHub](#idp_oidc_Create_GitHub) nesta página.
   + Se você desejar criar um perfil para a HashiCorp Cloud Platform (HCP) Terraform, comece adicionando o provedor de OIDC do Terraform ao IAM. Depois de adicionar o provedor de OIDC Terraform ao IAM, escolha **app.terraform.io**. 
**Importante**  
Os perfis do IAM para o provedor de OIDC Terraform da HashiCorp Cloud Platform (HCP) devem avaliar a chave de condição do IAM, `app.terraform.io:sub`, na política de confiança do perfil. Essa chave de condição limita quais organizações, projetos, espaços de trabalho ou fases de execução do HCP Terraform são capazes de assumir o perfil. Sem essa chave de condição, sua política de confiança concede acesso ao seu perfil e a recursos da AWS por meio de identidades fora da sua organização, o que não se alinha ao princípio de privilégio mínimo.   
Se você definir ou modificar uma política de confiança de um perfil para um perfil associado ao provedor de OIDC Terraform da HCP em sua conta da AWS, mas não avaliar a chave de condição do IAM `app.terraform.io:sub`, você receberá um erro. Além disso, o AWS STS negará solicitações de autorização se sua política de confiança de perfil não avaliar essa chave de condição.

1. As informações solicitadas variam de acordo com o provedor OIDC que você escolher.
   + Insira o identificador para a aplicação. O rótulo do identificador é alterado de acordo com o provedor escolhido:
     + Se você desejar criar uma função para o Login with Amazon, insira o ID da aplicação na caixa **Application ID** (ID da aplicação).
     + Se você desejar criar uma função para o Facebook, digite o ID da aplicação na caixa **Application ID** (ID da aplicação).
     + Se você desejar criar uma função para o Google, digite o nome do público na caixa **Audience** (Público).
     + Se você desejar criar uma função para o Amazon Cognito, digite o ID do grupo de identidades que você criou para as aplicações do Amazon Cognito na caixa **Identity Pool ID** (ID do grupo de identidades).
   + Para criar uma função para GitHub Actions, insira os seguintes detalhes:
     + Em **Público**, escolha `sts.amazonaws.com`.
     + Em **Organização do GitHub**, insira o nome da organização no GitHub. O nome da organização do GitHub é obrigatório e deve ser alfanumérico, incluindo traços (-). Não é permitido usar caracteres curinga (\$1 e ?) no nome da organização do GitHub.
     + (Opcional) Em **Repositório do GitHub**, insira o URL do seu repositório do GitHub. Se você não especificar um valor, o padrão será um coringa (`*`).
     + (Opcional) em **Filial do GitHub**, insira o nome da filial do GitHub. Se você não especificar um valor, o padrão será um coringa (`*`).
   + Se você desejar criar um perfil para a HashiCorp Cloud Platform (HCP) Terraform, insira os detalhes a seguir:
     + Em **Público**, escolha `aws.workload.identity`.
     + Em **Organização**, insira o nome da organização. É possível especificar um caractere curinga (`*`) para todas as organizações.
     + Em **Projeto**, insira o nome do projeto. É possível especificar um caractere curinga (`*`) para todos os projetos.
     + Em **Workspace**, insira o nome do workspace. É possível especificar um caractere curinga (`*`) para todos os workspaces.
     + Em **Fase de execução**, insira o nome da fase de execução. É possível especificar um caractere curinga (`*`) para todas as fases de execução.

1. (Opcional) em **Condição (opcional)**, escolha **Adicionar condição** para criar condições adicionais que devem ser atendidas para que os usuários da aplicação possam usar as permissões concedidas pela função. Por exemplo, você pode adicionar uma condição que conceda acesso a recursos da AWS apenas para um determinado ID de usuário do IAM. Você também pode adicionar condições à política de confiança após a criação da função. Para obter mais informações, consulte [Atualizar a política de confiança de um perfil](id_roles_update-role-trust-policy.md).

1. Revise suas informações de OIDC e 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 os usuários do OIDC tenham. 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ção). 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), insira um nome. Os nomes de função devem ser exclusivos em sua Conta da AWS. Eles não diferenciam maiúsculas e minúsculas. Por exemplo, não é possível criar duas funções denominadas **PRODROLE** e **prodrole**. Como outros recursos da AWS podem referenciar a função, não é possível editar o nome da função depois que ele é criado.

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

1. Para editar os casos de uso e as permissões da função, escolha **Edit** (Editar) nas seções **Etapa 1: selecionar entidades confiáveis** ou na **Etapa 2: adicionar permissões**. 

1. (Opcional) Para adicionar metadados à função, anexe 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**.

## Configurar uma função para o provedor de identidades OIDC GitHub
<a name="idp_oidc_Create_GitHub"></a>

Se você usar o GitHub como um provedor de identidades (IdP) Open ID Connect (OIDC), a prática recomendada será limitar as entidades que podem assumir o perfil associado ao IdP do IAM. Ao incluir uma instrução de condição na política de confiança, você pode limitar a função a uma organização, repositório ou ramificação específica do GitHub. É possível usar a chave de condição `token.actions.githubusercontent.com:sub` com operadores de condição de string para limitar o acesso. Recomendamos limitar a condição a um conjunto específico de repositórios ou ramificações em sua organização do GitHub. Para obter informações sobre como configurar a AWS para confiar no OIDC do GitHub como uma identidade federada, consulte [GitHub Docs - Configuring OpenID Connect in Amazon Web Services](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services) ("Documentos do GitHub - Configurar o OpenID Connect na Amazon Web Services"). 

Se você usar ambientes do GitHub em fluxos de trabalho de ação ou em políticas de OIDC, é extremamente recomendável adicionar regras de proteção ao ambiente para aumentar a segurança. Use ramificações e tags de implantação para restringir quais ramificações e tags podem ser implantadas no ambiente. Para obter mais informações sobre a configuração de ambientes com regras de proteção, consulte [Ramificações de implantação e marcas](https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment#deployment-branches-and-tags) no artigo *Usando ambientes para implantação* do GitHub.

Quando o IdP OIDC do GitHub é a entidade principal confiável para seu perfil, o IAM verifica a condição da política de confiança do perfil para verificar se a chave de condição `token.actions.githubusercontent.com:sub` está presente e se seu valor não é apenas um caractere curinga (\$1 e ?) ou nulo. O IAM realiza essa verificação quando a política de confiança é criada ou atualizada. Se a chave de condição `token.actions.githubusercontent.com:sub` não estiver presente ou o valor da chave não satisfizer os critérios de valor mencionados, a solicitação falhará e retornará um erro.

**Importante**  
Se você não limitar a chave de condição `token.actions.githubusercontent.com:sub` a uma organização ou um repositório específico, as ações do GitHub de organizações ou repositórios fora do seu controle poderão assumir perfis associados ao IdP do IAM do GitHub na sua conta da AWS.

O exemplo de política de confiança a seguir limita o acesso à organização, repositório e ramificação definidos do GitHub. O valor da chave de condição `token.actions.githubusercontent.com:sub` no exemplo a seguir é o formato padrão do valor do assunto documentado pelo GitHub.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::012345678910:oidc-provider/token.actions.githubusercontent.com"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "token.actions.githubusercontent.com:aud": "sts.amazonaws.com",
          "token.actions.githubusercontent.com:sub": "repo:GitHubOrg/GitHubRepo:ref:refs/heads/GitHubBranch"
        }
      }
    }
  ]
}
```

------

O exemplo de condição a seguir limita o acesso à organização e ao repositório definidos do GitHub, mas concede acesso a qualquer ramificação dentro do repositório.

```
"Condition": {
  "StringEquals": {
          "token.actions.githubusercontent.com:aud": "sts.amazonaws.com"
  },
  "StringLike": {    
    "token.actions.githubusercontent.com:sub": "repo:GitHubOrg/GitHubRepo:*"
  }
}
```

O exemplo de condição a seguir limita o acesso a qualquer repositório ou ramificação dentro da organização do GitHub definida. Recomendamos limitar a chave de condição `token.actions.githubusercontent.com:sub` a um valor específico que limita o acesso ao GitHub Actions de dentro da sua organização do GitHub.

```
"Condition": {
  "StringEquals": {
          "token.actions.githubusercontent.com:aud": "sts.amazonaws.com"
  },
  "StringLike": {    
    "token.actions.githubusercontent.com:sub": "repo:GitHubOrg/*"
  }
}
```

Para obter mais informações sobre chaves de federação OIDC disponíveis para verificação de condições nas políticas, consulte [Chaves disponíveis para federação OIDC da AWS](reference_policies_iam-condition-keys.md#condition-keys-wif).

# Criar um perfil para uma federação do SAML 2.0 (console)
<a name="id_roles_create_for-idp_saml"></a>

 Você pode usar a federação do SAML 2.0 em vez de criar usuários do IAM na sua Conta da AWS. Com um provedor de identidade (IdP), você pode gerenciar as identidades de usuários fora da AWS e fornecer a essas identidades de usuários externos permissões para acessar recursos da AWS na sua conta. Para obter mais informações sobre federação e provedores de identidade, consulte [Federação e provedores de identidade na AWS](id_roles_providers.md).

**nota**  
Para melhorar a resiliência da federação, recomendamos que você configure seu IdP e sua  federação da AWS para oferecer suporte a vários endpoints de login do SAML. Para obter detalhes, consulte o artigo do AWS Security Blog [How to use regional SAML endpoints for failover](https://aws.amazon.com/blogs//security/how-to-use-regional-saml-endpoints-for-failover).

## Pré-requisitos para a criação de uma função para o SAML
<a name="idp_saml_Prerequisites"></a>

Para criar uma função para a federação SAML 2.0, você primeiro deve concluir as etapas obrigatórias a seguir.<a name="saml-prereqs"></a>

**Para se preparar para uma função para a federação do SAML 2.0**

1. <a name="idpsamlstep1"></a>Antes de criar uma função para federação baseada em SAML, você deve criar um provedor SAML no IAM. Para obter mais informações, consulte [Criar um provedor de identidades SAML no IAM](id_roles_providers_create_saml.md).

1. Prepare as políticas para a função que os usuários autenticados pelo SAML 2.0 assumirão. Assim como com qualquer função, uma função para a federação do SAML inclui duas políticas. Uma é a política de confiança da função que especifica quem pode assumir a função. A outra é a política de permissões do IAM que especifica as ações e os recursos da AWS aos quais a entidade principal federada SAML tem ou não permissão para acessar.

   Quando você criar a política de confiança para sua função, deverá usar três valores para garantir que a função só possa ser assumida por sua aplicação:
   + No elemento `Action`, use a ação `sts:AssumeRoleWithSAML`.
   + No elemento `Principal`, use a string `{"Federated":ARNofIdentityProvider}`. Substitua `ARNofIdentityProvider` pelo nome de recurso da Amazon (ARN) do [provedor de identidade SAML](id_roles_providers_saml.md) que você criou em [Step 1](#idpsamlstep1).
   + Para o elemento `Condition`, use uma condição `StringEquals` para verificar se o atributo `saml:aud` da resposta SAML corresponde ao URL exibido pelo seu navegador durante o início de sessão no console. Essa URL do endpoint de início de sessão é o atributo de destinatário SAML do seu provedor de identidade. É possível incluir URLs de início de sessão em determinadas regiões. A AWS recomenda usar endpoints regionais em vez do endpoint global para melhorar a resiliência da federação. Para obter uma lista dos possíveis valores de *region-code* (região-código), consulte a coluna **Region** (Região) em [AWS Sign-In endpoints](https://docs.aws.amazon.com/general/latest/gr/signin-service.html) (Endpoints de login da ).

     Se a criptografia SAML for necessária, o URL de início de sessão deverá incluir o identificador exclusivo que a AWS atribui ao seu provedor SAML. É possível visualizar o identificador exclusivo selecionando o provedor de identidade no console do IAM para exibir a página de detalhes.

     `https://region-code.signin.aws.amazon.com/saml/acs/IdP-ID`

   A política de confiança de exemplo a seguir foi projetada para um usuário federado do SAML:

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Action": "sts:AssumeRoleWithSAML",
           "Principal": {
               "Federated": "arn:aws:iam::111122223333:saml-provider/PROVIDER-NAME"
           },
           "Condition": {
               "StringEquals": {
                   "SAML:aud": "https://region-code.signin.aws.amazon.com/saml"
               }
           }
       }
   }
   ```

------

   Substitua o ARN da entidade de segurança pelo ARN real do provedor SAML que você criou no IAM. Ele terá seu próprio ID de conta e nome de provedor. 

## Criar uma função para o SAML
<a name="idp_saml_Create"></a>

Depois de concluir as etapas obrigatórias, você pode criar a função para federação baseada no SAML. 

**Para criar uma função para a federação baseada em SAML**

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 do IAM, escolha **Roles (Funções)** e **Criar função (Create role)**.

1. Escolha o tipo de função **Federação SAML 2.0**.

1. Em **SAML Provider** (Provedor SAML), escolha o provedor para a função. 

1. Escolha o método de nível de acesso SAML 2.0. 
   + Escolha **Allow programmatic access only (Permitir acesso programático apenas)** para criar uma função que possa ser assumida programaticamente na API da AWS ou na AWS CLI.
   + Escolha **Allow programmatic and Console de gerenciamento da AWS access** (Permitir acesso programático e do console) para criar uma função que possa ser assumida de forma programática e no Console de gerenciamento da AWS.

   As funções criadas por ambos são semelhantes, mas a função que também pode ser assumida no console inclui uma política de confiança com uma determinada condição. Essa condição garante explicitamente que o público de SAML (atributo `SAML:aud`) seja definido como o endpoint de início de sessão da AWS para seu provedor SAML.

1. O procedimento para definir atributos varia em função do tipo de acesso.
   + Se estiver criando uma função para acesso programático, escolha um atributo na lista **Atributo**. Em seguida, na caixa **Value** (Valor), insira um valor a ser incluído na função. Isso restringe o acesso à função a usuários do provedor de identidade cuja resposta de autenticação SAML (declaração) inclua os atributos especificados. Você deve especificar pelo menos um atributo para garantir que sua função seja limitada a um subconjunto de usuários em sua organização. 
   + Se você estiver criando um perfil para acesso programático e via Console de gerenciamento da AWS, a seção **Endpoints de início de sessão** define o URL que seu navegador exibe durante o início de sessão no console. Esse endpoint é o atributo de destinatário SAML do seu provedor de identidade, que é mapeado na chave de contexto [`saml:aud`](reference_policies_iam-condition-keys.md#condition-keys-saml). Para obter mais informações, consulte [Configurar declarações SAML para a resposta de autenticação](id_roles_providers_create_saml_assertions.md).

     1. Escolha **Endpoints regionais** ou **Endpoint não regional**. Recomendamos o uso de vários endpoints de início de sessão SAML regionais para melhorar a resiliência da federação.

     1. Em **Regiões**, escolha as regiões às quais seu provedor de SAML oferece suporte para início de sessão na AWS.

     1.  Em **URLs de início de sessão devem incluir identificadores exclusivos**, selecione se os endpoints de início de sessão incluem os identificadores exclusivos que a AWS atribui ao seu provedor de identidade SAML. Essa opção é necessária para asserções SAML criptografadas. Para obter mais informações, consulte [Federação SAML 2.0](id_roles_providers_saml.md).

1. Para adicionar à política de confiança mais condições relacionadas a atributos, escolha **Condition (optional)** (Adicionar condições [opcional]), selecione a condição adicional e especifique um valor. 
**nota**  
A lista inclui os atributos do SAML usados com mais frequência. O IAM oferece suporte a atributos adicionais que você pode usar para criar condições. Para obter uma lista dos atributos com suporte, consulte [Chaves disponíveis para a federação do SAML](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_iam-condition-keys.html#condition-keys-saml) Se precisar de uma condição para um atributo do SAML compatível que não esteja na lista, você poderá adicionar essa condição manualmente. Para fazer isso, edite a política de confiança depois de criar a função.

1.  Revise as informações de confiança do SAML 2.0 e, em seguida, escolha **Next** (Avançar). 

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 deseja que os usuários federados SAML tenham. 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ção). Selecione a política a ser usada para o limite de permissões.

1. Escolha **Próximo**.

1. Escolha **Próximo: revisar**.

1. Em **Role name** (Nome da função), insira um nome. Os nomes de função devem ser exclusivos em sua Conta da AWS. Eles não são diferenciados por letras maiúsculas e minúsculas. Por exemplo, não é possível criar perfis denominados **PRODROLE** e **prodrole**. Como outros recursos de AWS podem fazer referência à função, não é possível editar o nome da função depois de ela ser criada. 

1. (Opcional) Em **Description** (Descriçã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. 

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

Depois de criar a função, você conclui a confiança do SAML configurando o software do provedor de identidade com informações sobre a AWS. Essas informações incluem as funções que você deseja que seus usuários federados SAML usem. Isso é chamado de configuração da confiança da parte confiável entre seu IdP e a AWS. Para obter mais informações, consulte [Configurar o IdP SAML 2.0 com objeto de confiança de terceira parte confiável e adição de declarações](id_roles_providers_create_saml_relying-party.md). 

# Criar um perfil usando políticas de confiança personalizadas
<a name="id_roles_create_for-custom"></a>

Você pode criar uma política de confiança personalizada para delegar acesso e permitir que outras pessoas realizem ações na sua Conta da AWS. Para obter mais informações, consulte [Criação de políticas do IAM](access_policies_create-console.md#access_policies_create-start).

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

## Criar um perfil do IAM usando políticas de confiança personalizada (console)
<a name="roles-creatingrole-custom-trust-policy-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).

**Para criar uma função usando uma política de confiança personalizadas (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. Selecione o tipo de função **Custom trust policy** (Política de confiança personalizada).

1. Na seção **Custom trust policy** (Política de confiança personalizada), insira ou cole a política de confiança personalizada para a função. Para obter mais informações, consulte [Criação de políticas do IAM](access_policies_create-console.md#access_policies_create-start).

1. Resolva os avisos de segurança, erros ou avisos gerais gerados durante a [validação de política](access_policies_policy-validator.md) e depois escolha **Next** (Avançar).

1. (Opcional) Defina um [limite de permissões](access_policies_boundaries.md). Esse é um atributo avançado que está disponível para perfis de serviço, mas não para perfis vinculados ao serviço.

   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ção). 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 o limite de permissões.

1. Escolha **Próximo**.

1. Para **Nome do perfil**, o grau de personalização do nome do perfil é definido pelo serviço. Se o serviço definir o nome da função, essa opção não será editável. Em outros casos, o serviço pode definir um prefixo para a função e permitir que você informe um sufixo opcional. Alguns serviços permitem que você especifique todo o nome de sua função.

   Se possível, insira um nome de função ou um sufixo de nome de função. Os nomes de função devem ser exclusivos em sua Conta da AWS. Eles não são diferenciados por letras maiúsculas e minúsculas. Por exemplo, não é possível criar perfis denominados **PRODROLE** e **prodrole**. Como outros recursos de AWS podem fazer referência à função, não é possível editar o nome da função depois de ela ser criada.

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

1. (Opcional) Escolha **Editar** nas seções **Etapa 1: selecionar entidades confiáveis** ou **Etapa 2: adicionar permissões** para editar a política personalizada e as permissões do perfil. 

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

# Exemplos de políticas para delegação de acesso
<a name="id_roles_create_policy-examples"></a>

Os exemplos a seguir mostram como você pode permitir ou conceder acesso para uma Conta da AWS aos recursos em outra Conta da AWS. Para saber como criar uma política do IAM usando esses exemplos de documentos de política JSON, consulte [Criar políticas usando o editor de JSON](access_policies_create-console.md#access_policies_create-json-editor).

**Topics**
+ [Uso de perfis para delegar acesso aos recursos de outra Conta da AWS](#example-delegate-xaccount-rolesapi)
+ [Uso de uma política para delegar acesso a serviços](#id_roles_create_policy-examples-access-to-services)
+ [Uso de uma política baseada em recurso para delegar acesso a um bucket do Amazon S3 em outra conta](#example-delegate-xaccount-S3)
+ [Uso de uma política baseada em recurso para delegar acesso a uma fila do Amazon SQS em outra conta](#example-delegate-xaccount-SQS)
+ [Não é possível delegar acesso quando o acesso à conta é negado](#example-delegate-xaccount-SQS-denied)

## Uso de perfis para delegar acesso aos recursos de outra Conta da AWS
<a name="example-delegate-xaccount-rolesapi"></a>

 Para obter um tutorial que mostra como usar funções do IAM para conceder aos usuários em uma conta acesso a recursos da AWS que estão em outra conta, consulte [Tutorial do IAM: Delegar acesso entre contas da AWS usando funções do IAM](tutorial_cross-account-with-roles.md). 

**Importante**  
Você pode incluir o ARN de uma função ou usuário específico no elemento `Principal` de uma política de confiança de função. Quando você salva a política, o AWS transforma o ARN em um ID principal exclusivo. Isso ajuda a reduzir o risco de alguém elevar seus privilégios 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 usuário, o relacionamento é interrompido. A política não se aplica mais, mesmo se você recriar o usuário ou a função, pois ela não corresponde ao ID principal armazenado na política de confiança. Quando isso acontece, o ID principal é exibido no console, pois a AWS não pode mais mapeá-lo de volta para um ARN. O resultado é que, se você excluir e recriar um usuário ou uma função referenciados no elemento `Principal` de uma política de confiança, você deverá editar a função para substituir o nome de recurso da Amazon (ARN). Ele é transformado no novo ID principal quando você salva a política.

## Uso de uma política para delegar acesso a serviços
<a name="id_roles_create_policy-examples-access-to-services"></a>

O exemplo a seguir mostra uma política que pode ser anexada a uma função. A política permite que dois serviços, Amazon EMR e AWS Data Pipeline, assumam a função. Os serviços podem então realizar qualquer tarefa concedida pela política de permissões atribuída à função (não exibida). Para especificar vários principais de serviço, você não especifica dois elementos `Service`; pode ter apenas um. Em vez disso, você usa uma variedade de principais de serviços múltiplas como o valor de um único elemento `Service`.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "elasticmapreduce.amazonaws.com",
          "datapipeline.amazonaws.com"
        ]
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

## Uso de uma política baseada em recurso para delegar acesso a um bucket do Amazon S3 em outra conta
<a name="example-delegate-xaccount-S3"></a>

Neste exemplo, a conta A usa uma política baseada em recurso (uma [política de bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucketPolicies.html) do Amazon S3) para conceder à conta B o acesso total ao bucket do S3 da conta A. Em seguida, a conta B cria uma política de usuário do IAM para delegar esse acesso ao bucket da conta A a um dos usuários na conta B. 

A política de bucket do S3 na conta A pode se parecer com a seguinte política. Neste exemplo, o bucket do S3 da conta A é denominado *amzn-s3-demo-bucket* e o número da conta B é 111122223333. Ele não especifica quaisquer usuários individuais ou grupos na conta B, apenas a conta em si.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Sid": "AccountBAccess1",
    "Effect": "Allow",
    "Principal": {"AWS": "111122223333"},
    "Action": "s3:*",
    "Resource": [
      "arn:aws:s3:::amzn-s3-demo-bucket",
      "arn:aws:s3:::amzn-s3-demo-bucket/*"
    ]
  }
}
```

------

Como alternativa, a conta A pode usar as [Listas de controle de acesso (ACLs)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3_ACLs_UsingACLs.html) do Amazon S3 para conceder à conta B acesso ao bucket do S3 ou a um único objeto de um bucket. Nesse caso, a única coisa que muda é como a conta A concede acesso à conta B. A conta B ainda usa uma política para delegar acesso a um grupo do IAM na conta B, conforme descrito na próxima parte deste exemplo. Para mais informações sobre como controlar o acesso em objetos e buckets do S3, acesse [Controle de acesso](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingAuthAccess.html) no *Guia do usuário do Amazon Simple Storage Service*. 

O administrador da conta B pode criar a seguinte política de exemplo. A política concede acesso de leitura a um grupo ou usuário na conta B. A política anterior concede acesso à conta B. No entanto, grupos e usuários individuais na conta B não podem acessar o recurso até que uma política de grupo ou usuário explicitamente conceda permissões ao recurso. As permissões nesta política podem ser apenas um subconjunto das permissões anteriores de políticas entre contas. A conta B não pode conceder mais permissões para seus grupos e usuários do que a conta A concedeu para a conta B na primeira política. Nesta política, o elemento `Action` é explicitamente definido para permitir apenas ações `List` e o elemento `Resource` desta política corresponde ao `Resource` para a política de bucket implantada pela conta A.

Para implementar essa política, a conta B usa o IAM para anexá-la ao usuário (ou grupo) apropriado na conta B. 

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "s3:List*",
    "Resource": [
      "arn:aws:s3:::amzn-s3-demo-bucket",
      "arn:aws:s3:::amzn-s3-demo-bucket/*"
    ]
  }
}
```

------

## Uso de uma política baseada em recurso para delegar acesso a uma fila do Amazon SQS em outra conta
<a name="example-delegate-xaccount-SQS"></a>

No exemplo a seguir, a conta A tem uma fila do Amazon SQS que usa uma política baseada em recurso anexada à fila para conceder acesso à fila para a conta B. Em seguida, a conta B usa uma política de grupo do IAM para delegar acesso a um grupo na conta B. 

O seguinte exemplo de política de fila concede à conta B permissão para realizar as ações `SendMessage` e `ReceiveMessage` na fila da conta A chamada *queue1*, mas apenas entre o meio-dia e 15:00 em 30 de novembro de 2014. O número de conta da conta B é 1111-2222-3333. A conta A usa o Amazon SQS para implementar esta política. 

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Principal": {"AWS": "111122223333"},
    "Action": [
      "sqs:SendMessage",
      "sqs:ReceiveMessage"
    ],
    "Resource": ["arn:aws:sqs:*:123456789012:queue1"],
    "Condition": {
      "DateGreaterThan": {"aws:CurrentTime": "2014-11-30T12:00Z"},
      "DateLessThan": {"aws:CurrentTime": "2014-11-30T15:00Z"}
    }
  }
}
```

------

A política da conta B para delegar acesso a um grupo na conta B pode se parecer com o exemplo a seguir. A conta B usa o IAM para anexar essa política a um grupo (ou usuário). 

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "sqs:*",
    "Resource": "arn:aws:sqs:*:123456789012:queue1"
  }
}
```

------

No exemplo de política de usuário do IAM anterior, a conta B usa um caractere curinga para conceder a seu usuário acesso a todas as ações do Amazon SQS na fila da conta A. No entanto, a conta B pode delegar acesso somente na medida em que o acesso foi concedido a ela. O grupo da conta B que tem a segunda política pode acessar a fila apenas entre meio-dia e 15:00 em 30 de novembro de 2014. O usuário só pode executar as ações `SendMessage` e `ReceiveMessage`, conforme definido na política de fila do Amazon SQS da conta A. 

## Não é possível delegar acesso quando o acesso à conta é negado
<a name="example-delegate-xaccount-SQS-denied"></a>

Uma Conta da AWS não pode delegar acesso aos recursos de outra conta se a outra conta tiver explicitamente negado o acesso à conta pai do usuário. A negação se propaga para os usuários daquela conta, independentemente de terem ou não políticas existentes que concedam acesso a eles.

Por exemplo, a conta A grava uma política de bucket no bucket do S3 da conta A que explicitamente nega o acesso da conta B ao bucket da conta A. Mas a conta B escreve uma política de usuário do IAM que concede a um usuário na conta B acesso ao bucket da conta A. A negação explícita aplicada ao bucket do S3 da conta A se propaga para os usuários da conta B e substitui a política de usuário do IAM que concede acesso ao usuário da conta B. (Para obter informações detalhadas sobre como as permissões são avaliadas, consulte [Lógica da avaliação de política](reference_policies_evaluation-logic.md).) 

A política de bucket da conta A pode se parecer com a seguinte política. Neste exemplo, o bucket do S3 da conta A é denominado *amzn-s3-demo-bucket* e o número da conta B é 1111-2222-3333.. A conta A usa o Amazon S3 para implementar esta política. 

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Sid": "AccountBDeny",
    "Effect": "Deny",
    "Principal": {"AWS": "111122223333"},
    "Action": "s3:*",
    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
  }
}
```

------

Esta negação explícita substitui todas as políticas na conta B que concedem permissão para acessar o bucket do S3 na conta A. 