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

Criar 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 relacionamentos 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 o relacionamento 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 obter 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.

Criar 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 uma descrição de alto nível das etapas para configurar e usar uma função que permite 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 da IAM em https://console.aws.amazon.com/iam/.

  2. No painel de navegação do console, selecione Funções e, em seguida, Criar função.

  3. Escolha o tipo de função Outra conta da AWS.

  4. Para ID da conta, especifique o ID da conta da AWS à 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. 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 essa função de forma 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 obter mais informações, consulte Como usar um ID externo ao conceder acesso aos seus recursos da AWS a terceiros.

    Importante

    Escolher essa opção restringe o acesso à função apenas por meio da AWS CLI, 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 Como habilitar o acesso entre contas ao AWS Management Console no Blog de segurança da AWS.

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

  7. Escolha Próximo: Permissões.

  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 obter mais informações, consulte a etapa 4 no procedimento Criar 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: Tags (Próximo: tags).

  11. (Opcional) Adicione metadados à função anexando tags como pares de chave–valor. Para obter mais informações sobre como usar tags no IAM, consulte Marcar recursos do IAM.

  12. Selecione Next: Review.

  13. Em Role name, digite um nome para a 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.

  14. (Opcional) Em Descrição da função, digite uma descrição para a nova função.

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

Criar 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 obter mais informações, consulte Gerenciar tags 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 Usar 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 usuário específico do IAM, o ARN será transformado em um ID de entidade principal 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 assuma a função para executar 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 Conceder 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 obter mais informações, consulte Alternar para uma função do IAM (AWS CLI).

Criar 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 Conceder permissões a um usuário para alternar funções.

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

    Para obter mais informações, consulte Gerenciar tags 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 Alternar para uma função do IAM (API da AWS).

Criar uma função do IAM (AWS CloudFormation)

Para obter informações sobre a criação de uma função do IAM no AWS CloudFormation, consulte a resource and property reference (referência de propriedades e recursos) e examples (exemplos) no AWS CloudFormation User Guide (Guia do usuário).

Para obter mais informações sobre modelos do IAM no AWS CloudFormation, consulte AWS Identity and Access Management template snippets (trechos de modelo) no AWS CloudFormation User Guide (Guia do usuário).