Exemplos de políticas baseadas em identidade do IAM para o CloudFormation
Por padrão, os usuários e os perfis não têm permissão para criar nem modificar recursos do CloudFormation. Eles também não podem executar tarefas usando o AWS Management Console, a AWS Command Line Interface (AWS CLI) ou a API da AWS. Para conceder aos usuários permissões para executar ações nos recursos que eles precisam, um administrador do IAM pode criar políticas do IAM. O administrador pode então adicionar as políticas do IAM aos perfis e os usuários podem assumir os perfis. Para obter mais informações, consulte Definir políticas baseadas em identidade do IAM para o CloudFormation.
Os exemplos a seguir mostram as instruções de política que você pode usar para conceder ou negar permissões para usar uma ou mais ações do CloudFormation.
Tópicos
Exigir um URL de modelo específico
O exemplo de política a seguir concede aos usuários permissões para usar apenas o URL do modelo
para criar ou atualizar uma pilha.https://s3.amazonaws.com/amzn-s3-demo-bucket/test.template
{ "Version":"2012-10-17", "Statement":[ { "Effect" : "Allow", "Action" : [ "cloudformation:CreateStack", "cloudformation:UpdateStack" ], "Resource" : "*", "Condition" : { "StringEquals" : { "cloudformation:TemplateUrl" : [ "
https://s3.amazonaws.com/amzn-s3-demo-bucket/test.template"
] } } } ] }
Negar todas as operações de importação do CloudFormation
O exemplo de política a seguir concede permissões para realizar todas as operações do CloudFormation, exceto as operações de importação.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAllStackOperations", "Effect": "Allow", "Action": "cloudformation:*", "Resource": "*" }, { "Sid": "DenyImport", "Effect": "Deny", "Action": "cloudformation:*", "Resource": "*", "Condition": { "ForAnyValue:StringLike": { "cloudformation:ImportResourceTypes": [ "*" ] } } } ] }
Permitir operações de importação para tipos de recursos específicos
O exemplo de política a seguir concede permissões para todas as operações de pilha, e também para operações de importação apenas nos recursos especificados (neste exemplo, AWS::S3::Bucket
).
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowImport", "Effect": "Allow", "Action": "cloudformation:*", "Resource": "*" "Condition": { "ForAllValues:StringEqualsIgnoreCase": { "cloudformation:ImportResourceTypes": [ "AWS::S3::Bucket" ] } } } ] }
Negar recursos do IAM em modelos de pilha
O exemplo de política a seguir permite que os usuários criem pilhas, mas negará as solicitações se o modelo da pilha incluir algum recurso do serviço IAM. A política também requer que os usuários especifiquem o parâmetro ResourceTypes
, que está disponível apenas para solicitações de AWS CLI e de API. Essa política usa instruções de negação explícita de forma que se qualquer outra política conceder permissões adicionais, essa política sempre permanecerá em vigor (uma instrução de negação explícita sempre substitui uma instrução de permissão explícita).
{ "Version":"2012-10-17", "Statement":[ { "Effect" : "Allow", "Action" : [ "cloudformation:CreateStack" ], "Resource" : "*" }, { "Effect" : "Deny", "Action" : [ "cloudformation:CreateStack" ], "Resource" : "*", "Condition" : { "ForAnyValue:StringLikeIfExists" : { "cloudformation:ResourceTypes" : [ "AWS::IAM::*" ] } } }, { "Effect": "Deny", "Action" : [ "cloudformation:CreateStack" ], "Resource": "*", "Condition": { "Null": { "cloudformation:ResourceTypes": "true" } } } ] }
Permitir a criação de pilhas com tipos de recursos específicos
A política a seguir é semelhante ao exemplo anterior. A política concede aos usuários permissões para criar uma pilha, a menos que o modelo da pilha inclua algum recurso do serviço IAM. Ela também requer que os usuários especifiquem o parâmetro ResourceTypes
, que está disponível apenas para solicitações de AWS CLI e de API. Essa política é mais simples, mas não usa instruções de negação explícita. Outras políticas, que concedem permissões adicionais, podem substituir essa política.
{ "Version":"2012-10-17", "Statement":[ { "Effect" : "Allow", "Action" : [ "cloudformation:CreateStack" ], "Resource" : "*", "Condition" : { "ForAllValues:StringNotLikeIfExists" : { "cloudformation:ResourceTypes" : [ "AWS::IAM::*" ] }, "Null":{ "cloudformation:ResourceTypes": "false" } } } ] }
Controlar o acesso com base nas ações de API de mutação de recurso
O exemplo de política a seguir concede permissões para filtrar o acesso pelo nome de uma ação de API de mutação de recurso. Isso é usado para controlar quais APIs os usuários do IAM podem usar para adicionar ou remover tags de uma pilha ou um conjunto de pilhas. A operação usada para adicionar ou remover tags deve ser adicionada como valor para a chave de condição. A política a seguir concede as permissões de TagResource
e UntagResource
à operação de mutação CreateStack
.
{ "Version": "2012-10-17", "Statement": [{ "Sid": "CreateActionConditionPolicyForTagUntagResources", "Effect": "Allow", "Action": [ "cloudformation:TagResource", "cloudformation:UntagResource" ], "Resource": "*", "Condition": { "StringEquals": { "cloudformation:CreateAction": [ "CreateStack" ] } } }] }
Restringir operações de conjunto de pilhas com base na região e nos tipos de recursos
O exemplo de política a seguir concede permissões para conjuntos de pilhas gerenciados pelo serviço. Um usuário com essa política só pode executar operações em conjuntos de pilhas com modelos que contêm tipos de recurso do Amazon S3 (AWS::S3::*
) ou o tipo de recurso AWS::SES::ConfigurationSet
. Se o usuário entrou na conta de gerenciamento da organização com o ID 123456789012
, ele também poderá executar operações apenas em conjuntos de pilhas que tenham como destino a UO com o ID
e apenas no conjunto de pilhas com o ID ou-1fsfsrsdsfrewr
stack-set-id
que tenha como destino a Conta da AWS com o ID
.987654321012
As operações do conjunto de pilha falharão se o modelo de conjunto de pilhas contiver tipos de recursos diferentes dos especificados na política ou se os destinos de implementação forem OU ou IDs de conta diferentes dos especificados na política para as contas de gerenciamento e conjuntos de pilhas correspondentes.
Essas restrições de política só se aplicam quando as operações de conjunto de pilha têm como destino as regiões us-east-1
, us-west-2
ou eu-west-2
Regiões da AWS.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:*" ], "Resource": [ "arn:aws:cloudformation:*:*:stackset/*", "arn:aws:cloudformation:*:*:type/resource/
AWS-S3
-*", "arn:aws:cloudformation:us-west-2::type/resource/AWS-SES-ConfigurationSet
", "arn:aws:cloudformation:*:123456789012
:stackset-target/*/ou-1fsfsrsdsfrewr
", "arn:aws:cloudformation:*:123456789012
:stackset-target/stack-set-id
/987654321012
" ], "Condition": { "ForAllValues:StringEqualsIgnoreCase": { "cloudformation:TargetRegion": [ "us-east-1
", "us-west-2
", "eu-west-1
" ] } } } ] }
Permitir todas as operações do gerador de IaC
A política a seguir permite acesso às ações do CloudFormation relacionadas à varredura de recursos e ao gerenciamento de modelos do gerador de IaC. A primeira instrução concede permissões para descrever, listar e iniciar varreduras de recursos. Também permite acesso às permissões adicionais necessárias (cloudformation:GetResource
, cloudformation:ListResources
e cloudformation:ListTypes
) que permitem que o gerador de IaC recupere informações sobre os recursos e os tipos de recursos disponíveis. A segunda instrução concede permissões totais para criar, excluir, descrever, listar e atualizar os modelos gerados.
Você também deve conceder permissões de leitura nos serviços da AWS de destino a qualquer pessoa que vá fazer varreduras de recursos com o gerador de IaC. Para obter mais informações, consulte Permissões do IAM necessárias para varrer recursos.
{ "Version":"2012-10-17", "Statement":[ { "Sid":"ResourceScanningOperations", "Effect":"Allow", "Action":[ "cloudformation:DescribeResourceScan", "cloudformation:GetResource", "cloudformation:ListResources", "cloudformation:ListResourceScanRelatedResources", "cloudformation:ListResourceScanResources", "cloudformation:ListResourceScans", "cloudformation:ListTypes", "cloudformation:StartResourceScan" ], "Resource":"*" }, { "Sid":"TemplateGeneration", "Effect":"Allow", "Action":[ "cloudformation:CreateGeneratedTemplate", "cloudformation:DeleteGeneratedTemplate", "cloudformation:DescribeGeneratedTemplate", "cloudformation:GetResource", "cloudformation:GetGeneratedTemplate", "cloudformation:ListGeneratedTemplates", "cloudformation:UpdateGeneratedTemplate" ], "Resource":"*" } ] }