Criar uma função para delegar permissões a um serviço da AWS - AWS Identity and Access Management

Criar uma função para delegar permissões a um serviço da AWS

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 é uma função que um serviço assume para realizar ações em seu nome. Quando uma função atende a uma finalidade especial de um serviço, ela é categorizada como uma função de serviço para instâncias do EC2 (por exemplo) ou uma função vinculada ao serviço. 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 Serviços da AWS que funcionam com o IAM. 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.

Permissões de função de serviço

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 da função vinculada 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.

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

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

Criar uma função para um serviço da AWS (console)

Você pode usar o AWS Management Console para criar uma função 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 para o seu serviço para ver qual caso de uso escolher. Você pode saber como atribuir as políticas de confiança e as permissões necessárias à função para que o serviço possa assumir a função 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.

Para criar uma função para um AWS service (Serviço da AWS) (console do IAM)
  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 do IAM, escolha Perfis e, em seguida, Criar perfil.

  3. Em Tipo de Entidade Confiável, escolha AWS service (Serviço da AWS).

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

  5. Escolha Próximo.

  6. 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 política de permissão alguma, crie políticas após a criação do perfil e, em seguida, anexe as políticas ao perfil.

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

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

  8. Escolha Próximo.

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

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

  11. (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.

  12. (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 Marcar recursos do IAM no Guia do usuário do IAM.

  13. Reveja a função e escolha Create role (Criar função).

Criar uma função para um serviço (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. 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 para sua função.

Para criar uma função para um serviço da AWS na AWS CLI
  1. O seguinte comando create-role 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

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

    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

    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

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

    Para ter 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.

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 de instância pode conter somente uma função do e esse limite não pode ser aumentado. Se você criar a função usando o AWS Management Console, 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. Para obter informações sobre como executar uma instância do EC2 com uma função, consulte Controlar o acesso aos recursos do Amazon EC2 no Guia do usuário do Amazon EC2 para instâncias do Linux.

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

  2. Adicionar a função ao perfil da instância: aws iam add-role-to-instance-profile

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.

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.

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

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

Para criar uma função para um serviço da AWS (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 em linha para a função: PutRolePolicy

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

    Para ter 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.

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 AWS Management Console, 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. Para obter informações sobre como executar uma instância do Amazon EC2 com uma função, consulte Controlar o acesso aos recursos do Amazon EC2 no Guia do usuário do Amazon EC2 para instâncias do Linux.

Para criar um perfil de instância e armazenar a função nele (API da AWS)
  1. Criar um perfil da instância: CreateInstanceProfile

  2. Adicionar a função ao perfil da instância: AddRoleToInstanceProfile