View a markdown version of this page

Funções de serviço para CloudFormation - AWS Orientação prescritiva

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Funções de serviço para CloudFormation

Uma função de serviço é uma função AWS Identity and Access Management (IAM) que permite AWS CloudFormation criar, atualizar ou excluir recursos da pilha. Se você não fornecer uma função de serviço, CloudFormation use as credenciais do diretor do IAM para realizar as operações de pilha. Se você criar uma função de serviço CloudFormation e especificar a função de serviço durante a criação da pilha, CloudFormation usará as credenciais da função de serviço para realizar as operações, em vez das credenciais do diretor do IAM.

Ao usar uma função de serviço, a política baseada em identidade anexada ao diretor do IAM não exige permissões para provisionar todos os AWS recursos definidos no CloudFormation modelo. Se você não estiver pronto para provisionar AWS recursos para operações comerciais críticas por meio de um pipeline de desenvolvimento (uma prática AWS recomendada), o uso de uma função de serviço pode adicionar uma camada extra de proteção para o gerenciamento de recursos AWS. As vantagens dessa abordagem são:

  • Os diretores do IAM em sua organização seguem um modelo de privilégios mínimos que os impede de criar ou alterar AWS manualmente recursos em seu ambiente.

  • Para criar, atualizar ou excluir AWS recursos, os diretores do IAM devem usar CloudFormation. Isso padroniza o provisionamento de recursos por meio da infraestrutura como código.

Por exemplo, para criar uma pilha que contenha uma instância do Amazon Elastic Compute Cloud (Amazon EC2), a entidade principal do IAM precisará ter permissões para criar instâncias do EC2 por meio de sua política baseada em identidade. Em vez disso, CloudFormation pode assumir uma função de serviço que tenha permissões para criar instâncias do EC2 em nome do diretor. Com essa abordagem, a entidade principal do IAM pode criar a pilha, e você não precisa conceder à entidade principal do IAM permissões excessivamente amplas para um serviço ao qual ela não deverá ter acesso regular.

Para usar uma função de serviço para criar CloudFormation pilhas, os diretores do IAM devem ter permissões para transmitir a função de serviço CloudFormation, e a política de confiança da função de serviço deve permitir assumir CloudFormation a função.

Implementando privilégios mínimos para funções CloudFormation de serviço

Em um perfil de serviço, você define uma política de permissões que especifica explicitamente quais ações o serviço pode realizar. Elas podem não ser as mesmas ações que uma entidade principal do IAM pode realizar. Recomendamos que você trabalhe retroativamente a partir de seus CloudFormation modelos para criar uma função de serviço que siga o princípio do privilégio mínimo.

Definir o escopo adequado da política baseada em identidade de uma entidade principal do IAM para passar somente perfis de serviço específicos e definir o escopo da política de confiança de um perfil de serviço para permitir que somente entidades principais específicas assumam o perfil ajuda a evitar possíveis escalonamentos de privilégios por meio de perfis de serviço.

Configuração de perfis de serviço

nota

Os perfis de serviço são configurados no IAM. Para criar um perfil de serviço, você deve ter as permissões. Um diretor do IAM com permissões para criar uma função e anexar qualquer política pode escalar suas próprias permissões. AWS recomenda criar uma função de serviço AWS service (Serviço da AWS) para cada caso de uso. Depois de criar funções CloudFormation de serviço para seus casos de uso, você pode permitir que os usuários passem somente a função de serviço aprovada para CloudFormation. Para exemplos de políticas baseadas em identidade que permitem aos usuários criar perfis de serviço, consulte Permissões de perfil de serviço na documentação do IAM.

Para obter instruções sobre como criar funções de serviço, consulte Criação de uma função para delegar permissões a um AWS service (Serviço da AWS). Especifique o CloudFormation (cloudformation.amazonaws.com) como o serviço que pode assumir a função. Isso impede que uma entidade principal do IAM assuma a função sozinha ou a passe para outros serviços. Quando você configura um perfil de serviço, os elementos Effect, Action e Resource são obrigatórios. Opcionalmente, você também pode definir um elemento Condition.

