Exemplo de SCPs para marcação de recursos - AWS Organizations

Exemplo de SCPs para marcação de recursos

Exigir uma tag em recursos criados especificados

A SCP a seguir impede que usuários e funções do IAM nas contas afetadas criem determinados tipos de recursos se a solicitação não incluir as tags especificadas.

Importante

Lembre-se de testar políticas baseadas em negação com os serviços que você usa em seu ambiente. O exemplo a seguir é um simples bloco de criação de segredos sem tags ou execução de instâncias do Amazon EC2 sem tags, e não inclui exceções.

A política de exemplo a seguir não é compatível com o AWS CloudFormation como escrito, porque esse serviço cria um segredo e, em seguida, o marca como duas etapas separadas. Este exemplo de política efetivamente bloqueia o AWS CloudFormation de criar um segredo como parte de uma pilha, porque tal ação resultaria, embora brevemente, em um segredo que não é marcado como necessário.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyCreateSecretWithNoProjectTag", "Effect": "Deny", "Action": "secretsmanager:CreateSecret", "Resource": "*", "Condition": { "Null": { "aws:RequestTag/Project": "true" } } }, { "Sid": "DenyRunInstanceWithNoProjectTag", "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:volume/*" ], "Condition": { "Null": { "aws:RequestTag/Project": "true" } } }, { "Sid": "DenyCreateSecretWithNoCostCenterTag", "Effect": "Deny", "Action": "secretsmanager:CreateSecret", "Resource": "*", "Condition": { "Null": { "aws:RequestTag/CostCenter": "true" } } }, { "Sid": "DenyRunInstanceWithNoCostCenterTag", "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:volume/*" ], "Condition": { "Null": { "aws:RequestTag/CostCenter": "true" } } } ] }

Para obter uma lista de todos os serviços e ações aos quais oferecem suporte em SCPs do AWS Organizations e em políticas de permissões do IAM, consulte Ações, recursos e chaves de condições para serviços da AWS no Guia do usuário do IAM.

Impedir que as tags sejam modificadas, exceto por principais autorizados

A SCP a seguir mostra como uma política pode permitir que apenas principais autorizados modifiquem as tags anexadas aos seus recursos. Essa é uma parte importante do uso do controle de acesso baseado em atributo (ABAC) como parte da sua estratégia de segurança de nuvem do AWS. A política permite que um chamador modifique as tags somente nos recursos em que a tag de autorização (neste exemplo, access-project) corresponde exatamente à mesma tag de autorização anexada ao usuário ou à função que está fazendo a solicitação. A política também impede que o usuário autorizado altere o valor da tag que é usada para autorização. O principal de chamada deve ter a etoqueta de autorização para fazer qualquer alteração.

Esta política só impede que usuários não autorizados alterem tags. Um usuário autorizado que não está bloqueado por esta política ainda deve ter uma política do IAM separada que conceda explicitamente a permissão Allow nas APIs de marcação relevantes. Por exemplo, se o usuário tiver uma política de administrador comAllow */* (permitir todos os serviços e todas as operações), então a combinação resulta na permissão do usuário administrador para alterar apenas as tags que têm um valor de tag de autorização que corresponde ao valor de tag de autorização anexada ao principal do usuário. Isso ocorre porque o Deny explícito nesta política substitui o Allow explícito na política de administrador.

Importante

Esta não é uma solução de política completa e não deve ser usada como mostrado aqui. Este exemplo destina-se apenas a ilustrar parte de uma estratégia de ABAC e precisa ser personalizado e testado para ambientes de produção.

Para obter a política completa com uma análise detalhada de como ela funciona, consulte Protegendo tags de recursos usadas para autorização usando uma política de controle de serviço no AWS Organizations

Lembre-se de testar políticas baseadas em negação com os serviços que você usa em seu ambiente.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyModifyTagsIfResAuthzTagAndPrinTagDontMatch", "Effect": "Deny", "Action": [ "ec2:CreateTags", "ec2:DeleteTags" ], "Resource": [ "*" ], "Condition": { "StringNotEquals": { "ec2:ResourceTag/access-project": "${aws:PrincipalTag/access-project}", "aws:PrincipalArn": "arn:aws:iam::123456789012:role/org-admins/iam-admin" }, "Null": { "ec2:ResourceTag/access-project": false } } }, { "Sid": "DenyModifyResAuthzTagIfPrinTagDontMatch", "Effect": "Deny", "Action": [ "ec2:CreateTags", "ec2:DeleteTags" ], "Resource": [ "*" ], "Condition": { "StringNotEquals": { "aws:RequestTag/access-project": "${aws:PrincipalTag/access-project}", "aws:PrincipalArn": "arn:aws:iam::123456789012:role/org-admins/iam-admin" }, "ForAnyValue:StringEquals": { "aws:TagKeys": [ "access-project" ] } } }, { "Sid": "DenyModifyTagsIfPrinTagNotExists", "Effect": "Deny", "Action": [ "ec2:CreateTags", "ec2:DeleteTags" ], "Resource": [ "*" ], "Condition": { "StringNotEquals": { "aws:PrincipalArn": "arn:aws:iam::123456789012:role/org-admins/iam-admin" }, "Null": { "aws:PrincipalTag/access-project": true } } } ] }