Conceder permissões autogerenciadas - AWS CloudFormation

Conceder permissões autogerenciadas

Para configurar as permissões necessárias para criar um conjunto de pilhas gerenciadas pelo serviço, consulte Habilitar o acesso confiável com o AWS Organizations.

Para criar um conjunto de pilhas com permissões autogerenciadas, você precisa estabelecer uma relação de confiança entre as contas de administrador e de destino criando funções do IAM em cada conta.

  1. Determine qual conta da AWS é a conta do administrador.

    Os conjuntos de pilha serão criados nessa conta de administrador. Uma conta de destino é a conta na qual você cria as pilhas individuais que pertencem a um conjunto de pilhas.

  2. Determine como você deseja estruturar as permissões para os conjuntos de pilha.

    A configuração de permissões mais simples (e mais permissiva) é oferecer a todos os usuários e grupos na conta de administrador a capacidade de criar e atualizar todos os conjuntos de pilhas gerenciados por meio daquela conta. Se precisar de um controle mais refinado, defina permissões para especificar:

    • Quais usuários e grupos podem executar operações do conjunto de pilhas em quais contas de destino.

    • Quais recursos os usuários e grupos podem incluir em seus conjuntos de pilhas.

    • Quais operações do conjunto de pilhas os usuários e grupos específicos podem realizar.

  3. Crie as funções de serviço do IAM necessárias nas contas de administrador e de destino para definir as permissões desejadas.

    Importante

    A função na sua conta de administrador deve se chamar AWSCloudFormationStackSetAdministrationRole. A função em cada uma das suas contas de destino deve se chamar AWSCloudFormationStackSetExecutionRole.

Definir permissões básicas para operações de conjuntos de pilhas

A configuração de permissões mais simples (e mais permissiva) é oferecer a todos os usuários e grupos na conta de administrador a capacidade de criar e atualizar todos os conjuntos de pilhas gerenciados por meio daquela conta. Para fazer isso, crie funções de serviço do IAM para as contas de administrador e de destino. Qualquer pessoa com permissões para a conta de administrador tem permissões para criar, atualizar ou excluir qualquer pilha em qualquer uma das contas de destino.

A conta de administrador e as contas de destino devem ter funções de serviço configuradas para criar uma relação de confiança entre as contas e conceder às contas de destino a permissão para criar e gerenciar os recursos descritos em seu modelo.

Se você estrutura as permissões dessa forma, os usuários não passam uma função de administrador ao criar ou atualizar conjuntos de pilhas.


                     Configure uma relação de confiança entre a conta do administrador e as contas de destino. Assim, qualquer usuário na conta de administrador poderá criar um conjunto de pilhas.

