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.
{
"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.
{
"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
:
{
"Version": "2012-10-17",
"Statement" : [
{
"Effect" : "Deny",
"Action" : [
"codebuild:BatchGetReportGroups,"
"codebuild:CreateReportGroup",
"codebuild:DeleteReportGroup",
"codebuild:ListReportGroups",
"codebuild:ListReportsForReportGroup",
"codebuild:UpdateReportGroup"
]
"Resource" : "*",
"Condition" : {
"StringEquals" : "aws:ResourceTag/Status
": "Secret
"
}
}
]
}
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:
{
"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
"
}
}
}
]
}