AWS Identity and Access Management
Guia do usuário

Criação de 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 compatíveis 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.

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

Você deve configurar permissões para que uma entidade do IAM (por exemplo, um usuário, grupo ou função) crie ou edite uma função de 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 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 vinculada ao 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

Adicione a seguinte instrução à política de permissões para a entidade do IAM que precisa criar uma função de serviço. Essa instrução permite que você crie uma função de serviço para qualquer serviço e, em seguida, anexe políticas gerenciadas ou em linha a essa função.

{ "Effect": "Allow", "Action": [ "iam:AttachRolePolicy", "iam:CreateRole", "iam:PutRolePolicy" ], "Resource": "*" }

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

Adicione a seguinte política à entidade do IAM que precisa criar 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

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

{ "Effect": "Allow", "Action": "iam:DeleteRole", "Resource": "*" }

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

Você pode usar o Console de gerenciamento da AWS 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 serviço da AWS (console)

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

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

  3. Em Selecionar tipo de entidade confiável, escolha Serviço da AWS.

  4. Escolha o serviço que você deseja que assuma essa função.

  5. Escolha o caso de uso para o seu serviço. Se o serviço especificado tem apenas um caso de uso, ele é selecionado para você. Casos de uso são definidos pelo serviço para incluir a política de confiança exigida pelo serviço. Então, escolha Próximo: Permissões.

  6. Se possível, selecione a política a ser usada para a política de permissões ou escolha 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 (console). 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 o serviço tenha.

    Dependendo do caso de uso que você selecionou, o serviço pode permitir que você realize uma das seguintes ações:

    • Nada, porque o serviço define as permissões para a função

    • Permitir que você escolha um conjunto limitado de permissões

    • Permitir que você escolha a partir de quaisquer 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

  7. (Opcional) Defina um limite de permissões. Esse é um recurso avançado que está disponível para funções de serviço, mas não para funções vinculadas ao serviço.

    Abra a seção Set permissions boundary (Definir limite de permissões) e selecione Use a permissions boundary to control the maximum role permissions (Usar um limite de permissões para controlar as permissões máximas de função). O IAM inclui uma lista das políticas gerenciadas pela AWS e gerenciadas pelo cliente em sua conta. Selecione a política a ser usada para o limite de permissões ou escolha 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 (console). Depois de criar a política, feche essa guia e retorne à guia original para selecionar a política a ser usada para o limite de permissões.

  8. Escolha Next: Tags (Próximo: tags).

  9. (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 entidades do IAM.

  10. Selecione Next: Review.

  11. Para Role name (Nome da função), o grau de personalização do nome da função é 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ê digite um sufixo opcional. Alguns serviços permitem que você especifique todo o nome de sua função.

    Se possível, digite 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 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 Descrição da função, digite uma descrição para a nova função.

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

Criação de 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 estiver trabalhando for o Amazon EC2, você também deverá criar um perfil da 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. 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 entidades 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 for usar a função com o Amazon EC2 ou outro serviço da AWS que use o Amazon EC2, você deverá armazenar a função em um perfil da instância. Um perfil da instância é um contêiner para uma função que pode ser anexada 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 Uso de perfis de instância. Para obter informações sobre como ativar uma instância do EC2 com uma função, consulte Controle de 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. Essa política de confiança de exemplo permite que o serviço do 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 do 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://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.

Criação de 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 estiver trabalhando for o Amazon EC2, você também deverá criar um perfil da 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 obter mais informações, consulte Gerenciar tags em entidades 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 for usar a função com o Amazon EC2 ou outro serviço da AWS que use o Amazon EC2, você deverá armazenar a função em um perfil da 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 Uso de perfis de instância. Para obter informações sobre como ativar uma instância do Amazon EC2 com uma função, consulte Controle de 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