Definir permissões para todos os usuários da conta de administrador para executar operações do conjunto de pilhas em todas as contas de destino

  1. Na conta do administrador, crie uma função do IAM denominada AWSCloudFormationStackSetAdministrationRole. Essa função deve ter esse nome exato. Você pode fazer isso criando uma pilha a partir do modelo do AWS CloudFormation a seguir, que está disponível online em https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/AWSCloudFormationStackSetAdministrationRole.yml. A função criada por este modelo habilita a seguinte política na conta do administrador.

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "sts:AssumeRole" ], "Resource": [ "arn:aws:iam::*:role/AWSCloudFormationStackSetExecutionRole" ], "Effect": "Allow" } ] }

    A seguinte relação de confiança é criada pelo modelo anterior.

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

    Esteja ciente de que, para implantar instâncias de pilha em uma conta de destino que reside em uma região que está desabilitada por padrão, você também precisará incluir o principal de serviço regional para essa região. Cada região desativada por padrão terá seu próprio principal de serviço regional.

    Para obter mais informações sobre endpoints regionais, incluindo uma lista de endpoints, consulte Endpoints regionais no Guia de referência geral da AWS .

    O exemplo a seguir inclui o principal de serviço regional (cloudformation.ap-east-1.amazonaws.com) para a região Ásia-Pacífico (Hong Kong), uma região que está desabilitada por padrão.

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

    Para obter mais informações, consulte Pré-requisitos para operações de conjunto de pilha.

  2. Em cada conta de destino, crie uma função de serviço chamada AWSCloudFormationStackSetExecutionRole que confie na conta do administrador. Essa função deve ter esse nome exato. Você pode fazer isso criando uma pilha a partir do modelo do AWS CloudFormation a seguir, que está disponível online em https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/AWSCloudFormationStackSetExecutionRole.yml. Ao usar este modelo, você será solicitado a fornecer o nome da conta do administrador com a qual sua conta de destino deve estabelecer uma relação de confiança.

    Importante

    Lembre-se de que este modelo concede acesso de administrador. Depois de usar o modelo para criar uma função de execução da conta de destino, você deve definir o escopo das permissões na declaração de política para os tipos de recursos que você criará usando o StackSets.

    A função de serviço da conta de destino requer permissões para executar qualquer operação que está especificada no modelo do AWS CloudFormation. Por exemplo, se o seu modelo estiver criando um bucket do S3, então você precisará de permissões para criar novos objetos para o S3. Sua conta de destino sempre precisa de permissão total no AWS CloudFormation, o que inclui as permissões para criar, atualizar, excluir e descrever pilhas. A função criada por este modelo habilita a seguinte política em uma conta de destino.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "*", "Resource": "*" } ] }

    Você deve adicionar o S3, a ação de serviço Amazon SNS e os recursos à instrução de política AWSCloudFormationStackSetExecutionRole para cada conta de destino para que o StackSets funcione. As pilhas gerenciadas por serviço cuidam automaticamente das permissões necessárias para acessar o tópico Amazon SNS na conta de serviço CloudFormation. O StackSets usa essas permissões para notificar o estado da instância da pilha nas contas de destino e na conta do administrador.

    Para criar pilhas em contas de destino que usam recursos de serviços que não sejam o CloudFormation, você deve adicionar essas ações de serviço e recursos à instrução de política AWSCloudFormationStackSetExecutionRole para cada conta de destino. O exemplo a seguir mostra uma instrução de política com as permissões necessárias para StackSets.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:*", "s3:*", "sns:*" ], "Resource": "*" } ] }

    A seguinte relação de confiança é criada pelo modelo. O ID da conta do administrador é mostrado como admin_account_id.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::admin_account_id:root" }, "Action": "sts:AssumeRole" } ] }

    Você pode configurar a relação de confiança de uma função de execução da conta de destino existente para confiar em uma função específica na conta do administrador. Se você excluir a função na conta de administrador e criar uma nova para substituí-la, deve configurar suas relações de confiança da conta de destino com a função da nova conta de administrador, representada por admin_account_id no exemplo anterior.

Definir opções de permissões avançadas para operações de conjuntos de pilhas

Se precisar de um controle mais refinado sobre os conjuntos de pilhas que os usuários e os grupos criam por meio de uma única conta de administrador, use funções do IAM para especificar:

  • Quais usuários e grupos podem executar operações do conjunto de pilhas em quais contas de destino.

  • Quais recursos os usuários e grupos podem incluir em seus conjuntos de pilhas.

  • Quais operações do conjunto de pilhas os usuários e grupos específicos podem realizar.

Definir permissões para controlar o acesso à conta de destino

Use as funções de administrador personalizadas para controlar quais usuários e grupos podem executar operações de conjunto de pilhas em que contas de destino. Você pode controlar quais usuários da conta de administrador podem executar as operações de conjunto de pilhas em que contas de destino. Para fazer isso, crie uma relação de confiança entre cada conta de destino e uma função de administração personalizada específica, em vez de criar a função de serviço AWSCloudFormationStackSetAdministrationRole na própria conta de administrador. Em seguida, habilite usuários e grupos específicos para usar a função de administração personalizada apropriada ao executar operações de conjunto de pilhas em uma determinada conta de destino.

Por exemplo, você pode criar uma função A e uma função B na sua conta de administrador. Você pode conceder à função A permissões para acessar as contas de destino de 1 a 8. Você pode conceder à função B permissões para acessar as contas de destino de 9 a 16.


                        Configure uma relação de confiança entre a função do administrador personalizada e as contas de destino. Em seguida, o usuário passará essa função ao criar o conjunto de pilhas.

A configuração das permissões necessárias envolve a definição de uma função de administrador personalizada, a criação de uma função de serviço para a conta de destino e a concessão da permissão aos usuários para passar a função de administrador personalizada ao executar as operações de conjunto de pilhas.

