Conceder permissão para marcar recursos do Amazon EC2 durante a criação
Algumas ações de resource-creating da API do Amazon EC2 permitem especificar tags quando você cria o recurso. É possível usar tags de recursos para implementar o controle baseado em atributo (ABAC). Para ter mais informações, consulte Marcar com tag os recursos do e Controlar o acesso usando acesso baseado em atributos.
Para permitir que os usuários marquem recursos na criação, eles devem ter permissões para usar a ação que cria o recurso, como ec2:RunInstances
ou ec2:CreateVolume
. Se as tags forem especificadas na ação resource-creating, a Amazon executará autorização adicional na ação ec2:CreateTags
para verificar se os usuários têm permissões para criar tags. Portanto, os usuários também precisam ter permissões para usar a ação ec2:CreateTags
.
Na definição de política do IAM para a ação ec2:CreateTags
, use o elemento Condition
com a chave de condição ec2:CreateAction
para conceder permissões de marcação à ação que cria o recurso.
O exemplo a seguir demonstra uma política que permite que os usuários executem instâncias e apliquem tags a instâncias e volumes durante a execução. Os usuários não têm permissão para marcar recursos existentes (não podem chamar a ação ec2:CreateTags
diretamente).
{ "Statement": [ { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:region:account:*/*", "Condition": { "StringEquals": { "ec2:CreateAction" : "RunInstances" } } } ] }
Da mesma forma, a política a seguir permite que os usuários criem volumes e apliquem qualquer tag aos volumes durante a criação do volume. Os usuários não têm permissão para marcar recursos existentes (não podem chamar a ação ec2:CreateTags
diretamente).
{ "Statement": [ { "Effect": "Allow", "Action": [ "ec2:CreateVolume" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:region:account:*/*", "Condition": { "StringEquals": { "ec2:CreateAction" : "CreateVolume" } } } ] }
A ação ec2:CreateTags
será avaliada somente se as tags forem aplicadas durante a ação resource-creating. Portanto, um usuário que tiver permissões para criar um recurso (pressupondo-se que não existam condições de marcação) não precisa de permissão para usar a ação ec2:CreateTags
se nenhuma tag for especificada na solicitação. Contudo, se o usuário tentar criar um recurso com tags, haverá falha na solicitação se o usuário não tiver permissão para usar a ação ec2:CreateTags
.
A ação ec2:CreateTags
também é avaliada se as tags forem fornecidas em um modelo de execução. Para visualizar um exemplo de política, consulte Tags em um modelo de execução.
Controlar o acesso a tags específicas
É possível usar condições adicionais no elemento Condition
de suas políticas do IAM para controlar as chaves de tag e os valores que podem ser aplicados aos recursos.
As chaves de condição a seguir podem ser usadas com os exemplos na seção anterior:
-
aws:RequestTag
: para indicar que uma chave de tag ou uma chave e um valor de tag específicos devem estar presentes em uma solicitação. Outras tags também podem ser especificadas na solicitação.-
Use com o operador de condição
StringEquals
para impor uma combinação de chave e valor de tag específica, por exemplo, para impor a tagcost-center
=cc123
:"StringEquals": { "aws:RequestTag/cost-center": "cc123" }
-
Use com o operador de condição
StringLike
para impor uma chave de tag específica, por exemplo, para impor a chave de tagpurpose
:"StringLike": { "aws:RequestTag/purpose": "*" }
-
-
aws:TagKeys
: para aplicar as chaves de tags usadas na solicitação.-
Use com o modificador
ForAllValues
para impor chaves de tags específicas se forem fornecidas na solicitação (se as tags forem especificadas na solicitação, somente chaves de tags específicas são permitidas; nenhuma outra tag é permitida). Por exemplo, as chaves de tagsenvironment
oucost-center
são permitidas:"ForAllValues:StringEquals": { "aws:TagKeys": ["environment","cost-center"] }
-
Use com o modificador
ForAnyValue
para impor a presença de pelo menos uma das chaves de tags especificadas na solicitação. Por exemplo, pelo menos uma das chaves de tagsenvironment
ouwebserver
deve estar presente na solicitação:"ForAnyValue:StringEquals": { "aws:TagKeys": ["environment","webserver"] }
-
Essas chaves de condição podem ser aplicadas às ações resource-creating que são compatíveis com a marcação bem como as ações ec2:CreateTags
e ec2:DeleteTags
. Para saber se uma ação de API do Amazon EC2 é compatível com marcação, consulte Ações, recursos e chaves de condição para Amazon EC2.
Para forçar os usuários a especificarem tags quando criam um recurso, use a chave de condição aws:RequestTag
ou a chave de condição aws:TagKeys
com o modificador ForAnyValue
na ação resource-creating. A ação ec2:CreateTags
não será avaliada se um usuário não especificar tags para a ação resource-creating.
Para condições, a chave de condição não diferencia maiúsculas de minúsculas, e o valor da condição diferencia maiúsculas de minúsculas. Portanto, para aplicar a diferenciação de maiúsculas de minúsculas de uma tag, use a chave de condição aws:TagKeys
, onde a chave da tag é especificada como um valor na condição.
Para obter exemplos de políticas do IAM, consulte Exemplo de políticas para controlar o acesso à API do Amazon EC2. Para obter mais informações, consulte Condições com múltiplas chaves de contexto ou valores no Guia do usuário do IAM.