Al igual que con todos los productos de Google Cloud , Gestión de Identidades y Accesos protege Cloud Deploy controlando qué usuarios autenticados y cuentas de servicio pueden realizar qué acciones.
En este documento se describen algunas de las funciones de Gestión de Identidades y Accesos (IAM) y se proporcionan instrucciones para proteger las entregas de aplicaciones gestionadas con Cloud Deploy. A continuación, se indican algunas formas concretas de restringir el acceso a acciones y recursos en Cloud Deploy:
Conceder permisos para promocionar una versión a un objetivo específico
Conceder permisos para aprobar lanzamientos a un objetivo específico
Conceder permisos para promocionar un lanzamiento durante un periodo específico
Conceder permisos para aprobar lanzamientos durante un periodo específico
Antes de empezar
Familiarízate con los conceptos básicos de IAM.
Consulta 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 gestión de identidades y accesos para proporcionar esos controles:
Acerca de las políticas de gestión de identidades y accesos
Una política de gestión de identidades y accesos es una colección de enlaces y metadatos. La vinculación de roles asigna un único rol a una o varias entidades principales (usuarios, grupos o cuentas de servicio), así como a las condiciones específicas del contexto que controlan si la vinculación se aplica.
Para obtener más información sobre las políticas de gestión de identidades y accesos, consulta Información sobre las políticas.
Acerca de las condiciones de gestión de identidades y accesos
Con las condiciones de gestión de identidades y accesos, puedes controlar el acceso a los recursos y las acciones de Cloud Deploy en función de las condiciones calculadas en el tiempo de ejecución. Por ejemplo, puedes restringir una promoción a un objetivo concreto para que solo se permita durante un periodo específico.
Acerca de los atributos de la API
Cuando creas condiciones de IAM, puedes hacer referencia a atributos de API para obtener información en tiempo de ejecución sobre una solicitud. Por ejemplo, puede usar un atributo de API para obtener el nombre del recurso al que se dirige la solicitud. Después, puedes compararlo con el recurso o los recursos a los que tiene acceso la principal.
Conceder acceso pormenorizado con funciones avanzadas de gestión de identidades y accesos
Estas funciones avanzadas de IAM te permiten controlar el acceso a recursos específicos y a tipos de recursos en condiciones concretas.
Los procedimientos de esta sección conceden acceso a recursos específicos (destinos y canales de distribución). También puedes conceder acceso a nivel de proyecto, lo que afecta a todos los canales de distribución o a todos los destinos de ese proyecto. Para definir una política de gestión de identidades y accesos en un proyecto, usa el comando gcloud projects set-iam-policy
:
gcloud projects set-iam-policy PROJECT_ID POLICY_FILE
Conceder acceso a una canalización de entrega específica
Puedes conceder permisos a una entidad de seguridad para crear, modificar y eliminar todas las canalizaciones de entrega. Para ello, solo tienes que concederle el rol adecuado. Sin embargo, en ocasiones, puede que quieras conceder este acceso a un principal para una o varias canalizaciones específicas.
Para ello, usa enlaces de rol para vincular el rol roles/clouddeploy.developer
con esa entidad principal. Después, cuando apliques la política (con setIamPolicy
), especifica a qué canal de distribución se concede el acceso.
Para conceder acceso a una canalización de entrega específica, sigue estos pasos:
Crea un archivo de política con la siguiente vinculación:
bindings: - role: roles/clouddeploy.developer members: - user:fatima@example.com
En el ejemplo anterior, se asigna el rol a un usuario, pero también puedes asignarlo 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 entrega específica:
gcloud deploy delivery-pipelines set-iam-policy --delivery-pipeline=PIPELINE_NAME --region=REGION POLICY_FILE
Conceder acceso para configurar un objetivo específico
Para conceder acceso a una cuenta principal a un destino específico, puedes usar vinculaciones de roles. Para ello, vincula el rol roles/clouddeploy.operator
con esa entidad principal y, a continuación, cuando apliques la política (con setIamPolicy
), especifica a qué destino se concede el acceso.
El acceso al objetivo específico permite a la entidad actualizarlo y eliminarlo.
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 asigna el rol a un grupo, pero también puedes asignarlo 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
Conceder permisos para promocionar una versión a un destino específico
En este procedimiento se da por hecho que ya hay una política que vincula el rol a la entidad principal. Aquí añadimos una condición que especifica el objetivo:
Crea un archivo de política con el siguiente enlace:
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 este enlace de rol,
condition
toma un par clave:valor, donde 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 entidad principal intenta promocionar la versión para confirmar que el destino de la promoción coincide con el destino de la expresión.
La expresión usa el atributo de API
clouddeploy.googleapis.com/rolloutTarget
, que es el objetivo al que el principal intenta ascender. La expresión compara el valor con el objetivo al que se le está dando acceso promocional a la entidad.Define la vinculación de un flujo de procesamiento de entrega específico:
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
Si quieres definir este enlace para todas las canalizaciones de distribución, puedes hacerlo a nivel de proyecto:
gcloud projects set-iam-policy PROJECT POLICY_FILE
Conceder permisos para aprobar lanzamientos a un objetivo específico
La vinculación de esta sección concede a un principal permiso para aprobar lanzamientos de una canalización e incluye una condición que aplica el permiso al prod
de destino.
Crea un archivo de política con el siguiente enlace:
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 este enlace de rol,
condition
toma un par clave:valor, donde 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 entidad principal intenta aprobar el lanzamiento para confirmar que el destino coincide con el destino de la expresión.
La expresión usa el atributo de API
clouddeploy.googleapis.com/rolloutTarget
, que es el destino del lanzamiento, y lo compara con el destino para el que se le está dando acceso de aprobación a la entidad principal. El atributoclouddeploy.googleapis.com/rolloutTarget
es el único atributo de API que admite Cloud Deploy.Define la vinculación de un flujo de procesamiento de entrega específico:
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
Si quieres definir este enlace para todas las canalizaciones de distribución, puedes hacerlo a nivel de proyecto:
gcloud projects set-iam-policy PROJECT POLICY_FILE
Conceder permisos para promocionar un lanzamiento durante un periodo concreto
La vinculación de esta sección concede a una cuenta principal permiso para promocionar versiones de una canalización e incluye una condición que especifica el periodo durante el que la vinculación está en vigor.
Crea un archivo de política con el siguiente enlace:
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 este enlace de rol,
condition
toma un par clave:valor, donde 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. Esta expresión comprueba que la hora de la solicitud sea de lunes a viernes.En este caso, la expresión se evalúa cuando la entidad principal intenta promocionar la versión para confirmar que el destino de la promoción coincide con el destino de la expresión.
Define la vinculación de un flujo de procesamiento de entrega específico:
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
Si quieres definir este enlace para todas las canalizaciones de distribución, puedes hacerlo a nivel de proyecto:
gcloud projects set-iam-policy PROJECT POLICY_FILE
Conceder permisos para aprobar lanzamientos durante un periodo específico
La vinculación de esta sección otorga a una cuenta principal permiso para aprobar lanzamientos e incluye una condición que especifica el periodo durante el cual la vinculación está en vigor.
Crea un archivo de política con el siguiente enlace:
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 este enlace de rol,
condition
toma un par clave:valor, donde 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 valor booleano. Esta expresión comprueba que la hora de la solicitud sea de lunes a viernes.En este caso, la expresión se evalúa cuando la entidad principal intenta aprobar la implementación para confirmar que el destino de la implementación coincide con el destino de la expresión.
Define la vinculación de un flujo de procesamiento de entrega específico:
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
Si quieres definir este enlace para todas las canalizaciones de distribución, puedes hacerlo a nivel de proyecto:
gcloud projects set-iam-policy PROJECT POLICY_FILE
Conceder permisos para reintentar un trabajo en función del tipo de trabajo
La vinculación de esta sección concede a un principal permiso para reintentar un trabajo de Cloud Deploy, en función del tipo de trabajo.
Crea un archivo de política con el siguiente enlace:
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 este enlace de rol,
condition
toma un par clave:valor, donde 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 entidad intenta volver a ejecutar 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
.Define la vinculación de un flujo de procesamiento de entrega específico:
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
Si quieres definir este enlace para todas las canalizaciones de distribución, puedes hacerlo a nivel de proyecto:
gcloud projects set-iam-policy PROJECT POLICY_FILE