Em geral, uma vez que você já tenha as permissões necessárias, é assim que isso funciona: ao criar um conjunto de pilhas, o usuário deve especificar um administrador personalizado. O usuário deve ter a permissão para passar a função para o AWS CloudFormation. Além disso, a função de administrador personalizada deve ter uma relação de confiança com as contas de destino especificadas para o conjunto de pilhas. O AWS CloudFormation cria o conjunto de pilhas e associa a ele essa função de administrador personalizada. Ao atualizar um conjunto de pilhas, o usuário deve especificar explicitamente uma função de administrador personalizada, mesmo que seja a mesma função de administrador personalizada usada com esse conjunto de pilha anteriormente. O AWS CloudFormation usa essa função para atualizar a pilha, sujeita aos requisitos acima.

Definir permissões para as quais usuários e grupos podem executar operações do conjunto de pilhas em contas de destino específicas

  1. Para cada conjunto de pilhas, crie uma função de administrador personalizada com permissões para assumir a função de serviço AWSCloudFormationStackSetExecutionRole nas contas de destino.

    Crie uma função de serviço doIAM com um nome personalizado usando a política de permissões a seguir:

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "sts:AssumeRole" ], "Resource": [ "arn:aws:iam::target_account_id:role/AWSCloudFormationStackSetExecutionRole" ], "Effect": "Allow" } ] }

    Ou, se você deseja especificar todas as contas de destino, use a política de permissões a seguir:

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "sts:AssumeRole" ], "Resource": [ "arn:aws:iam::*:role/AWSCloudFormationStackSetExecutionRole" ], "Effect": "Allow" } ] }

    Você deve fornecer a política de confiança a seguir ao criar a função para definir a relação de confiança:

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

    Esteja ciente de que, para implantar instâncias de pilha em uma conta de destino que reside em uma região que está desabilitada por padrão, você também precisará incluir o principal de serviço regional para essa região. Cada região desativada por padrão terá seu próprio principal de serviço regional.

    Para obter mais informações sobre endpoints regionais, incluindo uma lista de endpoints, consulte Endpoints regionais no Guia de referência geral da AWS .

    O exemplo a seguir inclui o principal de serviço regional (cloudformation.ap-east-1.amazonaws.com) para a região Ásia-Pacífico (Hong Kong), uma região que está desabilitada por padrão.

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

    Para obter mais informações, consulte Pré-requisitos para operações de conjunto de pilha.

  2. Em cada conta de destino, crie uma função de serviço chamada AWSCloudFormationStackSetExecutionRole que confie na função de administrador personalizada que você deseja usar com esta conta.

    Importante

    Você deve definir o escopo das permissões na declaração de política para os tipos de recursos que está criando com o StackSets.

    A função de serviço da conta de destino requer permissões para executar qualquer operação que está especificada no modelo do AWS CloudFormation. Por exemplo, se o seu modelo estiver criando um bucket do S3, você precisará de permissões para criar novos objetos no S3. Sua conta de destino sempre precisa de permissão total no AWS CloudFormation, o que inclui as permissões para criar, atualizar, excluir e descrever pilhas.

    O exemplo a seguir mostra uma declaração de política com as permissões mínimas para que o StackSets funcione. Para criar pilhas em contas de destino que usam recursos de serviços que não sejam o AWS CloudFormation, você deve adicionar essas ações de serviço e recursos às permissões da declaração de política AWSCloudFormationStackSetExecutionRole para cada conta de destino.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:*", "s3:*", "sns:*" ], "Resource": "*" } ] }

    Você deve fornecer a política de confiança a seguir ao criar a função para definir a relação de confiança:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::admin_account_id:role/customized_admin_role" }, "Action": "sts:AssumeRole" } ] }
  3. Permita que os usuários passem a função de administrador personalizada ao executar operações de conjunto de pilhas.

    Anexe uma política de permissões do IAM para usuários ou grupos que permita que eles passem a função de administrador personalizada apropriada ao criar ou atualizar conjuntos de pilhas específicas. Para obter mais informações, consulte Conceder a um usuário permissões para transmitir uma função a um produto da AWS. No exemplo abaixo, customized_admin_role refere-se à função do administrador que o usuário precisa passar.

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "iam:GetRole", "iam:PassRole" ], "Resource": "arn:aws:iam::*:role/customized_admin_role" }] }

