Uso de etiquetas para controlar el acceso a los recursos CodePipeline - AWS CodePipeline

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de etiquetas para controlar el acceso a los recursos CodePipeline

Las condiciones de las declaraciones de política de IAM forman parte de la sintaxis que se utiliza para especificar los permisos a los recursos que requieren las CodePipeline acciones. El uso de etiquetas en las condiciones es una manera de controlar el acceso a los recursos y las solicitudes. Para obtener información sobre el etiquetado de CodePipeline recursos, consulte. Etiquetado de recursos En este tema, se explica el control de acceso basado en etiquetas.

Al diseñar políticas de IAM, es posible que se establezcan permisos detallados mediante la concesión de acceso a recursos específicos. A medida que crezca la cantidad de recursos que administra, esta tarea será más complicada. El etiquetado de recursos y uso de etiquetas en las condiciones de instrucción de política pueden facilitar esta tarea. Puede conceder acceso de forma masiva a cualquier recurso con una determinada etiqueta. A continuación, aplique repetidamente esta etiqueta a los recursos pertinentes durante la creación o después.

Las etiquetas se pueden asociar al recurso o pasarse dentro de la solicitud a los servicios que admiten etiquetado. En CodePipeline, los recursos pueden tener etiquetas y algunas acciones pueden incluirlas. Al crear una política de IAM, puede utilizar las claves de condición de etiqueta para controlar:

  • Qué usuarios pueden realizar acciones en un recurso de canalización, basándose en las etiquetas que ya tiene.

  • Qué etiquetas se pueden pasar en la solicitud de una acción.

  • Si se pueden utilizar claves de etiqueta específicas en una solicitud.

Los operadores de condición de cadena le permiten desarrollar elementos Condition que restringen el acceso comparando una clave con el valor de una cadena. Puede agregar IfExists al final de cualquier nombre de operador de condición, salvo la condición Null. El objetivo es decir lo siguiente: “Si la clave de la política está presente en el contexto de la solicitud, se debe procesar la clave según se indica en la política. Si la clave no está presente, el elemento de condición se evalúa en verdadero". Por ejemplo, puede utilizar StringEqualsIfExists para restringir por condiciones las claves que podrían no estar presentes en otros tipos de recursos.

Para la sintaxis y semántica completas de claves de condición de etiquetas, consulte Control de acceso mediante etiquetas. Para obtener información adicional acerca de las claves de condición, consulte los siguientes recursos. Los ejemplos CodePipeline de políticas de esta sección se ajustan a la siguiente información sobre las claves de condición y la amplían con ejemplos de matices CodePipeline , como la anidación de recursos.

Los siguientes ejemplos muestran cómo especificar las condiciones de las etiquetas en las políticas para CodePipeline los usuarios.

ejemplo 1: Limitar acciones en función de etiquetas en la solicitud

La política de usuarios AWSCodePipeline_FullAccess administrados otorga a los usuarios permisos ilimitados para realizar cualquier CodePipeline acción en cualquier recurso.

La política siguiente limita esta capacidad y deniega los usuarios no autorizados el permiso para crear canalizaciones donde las etiquetas especificas se incluyen en la solicitud. Para ello, deniega la acción CreatePipeline si la solicitud especifica una etiqueta denominada Project con uno de los valores ProjectA o ProjectB. (La clave de condición aws:RequestTag se utiliza para controlar qué etiquetas se pueden pasar en una solicitud de IAM).

En el siguiente ejemplo, la intención de la política es denegar a los usuarios no autorizados el permiso para crear una canalización con los valores de etiqueta especificados. Sin embargo, la creación de una canalización requiere acceder a los recursos además de a la propia canalización (por ejemplo, a las acciones y etapas de la canalización). Como lo 'Resource' especificado en la política es '*', la política se evalúa en función de cada recurso que tenga un ARN y se crea cuando se crea la canalización. Estos recursos adicionales no tienen la clave de condición de etiqueta, por lo que la comprobación StringEquals da un error y no se concede al usuario la capacidad para lanzar cualquier tipo de instancia. Para solucionar este problema, utilice en su lugar el operador de condición StringEqualsIfExists. De esta forma, la prueba solo se realiza si la clave de condición existe.

Podría leer lo siguiente como: “Si el recurso que se está comprobando tiene una clave de condición "RequestTag/Project", deberá permitirse la acción solo si el valor de clave comienza por projectA. Si el recurso que se está comprobando no tiene esta clave de condición, no deberá tenerse en cuenta”.

Además, la política impide que estos usuarios no autorizados manipulen los recursos utilizando la clave de condición aws:TagKeys para no permitir que las acciones de modificación de etiquetas incluyan estos mismos valores de etiqueta. El administrador de un cliente debe asociar esta política de IAM a los usuarios de IAM no autorizados, además de la política de usuario administrada.

{ "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"] } } } ] }
ejemplo 2: Limitar acciones en función de etiquetas de recursos

La política de usuarios AWSCodePipeline_FullAccess administrados otorga a los usuarios permisos ilimitados para realizar cualquier CodePipeline acción en cualquier recurso.

La siguiente política limita esta capacidad y deniega a los usuarios no autorizados el permiso para realizar acciones en canalizaciones específicas del proyecto. Para ello, deniega algunas acciones si el recurso tiene una etiqueta denominada Project con el valor ProjectA o ProjectB. (La clave de condición aws:ResourceTag se utiliza para controlar el acceso a los recursos en función de las etiquetas que tengan los recursos). El administrador de un cliente debe asociar esta política de IAM a los usuarios de IAM no autorizados, además de la política de usuario administrada.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codepipeline:TagResource" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Project": ["ProjectA", "ProjectB"] } } } ] }
ejemplo 3: Permitir acciones en función de etiquetas en la solicitud

La siguiente política otorga a los usuarios permiso para crear canalizaciones de desarrollo en CodePipeline.

Para ello, permite las acciones CreatePipeline y TagResource si la solicitud especifica una etiqueta denominada Project con el valor ProjectA. En otras palabras, la única clave de etiqueta que se puede especificar esProject, y su valor debe serProjectA.

(La clave de condición aws:RequestTag se utiliza para controlar qué etiquetas se pueden pasar en una solicitud de IAM). La condición aws:TagKeys garantiza la distinción entre mayúsculas y minúsculas de las claves de etiqueta. Esta política es útil para los usuarios o roles que no tienen asociada la política de usuario administrada AWSCodePipeline_FullAccess. La política administrada otorga a los usuarios permisos ilimitados para realizar cualquier CodePipeline acción en cualquier 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"] } } } ] }
ejemplo 4: Limitar acciones en función de etiquetas de recursos

La política de usuarios AWSCodePipeline_FullAccess administrados otorga a los usuarios permisos ilimitados para realizar cualquier CodePipeline acción en cualquier recurso.

La siguiente política limita esta capacidad y deniega a los usuarios no autorizados el permiso para realizar acciones en canalizaciones específicas del proyecto. Para ello, deniega algunas acciones si el recurso tiene una etiqueta denominada Project con el valor ProjectA o ProjectB.

Además, la política impide que estos usuarios no autorizados manipulen los recursos al utilizar la clave de condición aws:TagKeys que no permite que las acciones de modificación de etiquetas incluyan estos mismos valores de etiquetas ni eliminen por completo la etiqueta Project. El administrador de un cliente debe asociar esta política de IAM a los usuarios de IAM no autorizados, además de la política de usuario administrada.

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