Para obter mais informações sobre esses elementos, consulte Referência de elementos de política JSON do IAM. Para obter uma lista completa de ações, recursos e chaves de condição, consulte Actions, resources, and condition keys for Identity And Access Management.

Conceder permissões principais ao IAM para usar uma função de CloudFormation serviço

Para provisionar recursos CloudFormation usando a função CloudFormation de serviço, o diretor do IAM deve ter permissões para transmitir a função de serviço. Você pode limitar as permissões da entidade principal do IAM para passar somente determinados perfis especificando o ARN do perfil nas permissões dela. Para obter mais informações, consulte Conceder permissões a um usuário para passar um perfil para um AWS service (Serviço da AWS) na documentação do IAM.

A instrução de política baseada em identidade do IAM a seguir permite que a entidade principal passe perfis, incluindo perfis de serviço, que estão no caminho cfnroles. A entidade principal não pode passar perfis que estejam em um caminho diferente.

{ "Sid": "AllowPassingAppRoles", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::<account ID>:role/cfnroles/*" }

Outra abordagem para limitar os diretores a determinadas funções é usar um prefixo para nomes de funções de CloudFormation serviço. A instrução de política a seguir permite que as entidades principais do IAM passem somente perfis que tenham um prefixo CFN-.

{ "Sid": "AllowPassingAppRoles", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::<account ID>:role/CFN-*" }

Além das instruções de política anteriores, você pode usar a chave de condição cloudformation:RoleARN para fornecer mais controles refinados na política baseada em identidade, para obter acesso com privilégio mínimo. A declaração de política a seguir permite que o diretor do IAM crie, atualize e exclua pilhas somente se elas passarem por uma função de CloudFormation serviço específica. Como variação, você pode definir a ARNs de mais de uma função CloudFormation de serviço na chave de condição.

{ "Sid": "RestrictCloudFormationAccess", "Effect": "Allow", "Action": [ "cloudformation:CreateStack", "cloudformation:DeleteStack", "cloudformation:UpdateStack" ], "Resource": "arn:aws:iam::<account ID>:role/CFN-*", "Condition": { "StringEquals": { "cloudformation:RoleArn": [ "<ARN of the specific CloudFormation service role>" ] } } }

Além disso, você também pode usar a chave de cloudformation:RoleARN condição para impedir que um diretor do IAM transmita uma função de CloudFormation serviço altamente privilegiada para operações de pilha. A única alteração necessária é no operador condicional, de StringEquals para StringNotEquals.

{ "Sid": "RestrictCloudFormationAccess", "Effect": "Allow", "Action": [ "cloudformation:CreateStack", "cloudformation:DeleteStack", "cloudformation:UpdateStack" ], "Resource": "arn:aws:iam::<account ID>:role/CFN-*", "Condition": { "StringNotEquals": { "cloudformation:RoleArn": [ "<ARN of a privilege CloudFormation service role>" ] } } }

Configurando uma política de confiança para a função CloudFormation de serviço

Uma política de confiança de um perfil é uma política baseada em recurso necessária anexada a um perfil do IAM. A política de confiança define quais entidades principais do IAM podem assumir o perfil. Em uma política de confiança, você pode especificar usuários, perfis, contas ou serviços como entidades principais. Para evitar que os diretores do IAM passem funções de serviço CloudFormation para outros serviços, você pode especificar CloudFormation como principal na política de confiança da função.

A política de confiança a seguir permite que somente o CloudFormation serviço assuma a função de serviço.

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

Associação de um perfil de serviço a uma pilha

Depois que um perfil de serviço for criado, você poderá associá-lo a uma pilha ao criá-la. Para obter mais informações, consulte Configurar opções de pilha. Antes de especificar um perfil de serviço, certifique-se de que as entidades principais do IAM tenham as permissões para passá-lo. Para obter mais informações, consulte Conceder permissões principais ao IAM para usar uma função de CloudFormation serviço.