Al igual que con todos los productos de Google Cloud, la administración de identidades y accesos protege Cloud Deploy mediante el control de los usuarios y las cuentas de servicio autenticados que pueden realizar cada acción.
En este documento, se describen algunas de las funciones de IAM y se proporcionan instrucciones para proteger las entregas de aplicaciones que se administran mediante Cloud Deploy. Estas son algunas de las formas específicas en que puedes restringir el acceso a las acciones y los recursos en Cloud Deploy:
Otorga permisos para promover una versión en un destino específico
Otorga permisos para aprobar lanzamientos en un destino específico
Otorga permisos para promocionar una versión durante un período específico
Otorga permisos para aprobar lanzamientos durante un período específico
Antes de comenzar
Comprende los conceptos básicos de IAM.
Obtén información sobre los roles y permisos de Cloud Deploy.
Acerca de las funciones avanzadas de IAM
Además de los roles y permisos, Cloud Deploy usa las siguientes funciones de IAM proporcionar esos controles:
Acerca de las políticas de IAM
Una política de IAM es un conjunto de vinculaciones y metadatos. La vinculación de roles otorga un solo rol a uno o más principales (usuarios, grupos o cuentas de servicio), además de cualquier condición específica del contexto que controle si la vinculación se aplica.
Para obtener más información sobre las políticas de IAM, consulta Información sobre las políticas.
Acerca de las condiciones de IAM
Con las condiciones de IAM, puedes controlar el acceso a los recursos y las acciones de Cloud Deploy según las condiciones que se calculan durante el tiempo de ejecución. Por ejemplo, puedes restringir una promoción. a un objetivo determinado, de modo que solo se permitan durante un período específico.
Acerca de los atributos de la API
Cuando creas condiciones de IAM, puedes hacer referencia Atributos de API para obtener el entorno de ejecución información adicional sobre una solicitud. Por ejemplo, puedes usar un atributo de API para obtener el nombre del recurso para el que se realiza la solicitud. Luego, puedes compararlo con los recursos a los que tiene acceso el principal.
Otorga acceso detallado con funciones avanzadas de IAM
Estas funciones avanzadas de IAM te permiten controlar el acceso a recursos específicos y a tipos de recursos en condiciones específicas.
Los procedimientos de esta sección otorgan acceso a recursos específicos (destinos, canalizaciones de entrega). También puedes otorgar acceso a nivel de proyecto, que afecta a todas las canalizaciones de entrega o a todos los destinos de ese proyecto. A fin de establecer una política de IAM para un proyecto, usa el comando gcloud projects set-iam-policy
:
gcloud projects set-iam-policy PROJECT_ID POLICY_FILE
Otorga acceso a una canalización de entrega específica
Puedes otorgar permisos a una principal para que cree, modifique y borre todas las canalización de publicaciones. Para ello, solo debes otorgar un rol adecuado. Sin embargo, a veces, es posible que desees otorgar a una principal este acceso para uno o más. específicas.
Para ello, usa vinculaciones de roles a fin de vincular el rol roles/clouddeploy.developer
con ese principal y, cuando apliques la política (con setIamPolicy
), especifica qué canalización de entrega se otorga el acceso.
Para otorgar acceso a una canalización de publicación específica, haz lo siguiente:
Crea un archivo de políticas con lo siguiente vinculación:
bindings: - role: roles/clouddeploy.developer members: - user:fatima@example.com
En el ejemplo anterior, se otorga el rol a un usuario, pero también puedes otorgar la función a un grupo o a una cuenta de servicio.
Llama al siguiente comando para aplicar el archivo de política a una canalización de publicación específica:
gcloud deploy delivery-pipelines set-iam-policy --delivery-pipeline=PIPELINE_NAME --region=REGION POLICY_FILE
Otorga acceso para configurar un destino específico
Para otorgar a un principal acceso a un destino específico, puedes usar vinculaciones de roles. Para hacerlo, vincula el rol roles/clouddeploy.operator
con ese principal y, cuando apliques la política (con setIamPolicy
), especifica a qué destino se otorga el acceso.
El acceso al objetivo específico le permite al principal actualizarlo y borrarlo.
Crea un archivo de política con la siguiente vinculación:
bindings: - role: roles/clouddeploy.operator members: - group:cd_operators@example.com
En el ejemplo anterior, se otorga el rol a un grupo, pero también se puede otorgar a un usuario o a una cuenta de servicio.
Llama al siguiente comando para aplicar el archivo de política a un destino específico:
gcloud deploy targets set-iam-policy TARGET --region=REGION POLICY_FILE
Otorga permisos para promover una versión a un destino específico
En este procedimiento, se supone que ya existe una política que vincula el rol a la principal. En este caso, agregamos una condición que especifica el destino:
Crea un archivo de política con la siguiente vinculación:
bindings: - role: roles/clouddeploy.operator members: - serviceAccount:prod_operator@project-12345.iam.gserviceaccount.com condition: expression: api.getAttribute("clouddeploy.googleapis.com/rolloutTarget", "") == "prod" title: Deploy to prod
En esta vinculación de rol,
condition
toma un par clave-valor, en el que la clave esexpression
y el valor es una expresión CEL. Esta expresión hace referencia a un conjunto de atributos contextuales. sobre la solicitud y se evalúa como un valor booleano.En este caso, la expresión se evalúa cuando la principal intenta promover la versión para confirmar que el destino de promoción coincida con el destino en la expresión.
La expresión usa el atributo de API
clouddeploy.googleapis.com/rolloutTarget
, que es el destino al que la principal intenta ascender. La expresión la compara con el destino al que la principal le otorga acceso de promoción.Configura la vinculación para una canalización de entrega específica:
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
Si deseas establecer esta vinculación en todas las canalizaciones de entrega, puedes configurarla a nivel de proyecto:
gcloud projects set-iam-policy PROJECT POLICY_FILE
Otorga permisos para aprobar lanzamientos a un segmento específico
La vinculación de esta sección otorga un permiso principal para aprobar los lanzamientos
de una canalización y, además, incluye una condición que aplica el permiso para el objetivo
prod
.
Crea un archivo de política con la siguiente vinculación:
bindings: - role: roles/clouddeploy.approver members: - serviceAccount:prod_operator@project-12345.iam.gserviceaccount.com condition: expression: api.getAttribute("clouddeploy.googleapis.com/rolloutTarget", "") == "prod" title: Deploy to prod
En esta vinculación de rol,
condition
toma un par clave-valor, en el que la clave esexpression
y el valor es una expresión CEL. La expresión hace referencia a un conjunto de atributos contextuales. sobre la solicitud y se evalúa como un valor booleano.En este caso, la expresión se evalúa cuando la principal intenta aprobar el lanzamiento para confirmar que el objetivo coincide con el destino en la expresión.
La expresión usa el atributo de la API
clouddeploy.googleapis.com/rolloutTarget
, que es el objetivo del lanzamiento y lo compara con el objetivo para el cual principal tiene acceso para su aprobación. El atributoclouddeploy.googleapis.com/rolloutTarget
es el único atributo de API que admite Cloud Deploy.Establece la vinculación para una canalización de entrega específica:
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
Si deseas establecer esta vinculación en todas las canalizaciones de entrega, puedes configurarla a nivel de proyecto:
gcloud projects set-iam-policy PROJECT POLICY_FILE
Otorga permisos para promocionar una versión durante un período específico
La vinculación de esta sección otorga un permiso principal para promocionar versiones de una canalización y, además, incluye una condición que especifica el período durante el cual la vinculación está vigente.
Crea un archivo de política con la siguiente vinculación:
bindings: - role: roles/clouddeploy.operator members: - serviceAccount:prod_operator@project-12345.iam.gserviceaccount.com condition: expression: request.time.getDayOfWeek("America/Los_Angeles") > 0 && request.time.getDayOfWeek("America/Los_Angeles") < 6 title: Promote during safe window
En esta vinculación de rol,
condition
toma un par clave-valor, en el que la clave esexpression
y el valor es una expresión CEL. La expresión hace referencia a un conjunto de atributos contextuales sobre la solicitud y se evalúa como un booleano. Esta expresión verifica que el horario de la solicitud sea de lunes a viernes.En este caso, la expresión se evalúa cuando la principal intenta promover la versión para confirmar que el destino de promoción coincida con el destino en la expresión.
Configura la vinculación para una canalización de entrega específica:
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
Si deseas establecer esta vinculación en todas las canalizaciones de entrega, puedes configurarla a nivel de proyecto:
gcloud projects set-iam-policy PROJECT POLICY_FILE
Otorga permisos para aprobar lanzamientos durante un período específico
La vinculación de esta sección otorga a una principal permiso para aprobar lanzamientos. incluya una condición que especifica el período durante el cual la vinculación estará vigente
Crea un archivo de política con la siguiente vinculación:
bindings: - role: roles/clouddeploy.approver members: - serviceAccount:prod_operator@project-12345.iam.gserviceaccount.com condition: expression: request.time.getDayOfWeek("America/Los_Angeles") > 0 && request.time.getDayOfWeek("America/Los_Angeles") < 6 title: Approve during safe window
En esta vinculación de rol,
condition
toma un par clave-valor, en el que la clave esexpression
y el valor es una expresión CEL que hace referencia a un conjunto de atributos contextuales sobre la solicitud y se evalúa como un booleano. Esta expresión verifica que el horario de la solicitud sea de lunes a viernes.En este caso, la expresión se evalúa cuando la principal intenta aprobar el lanzamiento para confirmar que el destino coincida con el destino en la expresión.
Configura la vinculación para una canalización de entrega específica:
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
Si deseas establecer esta vinculación en todas las canalizaciones de entrega, puedes configurarla a nivel de proyecto:
gcloud projects set-iam-policy PROJECT POLICY_FILE
Otorga permisos para reintentar un trabajo según el tipo de trabajo
La vinculación de esta sección otorga un permiso principal para reintentar un trabajo de Cloud Deploy, según el tipo de trabajo.
Crea un archivo de política con la siguiente vinculación:
bindings: - role: roles/clouddeploy.operator members: - serviceAccount:prod_operator@project-12345.iam.gserviceaccount.com condition: expression: api.getAttribute("clouddeploy.googleapis.com/jobType", "") == "deploy" title: Retry deploy job
En esta vinculación de rol,
condition
toma un par clave-valor, en el que la clave esexpression
y el valor es una expresión CEL. La expresión hace referencia a un conjunto de atributos contextuales sobre la solicitud y se evalúa como un booleano.En este caso, la expresión se evalúa cuando la principal intenta volver a intentarlo el trabajo para confirmar que los tipos de trabajo coinciden con el tipo de trabajo de la expresión.
La expresión usa el atributo de la API
clouddeploy.googleapis.com/jobType
, que puede serdeploy
overify
.Configura la vinculación para una canalización de entrega específica:
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
Si deseas establecer esta vinculación en todas las canalizaciones de entrega, puedes configurarla a nivel de proyecto:
gcloud projects set-iam-policy PROJECT POLICY_FILE