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"] } } } ] }