Las condiciones de las declaraciones de la política de IAM son parte de la sintaxis que puede utilizar para especificar permisos sobre acciones basadas en proyectos de CodeBuild. Puede crear una política que permita o deniegue acciones sobre los proyectos en función de las etiquetas asociadas a dichos proyectos y aplicar después esas políticas a los grupos de IAM que configure para administrar usuarios. Para obtener información acerca de cómo aplicar etiquetas a un proyecto mediante la consola o AWS CLI, consulte Creación de un proyecto de compilación en AWS CodeBuild. Para obtener información acerca de cómo aplicar etiquetas con el SDK de CodeBuild, consulte CreateProject y Etiquetas en la Referencia de la API de CodeBuild. Para obtener información sobre el uso de etiquetas para controlar el acceso a los recursos de AWS, consulte Control de acceso a los recursos de AWS utilizando recursos de etiquetas en la Guía del usuario de IAM.
importante
Cuando se usa la característica de capacidad reservada, otros proyectos de la misma cuenta pueden acceder a los datos almacenados en caché en las instancias de flota (incluidos los archivos de origen, las capas de Docker y los directorios almacenados en caché que se indican en la especificación de compilación). Esto es así por diseño y permite que los proyectos de la misma cuenta compartan instancias de flotas.
ejemplo Ejemplo 1: limitar las acciones de los proyectos de CodeBuild en función de las etiquetas de recursos
En el ejemplo siguiente, se deniegan todas las acciones BatchGetProjects
en los proyectos etiquetados con la clave Environment
y el valor de clave Production
. El administrador de un usuario debe asociar esta política de IAM, junto con la política de usuario administrada, a los usuarios de que no estén autorizados. La clave de condición aws:ResourceTag
se utiliza para controlar el acceso a los recursos en función de sus etiquetas.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [
"codebuild:BatchGetProjects"
],
"Resource": "*",
"Condition": {
"ForAnyValue:StringEquals": {
"aws:ResourceTag/Environment": "Production"
}
}
}
]
}
ejemplo Ejemplo 2: limitar las acciones de los proyectos de CodeBuild en función de las etiquetas de solicitud
La siguiente política deniega a los usuarios el permiso para la acción CreateProject
si la solicitud contiene una etiqueta con la clave Environment
y el valor de clave Production
. Además, la política impide que estos usuarios no autorizados puedan modificar los proyectos utilizando la clave de condición aws:TagKeys
y no permite UpdateProject
si la solicitud contiene una etiqueta con la clave Environment
. Un administrador debe asociar esta política de IAM, junto con la política de usuario administrada, a los usuarios que no estén autorizados para realizar estas acciones. (La clave de condición aws:RequestTag
se utiliza para controlar qué etiquetas se pueden pasar en una solicitud de 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"]
}
}
}
]
}
ejemplo Ejemplo 3: denegar o permitir acciones en grupos de informes en función de etiquetas de recursos
Puede crear una política que permita o deniegue acciones sobre los recursos de CodeBuild (proyectos y grupos de informes) en función de las etiquetas de AWS asociadas con esos recursos y aplicar después esas políticas a los grupos de IAM que configure para administrar usuarios. Por ejemplo, puede crear una política que deniegue todas las acciones de CodeBuild en cualquier grupo de informes con la clave de etiqueta de AWS Status
y el valor de clave Secret
y, a continuación, aplicar dicha política al grupo de IAM que ha creado para los desarrolladores generales (Desarrolladores
). Tendrá que asegurarse de que los desarrolladores que trabajan en esos grupos de informes etiquetados no sean miembros de ese grupo de Desarrolladores
general, pero pertenezcan en su lugar a un grupo de IAM distinto que no tiene la política restrictiva aplicada (SecretDevelopers
).
En el ejemplo siguiente se deniegan todas acciones de CodeBuild en grupos de informes etiquetados con la clave Status
y el valor de clave 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
"
}
}
]
}
ejemplo Ejemplo 4: limitar las acciones de CodeBuild a AWSCodeBuildDeveloperAccess en función de etiquetas de recursos
Puede crear políticas que permitan acciones de CodeBuild en todos los grupos de informes y proyectos que no estén etiquetados con etiquetas específicas. Por ejemplo, la siguiente política permite el equivalente de permisos AWSCodeBuildDeveloperAccess para todos los grupos de informes y proyectos excepto los etiquetados con las etiquetas 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
"
}
}
}
]
}