Definir permissões para controlar a inclusão de recursos de pilha

Use funções de execução personalizadas para controlar quais recursos de pilha os usuários e grupos podem incluir em seus conjuntos de pilhas. Por exemplo, é possível configurar um grupo que só pode incluir recursos relacionados ao Amazon S3 nos conjuntos de pilhas criados, enquanto outra equipe só pode incluir recursos do DynamoDB. Para fazer isso, crie uma relação de confiança entre a função de administrador personalizada para cada grupo e uma função de execução personalizada para cada conjunto de recursos. A função de execução personalizada define quais recursos de pilha podem ser inclusos no conjuntos de pilhas. A função de administrador personalizada reside na conta de administrador, enquanto a função de execução personalizada reside em cada conta de destino onde deseja criar conjuntos de pilhas usando recursos definidos. Em seguida, habilite usuários e grupos específicos para usar a função de administração personalizada apropriada ao executar operações de conjunto de pilhas.

Por exemplo, você pode criar funções de administrador personalizadas A, B e C na conta do administrador. Usuários e grupos com permissão para usar Função A podem criar conjuntos de pilhas que contém os recursos de pilha especificamente listados na função de execução personalizada X, mas não aqueles nas funções Y ou Z, ou recursos não incluídos em qualquer função de execução.


                        Defina uma relação de confiança entre a função do administrador personalizada e uma função de execução personalizada nas contas de destino. Em seguida, o usuário envia essas funções ao criar o conjunto de pilhas.

Ao atualizar um conjunto de pilhas, o usuário deve especificar explicitamente uma função de administrador personalizada, mesmo que seja a mesma função de administrador personalizada usada com esse conjunto de pilhas anteriormente. O AWS CloudFormation executa a atualização usando a função de administrador personalizada especificada, desde que o usuário tenha permissões para executar operações nesse conjunto de pilhas.

Da mesma forma, o usuário também pode especificar uma função de execução personalizada. Se for especificada uma função de execução personalizada, o AWS CloudFormation usará essa função para atualizar a pilha, de acordo com os requisitos acima. Se o usuário não especificar uma função de execução personalizada, o AWS CloudFormation executará a atualização usando a função de execução personalizada anteriormente associada ao conjunto de pilhas, desde que o usuário tenha as permissões para executar as operações no conjunto de pilhas.

Definir permissões para quais recursos os usuários e grupos podem incluir em conjunto de pilhas específicos

  1. Nas contas de destino em que deseja criar os conjuntos de pilhas, crie uma função de execução personalizada que concede permissões aos serviços e recursos que deseja que os usuários e grupos possam incluir nos conjuntos de pilhas.

    O exemplo a seguir fornece as permissões mínimas para conjuntos de pilhas, junto com a permissão para criar tabelas do DynamoDB.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:*", "s3:*", "sns:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "dynamoDb:createTable" ], "Resource": "*" } ] }

    Você deve fornecer a política de confiança a seguir ao criar a função para definir a relação de confiança:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::admin_account_id:role/customized_admin_role" }, "Action": "sts:AssumeRole" } ] }
  2. Crie uma função de administrador personalizada na sua conta de administrador, conforme detalhado em Definir opções de permissões avançadas para operações de conjuntos de pilhas Definir permissões para controlar o acesso à conta de destino. Inclua uma relação de confiança entre a função de administrador personalizada e as funções de execução personalizadas que deseja usar.

    O exemplo a seguir inclui uma política sts::AssumeRole para a AWSCloudFormationStackSetExecutionRole definida para a conta de destino, bem como uma função de execução personalizada.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1487980684000", "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Resource": [ "arn:aws:iam::*:role/AWSCloudFormationStackSetExecutionRole", "arn:aws:iam::*:role/custom_execution_role" ] } ] }

Definir permissões para operações específicas de conjuntos de pilhas

Além disso, você pode definir permissões para quais usuários e grupos podem executar operações específicas do conjunto de pilhas, como criação, atualização ou exclusão de conjuntos de pilhas ou instâncias de pilha. Para obter mais informações, consulte Ações, recursos e chaves de condição do AWS CloudFormation no Guia do usuário do IAM.