Usar tags para controlar o acesso aos recursos do AWS CodeBuild - AWS CodeBuild

Usar tags para controlar o acesso aos recursos do AWS CodeBuild

As condições nas declarações de política do IAM fazem parte da sintaxe que é possível usar para especificar permissões para ações do CodeBuild baseadas em projeto. É possível criar uma política que permita ou negue ações em projetos com base nas tags associadas a esses projetos e aplicar essas políticas aos grupos do IAM que você configura para gerenciar usuários. Para obter informações sobre como aplicar tags a um projeto usando o console ou a AWS CLI, consulte Criar um projeto de compilação no AWS CodeBuild. Para obter informações sobre como aplicar tags usando o SDK do CodeBuild, consulte CreateProject e Tags na Referência da API do CodeBuild. Para obter informações sobre como usar tags para controlar o acesso a recursos da AWS, consulte Controlling Access to AWS Resources Using Resource Tags, no Guia do usuário do IAM.

Importante

Ao usar o recurso de capacidade reservada, os dados armazenados em cache nas instâncias da frota, incluindo arquivos de origem, camadas do Docker e diretórios em cache especificados no buildspec, podem ser acessados por outros projetos na mesma conta. Isso ocorre por design e permite que projetos dentro da mesma conta compartilhem instâncias de frota.

exemplo Exemplo 1: Limitar ações de projetos do CodeBuild com base em tags de recursos

O exemplo a seguir nega todas as ações BatchGetProjects em projetos marcados com a chave Environment com o valor de chave de Production. O administrador de um usuário deve anexar essa política do IAM, além de uma política gerenciada pelo usuário, a usuários não autorizados. A chave de condição aws:ResourceTag é usada para controlar o acesso a recursos com base em suas tags.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codebuild:BatchGetProjects" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:ResourceTag/Environment": "Production" } } } ] }
exemplo Exemplo 2: Limitar ações de projetos do CodeBuild com base em tags de solicitação

A política a seguir negará a permissão dos usuários para a ação CreateProject se a solicitação tiver uma tag com a chave Environment e o valor de chave Production. Além disso, a política impede que esses usuários não autorizados modifiquem projetos usando a chave de condição aws:TagKeys para não permitir UpdateProject se a solicitação tiver uma tag com a chave Environment. Um administrador deve anexar essa política do IAM, além da política gerenciada pelo usuário, a usuários que não estão autorizados a executar essas ações. A chave de condição aws:RequestTag é usada para controlar quais tags podem ser transmitidas em uma solicitação do IAM.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codebuild:CreateProject" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:RequestTag/Environment": "Production" } } }, { "Effect": "Deny", "Action": [ "codebuild:UpdateProject" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": ["Environment"] } } } ] }
exemplo Exemplo 3: Negar ou permitir ações em grupos de relatórios com base em tags de recursos

É possível criar uma política que permita ou negue ações em recursos do CodeBuild (projetos e grupos de relatórios) com base nas tags da AWS associadas a esses recursos e aplicar essas políticas aos grupos do IAM configurados para gerenciar usuários. Por exemplo, é possível criar uma política que negue todas as ações do CodeBuild em grupos de relatórios com a chave de tag da AWS Status e o valor de chave de Secret e, depois, aplicar essa política ao grupo do IAM criado para os desenvolvedores gerais (Desenvolvedores). É necessário verificar se os desenvolvedores que trabalham nesses grupos de relatórios marcados não são membros do grupo Desenvolvedores geral, mas sim pertencentes a um grupo do IAM diferente que não tenha a política restritiva aplicada (SecretDevelopers).

O exemplo a seguir nega todas as ações do CodeBuild em grupos de relatórios marcados com a chave Status e o valor de chave de Secret:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codebuild:BatchGetReportGroups", "codebuild:CreateReportGroup", "codebuild:DeleteReportGroup", "codebuild:ListReportGroups", "codebuild:ListReportsForReportGroup", "codebuild:UpdateReportGroup" ], "Resource": "*", "Condition": { "StringLike": { "aws:RequestedRegion": "us-east-1" } } } ] }
exemplo Exemplo 4: Limitar ações do CodeBuild para AWSCodeBuildDeveloperAccess com base em tags de recursos

É possível criar políticas que permitam ações do CodeBuild em todos os grupos de relatórios e projetos que não estejam marcados com tags específicas. Por exemplo, a política a seguir permite o equivalente de permissões AWSCodeBuildDeveloperAccess para todos os grupos de relatórios e projetos, exceto os marcados com as tags especificadas:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codebuild:StartBuild", "codebuild:StopBuild", "codebuild:BatchGet*", "codebuild:GetResourcePolicy", "codebuild:DescribeTestCases", "codebuild:List*", "codecommit:GetBranch", "codecommit:GetCommit", "codecommit:GetRepository", "codecommit:ListBranches", "cloudwatch:GetMetricStatistics", "events:DescribeRule", "events:ListTargetsByRule", "events:ListRuleNamesByTarget", "logs:GetLogEvents", "s3:GetBucketLocation", "s3:ListAllMyBuckets" ], "Resource": "*", "Condition": { "StringNotEquals": { "aws:ResourceTag/Status": "Secret", "aws:ResourceTag/Team": "Saanvi" } } } ] }