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

Conceder permissão para marcar recursos durante a criação

Algumas ações de resource-creating da API do Amazon EC2 permitem especificar tags quando você cria o recurso. Você pode usar tags de recursos para implementar o controle baseado em atributo (ABAC). Para obter mais informações, consulte Marcar com tag os recursos e Controlar o acesso aos recursos do EC2 usando tags de recursos.

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 ver 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, você deve usar 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 Políticas de exemplo para trabalhar com a AWS CLI ou um AWS SDK. Para obter mais informações sobre as condições de vários valores, consulte Como criar uma condição que testa vários valores de chaves no Guia do usuário do IAM.