En este documento, se describen las cuentas de servicio que se usan para ejecutar Cloud Deploy y llamarlo para ejecutar varias operaciones.
Cloud Deploy usa las siguientes cuentas de servicio:
El agente de servicio de Cloud Deploy
Cloud Deploy usa esta cuenta de servicio para interactuar con tu proyecto. No puedes reemplazar este agente de servicio por una cuenta de servicio alternativa, pero puedes editar los permisos en él, por ejemplo, cuando usas recursos fuera del proyecto (como una cuenta de servicio o un grupo de trabajadores privados de Cloud Build).
La cuenta de servicio de ejecución de Cloud Deploy
Cloud Deploy usa esta cuenta de servicio para ejecutar operaciones de renderización e implementación en Cloud Build. Esta cuenta necesita permisos suficientes para leer y escribir en el bucket de Cloud Storage y para acceder a los destinos de implementación.
La cuenta de servicio predeterminada para la ejecución es la cuenta de servicio predeterminada de Compute Engine. Puedes especificar una cuenta de servicio alternativa en la configuración de destino.
La cuenta de servicio de automatización de Cloud Deploy
Esta es la cuenta de servicio que usa Cloud Deploy para realizar automatizaciones. Puede ser la cuenta de servicio de ejecución predeterminada o cualquier otra cuenta de servicio. Consulta La cuenta de servicio de automatización para obtener más información sobre esta cuenta de servicio.
Consulta Crea y administra cuentas de servicio para obtener instrucciones sobre cómo editar los permisos de la cuenta de servicio y cómo crear una cuenta de servicio alternativa.
Agente de servicio de Cloud Deploy
El agente de servicio de Cloud Deploy es una cuenta de servicio que Cloud Deploy usa para interactuar con otros Google Cloud servicios en los que se basa Cloud Deploy. Estos servicios incluyen Cloud Build, Pub/Sub y Registros de auditoría de Cloud.
El nombre de esta cuenta de servicio sigue este patrón:
service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com
Si se quita esta cuenta de tu proyecto, puedes volver a agregarla:
Abre la página IAM en la Google Cloud consola:
Selecciona Incluir asignaciones de roles proporcionadas por Google para mostrar el agente de servicio.
Si se muestra el agente de servicio, puedes omitir el resto de estos pasos.
Si no se muestra el agente de servicio, haz clic en Otorgar acceso.
En el campo Principales nuevas , ingresa la dirección del agente de servicio con el siguiente formato:
service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com
Haz clic en la lista desplegable Seleccionar una función y selecciona Agente de servicio de Cloud Deploy.
Haz clic en Guardar.
Cuenta de servicio de ejecución de Cloud Deploy
Según la configuración predeterminada, Cloud Deploy se ejecuta con la cuenta de servicio predeterminada de Compute Engine.
El nombre de esta cuenta de servicio sigue este patrón:
[project-number]-compute@developer.gserviceaccount.com
Debido a que muchos productos usan esta cuenta de servicio, es posible que tenga permisos amplios. La práctica recomendada es cambiar tu entorno de ejecución para
que Cloud Deploy se ejecute como una cuenta de servicio diferente.
Puedes cambiar la cuenta de servicio de ejecución para cada
destino con
la propiedad executionConfigs.privatePool.serviceAccount o la
executionConfigs.defaultPool.serviceAccount propiedad en la
definición de destino.
Cualquier cuenta de servicio que establezcas para estas propiedades debe tener el rol de ejecutor de Cloud Deploy en el proyecto de Cloud Deploy. Si la cuenta de servicio de ejecución predeterminada no tiene este rol, ejecuta el siguiente comando:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:$(gcloud projects describe PROJECT_ID \
--format="value(projectNumber)")-compute@developer.gserviceaccount.com \
--role="roles/clouddeploy.jobRunner"
La cuenta de servicio también necesitará permisos específicos del entorno de ejecución para implementar en el entorno de ejecución elegido. Para Google Kubernetes Engine, puedes elegir los roles de desarrollador de contenedores y usuario de cuenta de servicio. Para Cloud Run, puedes elegir los roles de desarrollador de Cloud Run y usuario de cuenta de servicio. Otros entornos de ejecución que usan los destinos personalizados pueden requerir sus propios permisos.
Qué cuentas de servicio crear
Si decides no usar la cuenta de servicio de ejecución predeterminada para la renderización y la implementación, debes crear una o más cuentas de servicio alternativas para usar. Estas son las cuentas de servicio que ejecuta Cloud Deploy y que se configuran en la configuración de destino.
Un motivo para crear más de una sería tener una o más cuentas de servicio específicas para implementar en destinos restringidos, como un destino de producción.
Un enfoque posible es usar cuentas de servicio separadas por canalización de entrega. Cada cuenta de servicio de este tipo incluiría roles con permisos suficientes para renderizar y para implementar.
Para las implementaciones en Google Kubernetes Engine, puedes restringir la cuenta de servicio a un espacio de nombres.
Usa cuentas de servicio de otro proyecto
Para tu entorno de ejecución, puedes especificar una cuenta de servicio que esté en un proyecto diferente de aquel en el que creas tu destino:
En el proyecto que posee la cuenta de servicio, habilita la política de la organización de SA entre proyectos.
Otorga al agente de servicio de Cloud Deploy (
service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com) el permisoiam.serviceAccounts.actAspara tu cuenta de servicio.En este caso,
project-numberes el proyecto en el que creaste tu destino.También puedes otorgar el
roles/iam.serviceAccountUserrol, que incluye ese permiso, en el proyecto de cada cuenta de servicio que se encuentra en un proyecto diferente de aquel en el que se ejecuta Cloud Deploy.Otorga al agente de servicio de Cloud Build (
service-<project-number>@gcp-sa-cloudbuild.iam.gserviceaccount.com) elroles/iam.serviceAccountTokenCreatorrol.En este caso,
project-numberes el proyecto en el que creaste tu destino, y este rol se otorga en el proyecto de la cuenta de servicio.Debes otorgar este rol para cada cuenta de servicio configurada en el entorno de ejecución de un destino si esa cuenta de servicio está en un proyecto diferente de aquel en el que se ejecuta Cloud Deploy.
Otorga a la persona que llama a
gcloud deploy releases createygcloud deploy rollouts createiam.serviceAccounts.actAsel permiso en la cuenta de servicio, o elroles/iam.serviceAccountUserrol.
Permisos necesarios
La cuenta de servicio que se usa para las configuraciones de procesamiento debe tener permisos suficientes para acceder al bucket de Cloud Storage en el que se almacenan los recursos de Cloud Deploy (canalizaciones de entrega, versiones y lanzamientos).
El rol
roles/clouddeploy.jobRunnerincluye todos los permisos que necesita la cuenta de servicio de procesamiento (privatePoolodefaultPool).La cuenta de servicio que se usa para la implementación debe tener permisos suficientes para implementar en el clúster de destino y permiso para acceder al bucket de Cloud Storage.
La cuenta de servicio que llama a Cloud Deploy para crear una versión debe tener el rol
clouddeploy.releaser. También debe tener eliam.serviceAccount.actAspermiso para usar la cuenta de servicio que procesa los manifiestos (por ejemplo a través delroles/iam.serviceAccountUserrol).La cuenta de servicio que llama a Cloud Deploy para promover una versión o crear un
rolloutdebe tener el permisoiam.serviceAccount.actAspara usar la cuenta de servicio que implementa en los destinos (por ejemplo, a través delroles/iam.serviceAccountUserrol).La cuenta de servicio configurada para una automatización debe tener permiso para ejecutar las operaciones que se automatizan. Obtén más información.
La cuenta de servicio de automatización
Puedes automatizar algunas acciones en una versión. Cloud Deploy ejecuta estas automatizaciones con la cuenta de servicio de automatización, que puede ser la cuenta de servicio de ejecución predeterminada, una cuenta de servicio no predeterminada que se usa como cuenta de servicio de ejecución o cualquier otra cuenta de servicio.
Obtén más información sobre la cuenta de servicio de automatización.
¿Qué sigue?
- Obtén información sobre IAM.
- Obtén información sobre los roles predefinidos de Cloud Deploy.
- Comprende cómo crear y administrar cuentas de servicio.