Usando tags para controlar o acesso aos CodePipeline recursos - AWS CodePipeline

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usando tags para controlar o acesso aos CodePipeline recursos

As condições nas declarações de IAM política fazem parte da sintaxe que você usa para especificar as permissões para os recursos exigidos pelas CodePipeline ações. O uso de tags em condições é uma forma de controlar o acesso a recursos e solicitações. Para obter informações sobre a marcação de CodePipeline recursos, consulteMarcando atributos . Este tópico discute o controle de acesso com base em tags.

Ao criar IAM políticas, você pode definir permissões granulares ao conceder acesso a recursos específicos. À medida que o número de recursos que você gerencia aumenta, essa tarefa se torna mais difícil. Atribuir etiquetas a recursos e usá-las em condições de declaração de política pode facilitar essa tarefa. Você concede acesso em massa a qualquer recurso utilizando determinada etiqueta. Depois, você a aplica repetidamente a recursos relevantes durante a criação ou posteriormente.

As etiquetas podem ser anexadas ao recurso ou passadas na solicitação para serviços que comportem etiquetas. Em CodePipeline, os recursos podem ter tags e algumas ações podem incluir tags. Ao criar uma IAM política, você pode usar chaves de condição de tag para controlar:

  • Quais usuários podem executar ações em um recurso de pipeline, com base nas tags que o recurso já tem.

  • Quais tags podem ser transmitidas na solicitação de uma ação.

  • Se chaves de tags específicas podem ser usadas em uma solicitação.

Operadores de condição de string permitem que você construa elementos Condition que restringem o acesso com base na comparação de uma chave a um valor de string. Você pode adicionar IfExists ao final de qualquer nome de operador de condição, exceto a condição Null. Isso é feito para dizer "Se a chave de política estiver presente no contexto da solicitação, processar a chave conforme especificado na política. Se a chave não estiver presente, avalie o elemento da condição como verdadeiro." Por exemplo, você pode usar StringEqualsIfExists para restringir por chaves de condição que podem não estar presentes em outros tipos de recursos.

Para obter a sintaxe e a semântica completas das chaves de condição de tag, consulte Como controlar o acesso usando tags. Para obter mais informações sobre as chaves de condição, veja os recursos a seguir. Os exemplos CodePipeline de políticas nesta seção se alinham às seguintes informações sobre chaves de condição e as expandem com exemplos de nuances, CodePipeline como aninhamento de recursos.

Os exemplos a seguir demonstram como especificar condições de tag nas políticas para CodePipeline usuários.

exemplo 1: Limitar ações com base em tags na solicitação

A política de usuário AWSCodePipeline_FullAccess gerenciado dá aos usuários permissão ilimitada para realizar qualquer CodePipeline ação em qualquer recurso.

A política a seguir limita esse poder e nega a usuários não autorizados a permissão para criar pipelines quando tags específicas estão listadas na solicitação. Para fazer isso, ela negará a ação CreatePipeline se a solicitação especificar uma tag chamada Project com um dos valores ProjectA ou ProjectB. (A chave de aws:RequestTag condição é usada para controlar quais tags podem ser passadas em uma IAM solicitação.)

No exemplo a seguir, a intenção da política é negar a usuários não autorizados a permissão para criar um pipeline com os valores de tag especificados. No entanto, a criação de um pipeline requer o acesso a recursos além do próprio pipeline (por exemplo, ações e estágios do pipeline). Como o 'Resource' especificado na política é'*', a política é avaliada em relação a cada recurso que tem um ARN e é criado quando o pipeline está sendo criado. Esses recursos adicionais não têm a chave de condição de tag; portanto, a verificação StringEquals falha e o usuário não recebe a permissão para criar nenhum pipeline. Para resolver isso, use o operador de condição StringEqualsIfExists. Dessa forma, o teste só acontece se a chave de condição existir.

Você pode entender isso da seguinte maneira: "Se o recurso que está sendo verificado tiver uma chave de condição de tag "RequestTag/Project", permita a ação apenas se o valor de chave começar com projectA. Se o recurso que está sendo verificado não tiver essa chave de condição, não se preocupe com isso."

Além disso, a política impede que esses usuários não autorizados interfiram nos recursos usando a chave de condição aws:TagKeys para não permitir que ações de modificação de tag incluam esses mesmos valores de tag. O administrador do cliente deve anexar essa IAM política a usuários administrativos não autorizados, além da política de usuários gerenciados.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codepipeline:CreatePipeline", "codepipeline:TagResource" ], "Resource": "*", "Condition": { "StringEqualsIfExists": { "aws:RequestTag/Project": ["ProjectA", "ProjectB"] } } }, { "Effect": "Deny", "Action": [ "codepipeline:UntagResource" ], "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "aws:TagKeys": ["Project"] } } } ] }
exemplo 2: Limitar ações de marcação com base em tags de recursos

A política de usuário AWSCodePipeline_FullAccess gerenciado dá aos usuários permissão ilimitada para realizar qualquer CodePipeline ação em qualquer recurso.

A seguinte política limita esse poder e nega a usuários não autorizados permissão para realizar ações em pipelines específicos do projeto. Para fazer isso, ela negará ações específicas se o recurso tiver uma tag denominada Project com um dos valores ProjectA ou ProjectB. (A chave de condição aws:ResourceTag é usada para controlar o acesso a recursos com base nas tags desses recursos.) O administrador do cliente deve anexar essa IAM política a IAM usuários não autorizados, além da política de usuários gerenciados.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codepipeline:TagResource" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Project": ["ProjectA", "ProjectB"] } } } ] }
exemplo 3: Permitir ações com base em tags na solicitação

A política a seguir concede aos usuários permissão para criar pipelines de desenvolvimento em CodePipeline.

Para fazer isso, ela permitirá as ações CreatePipeline e TagResource se a solicitação especificar uma tag denominada Project com o valor ProjectA. Em outras palavras, a única chave de tag que pode ser especificada é Project, e seu valor deve ser ProjectA.

A chave de aws:RequestTag condição é usada para controlar quais tags podem ser passadas em uma IAM solicitação. A aws:TagKeys condição garante que a chave de tag faça diferenciação de letras maiúsculas e minúsculas. Essa política é útil para usuários ou perfis que não têm a política de usuário gerenciada AWSCodePipeline_FullAccess anexada. A política gerenciada dá aos usuários permissão ilimitada para realizar qualquer CodePipeline ação em qualquer recurso.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:CreatePipeline", "codepipeline:TagResource" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/Project": "ProjectA" }, "ForAllValues:StringEquals": { "aws:TagKeys": ["Project"] } } } ] }
exemplo 4: Limitar ações de marcação com base em tags de recursos

A política de usuário AWSCodePipeline_FullAccess gerenciado dá aos usuários permissão ilimitada para realizar qualquer CodePipeline ação em qualquer recurso.

A seguinte política limita esse poder e nega a usuários não autorizados permissão para realizar ações em pipelines específicos do projeto. Para fazer isso, ela negará ações específicas se o recurso tiver uma tag denominada Project com um dos valores ProjectA ou ProjectB.

Além disso, a política impede que esses usuários não autorizados interfiram nos recursos, usando a chave de condição aws:TagKeys para não permitir que ações de modificação de tag removam completamente a tag Project. O administrador do cliente deve anexar essa IAM política a usuários ou funções não autorizados, além da política de usuários gerenciados.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codepipeline:UntagResource" ], "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "aws:TagKeys": ["Project"] } } } ] }