Criação de uma função para delegar permissões a um usuário do IAM - AWS Identity and Access Management

Criação de uma função para delegar permissões a um usuário do IAM

Você pode usar funções 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 AssumeRole 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 sts:ExternalID correto. Para mais informações, consulte Como usar um ID externo ao conceder acesso aos seus recursos da AWS a terceiros.

Para obter informações sobre como usar funções para delegar permissões, consulte Termos e conceitos das funções. 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 uma função para delegar permissões a um serviço da AWS.

Criação de uma função do IAM (console)

Você pode usar o AWS Management Console 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 um perfil 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.

Para criar uma função (console)

  1. Faça login no AWS Management Console e abra o console do IAM em https://console.aws.amazon.com/iam/.

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

  3. Escolha o tipo de perfil AWS account (Conta da AWS).

  4. Para criar um perfil para sua conta, escolha This account (Esta conta). Para criar um perfil para outra conta, escolha Another AWS account (Outra conta da AWS) e insira o Account ID (ID da conta) à qual você deseja conceder acesso aos 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.

  5. Se estiver concedendo permissões aos usuários de uma conta que você não controla e os usuários assumirem esse perfil 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 sts:ExternalID correto. Para mais informações, consulte Como usar um ID externo ao conceder acesso aos seus recursos da AWS a terceiros.

    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 AWS Management Console no AWS Security Blog.

  6. 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 Uso de autenticação multifator (MFA) na AWS

  7. Escolha Next (Próximo).

  8. 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 mais informações, consulte Criação de políticas do IAM. 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.

  9. (Opcional) Defina um limite de permissões. 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.

  10. Escolha Next (Próximo).

  11. 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. Eles não são diferenciados por letras maiúsculas e minúsculas. Por exemplo, não é possível criar funções chamadas PRODROLE e prodrole. Como outros recursos da AWS podem fazer referência à função, não é possível editar o nome da função depois de ela ser criada.

  12. (Opcional) Em Description (Descrição), insira uma descrição para o novo perfil.

  13. 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 o perfil.

  14. (Opcional) Adicione metadados à função anexando tags como pares de chave-valor. Para obter mais informações sobre como usar etiquetas no IAM, consulte Recursos de etiquetas do IAM.

  15. Revise a função e escolha Create role.

    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 Concessão de permissões a um usuário para alternar funções.

Criação de uma função do IAM (AWS CLI)

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 para sua função.

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

  1. Criar uma função: aws iam create-role

  2. Anexar uma política de permissões gerenciada à função: aws iam attach-role-policy

    ou

    Criar uma política de permissões em linha para a função: aws iam put-role-policy

  3. (Opcional) Adicione atributos personalizados à função anexando tags: aws iam tag-role

    Para mais informações, consulte Gerenciar etiquetas em funções do IAM (AWS CLI ou API da AWS).

  4. (Opcional) Definir o limite de permissões para a função: aws iam put-role-permissions-boundary

    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.

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 Uso de autenticação multifator (MFA) na AWS.

{ "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.

{ "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 em 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:role/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 Concessão de permissões a um usuário para alternar funções.

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 mais informações, consulte Alternância para uma função do IAM (AWS CLI).

Criação de uma função do IAM (API da AWS)

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 para sua função.

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

  1. Criar uma função: CreateRole

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

  2. Anexar uma política de permissões gerenciada à função: AttachRolePolicy

    ou

    Criar uma política de permissões embutida para a função: PutRolePolicy

    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 Concessão de permissões a um usuário para alternar funções.

  3. (Opcional) Adicione atributos personalizados ao usuário anexando tags: TagRole

    Para mais informações, consulte Gerenciamento de etiquetas em usuários do IAM (AWS CLI ou API da AWS).

  4. (Opcional) Definir o limite de permissões para a função: PutRolePermissionsBoundary

    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 Alternância para uma função do IAM (API da AWS).

Criação de uma função do IAM (AWS CloudFormation)

Para obter informações sobre como criar uma função do IAM no AWS CloudFormation, consulte a referência de recursos e propriedades e exemplos 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 no Guia do usuário do AWS CloudFormation.