En este documento se describen las cuentas de servicio que se usan para ejecutar Cloud Deploy y para llamar a Cloud Deploy para que ejecute 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 sustituir este agente de servicio por otra cuenta de servicio, pero sí puedes editar sus permisos. Por ejemplo, puedes hacerlo cuando utilices recursos fuera del proyecto (como una cuenta de servicio o un grupo de trabajadores privado de Cloud Build).
Cuenta de servicio de ejecución de Cloud Deploy
Cloud Deploy usa esta cuenta de servicio para ejecutar operaciones de renderizado y despliegue en Cloud Build. Esta cuenta necesita permisos suficientes para leer y escribir en el segmento de Cloud Storage, así como para acceder a los destinos de despliegue.
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 u otra cuenta de servicio. Consulta La cuenta de servicio de automatización para obtener más información sobre esta cuenta.
Consulta el artículo Crear y gestionar cuentas de servicio para obtener instrucciones sobre cómo editar los permisos de las cuentas 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 servicios de los que depende. Google Cloud Entre estos servicios se 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 elimina esta cuenta de tu proyecto, puedes volver a añadirla:
Abre la página IAM en la Google Cloud consola:
Selecciona Incluir concesiones de roles proporcionadas por Google para mostrar el agente de servicio.
Si se muestra el agente del servicio, puedes saltarte el resto de estos pasos.
Si no se muestra el agente del servicio, haz clic en Dar acceso.
En el campo Nuevos principales, introduce 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 un rol y selecciona Agente de servicio de Cloud Deploy.
Haz clic en Guardar.
Cuenta de servicio de ejecución de Cloud Deploy
De forma 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
Como esta cuenta de servicio se usa en muchos productos, puede tener permisos amplios. La práctica recomendada es cambiar el entorno de ejecución para que Cloud Deploy se ejecute como otra cuenta de servicio.
Puedes cambiar la cuenta de servicio de ejecución de cada destino mediante la propiedad executionConfigs.privatePool.serviceAccount
o la propiedad executionConfigs.defaultPool.serviceAccount
en la definición de destino.
Cualquier cuenta de servicio que definas para estas propiedades debe tener el rol Cloud Deploy Runner 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 tiempo de ejecución para desplegarse en el tiempo de ejecución que elijas. En el caso de Google Kubernetes Engine, puedes elegir los roles Desarrollador de contenedores y Usuario de cuenta de servicio. En Cloud Run, puedes elegir los roles Desarrollador de Cloud Run y Usuario de cuenta de servicio. Otros tiempos de ejecución usados por Custom Targets pueden requerir sus propios permisos.
Qué cuentas de servicio crear
Si decides no usar la cuenta de servicio de ejecución predeterminada para renderizar y desplegar, debes crear una o varias cuentas de servicio alternativas. Estas son las cuentas de servicio con las que se ejecuta Cloud Deploy y están configuradas en la configuración de destino.
Una de las razones para crear más de una es tener una cuenta de servicio específica o varias cuentas para implementar en destinos restringidos, como un destino de producción.
Una de las opciones es usar cuentas de servicio independientes para cada canal de distribución. Cada una de estas cuentas de servicio incluiría roles con permisos suficientes para renderizar y desplegar.
En el caso de los despliegues en Google Kubernetes Engine, puedes restringir la cuenta de servicio a un espacio de nombres.
Usar cuentas de servicio de otro proyecto
En tu entorno de ejecución, puedes especificar una cuenta de servicio que esté en un proyecto distinto de aquel en el que crees tu destino:
En el proyecto propietario de la cuenta de servicio, habilita la política de organización de cuentas de servicio entre proyectos.
Concede al agente de servicio (
service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com
) de Cloud Deploy el permisoiam.serviceAccounts.actAs
para tu cuenta de servicio.En este caso,
project-number
es el proyecto en el que has creado tu objetivo.También puedes conceder el rol
roles/iam.serviceAccountUser
, que incluye ese permiso, en el proyecto de cada cuenta de servicio que esté en un proyecto diferente al que se está ejecutando Cloud Deploy.Asigna el rol
service-<project-number>@gcp-sa-cloudbuild.iam.gserviceaccount.com
roles/iam.serviceAccountTokenCreator
al agente de servicio de Cloud Build.En este caso,
project-number
es el proyecto en el que has creado tu destino y este rol se concede en el proyecto de la cuenta de servicio.Debes conceder este rol a cada cuenta de servicio configurada en el entorno de ejecución de un destino si esa cuenta de servicio está en un proyecto diferente al que se está ejecutando Cloud Deploy.
Asigna al llamante de
gcloud deploy releases create
ygcloud deploy rollouts create
el permisoiam.serviceAccounts.actAs
en la cuenta de servicio o el rolroles/iam.serviceAccountUser
.
Permisos obligatorios
La cuenta de servicio que se usa para renderizar configuraciones debe tener permisos suficientes para acceder al segmento de Cloud Storage donde se almacenan tus recursos de Cloud Deploy (pipelines de entrega, versiones y lanzamientos).
El rol
roles/clouddeploy.jobRunner
incluye todos los permisos que necesita la cuenta de servicio de renderización (privatePool
odefaultPool
).La cuenta de servicio utilizada para el despliegue debe tener permisos suficientes para desplegarse en el clúster de destino y permiso para acceder al segmento 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 el permisoiam.serviceAccount.actAs
para usar la cuenta de servicio que renderiza los manifiestos (por ejemplo, a través del rolroles/iam.serviceAccountUser
).La cuenta de servicio que llama a Cloud Deploy para promover una versión o crear un
rollout
debe tener el permisoiam.serviceAccount.actAs
para usar la cuenta de servicio que se despliega en los destinos (por ejemplo, a través del rolroles/iam.serviceAccountUser
).La cuenta de servicio configurada para una automatización debe tener permiso para ejecutar las operaciones que se están automatizando. 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 use como cuenta de servicio de ejecución u otra cuenta de servicio.
Más información sobre la cuenta de servicio de automatización
Siguientes pasos
- Consulta información sobre IAM.
- Consulta información sobre los roles predefinidos de Cloud Deploy.
- Consulta cómo crear y gestionar cuentas de servicio.