Conceder permissão para marcar recursos do Amazon EC2 durante a criação - Amazon Elastic Compute Cloud

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 tag cost-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 tag purpose:

      "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 tags environment ou cost-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 tags environment ou webserver 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.