Cuentas de servicio de Cloud Deploy

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:

  1. Abre la página IAM en la Google Cloud consola:

    Abre la página Gestión de identidades y accesos.

  2. 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.

  3. Si no se muestra el agente del servicio, haz clic en Dar acceso.

  4. En el campo Nuevos principales, introduce la dirección del agente de servicio con el siguiente formato:

    1. service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com
  5. Haz clic en la lista desplegable Seleccionar un rol y selecciona Agente de servicio de Cloud Deploy.

  6. 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:

  1. En el proyecto propietario de la cuenta de servicio, habilita la política de organización de cuentas de servicio entre proyectos.

  2. Concede al agente de servicio (service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com) de Cloud Deploy el permiso iam.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.

  3. Asigna el rol service-<project-number>@gcp-sa-cloudbuild.iam.gserviceaccount.comroles/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.

  4. Asigna al llamante de gcloud deploy releases create y gcloud deploy rollouts create el permiso iam.serviceAccounts.actAs en la cuenta de servicio o el rol roles/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 o defaultPool).

  • 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 permiso iam.serviceAccount.actAs para usar la cuenta de servicio que renderiza los manifiestos (por ejemplo, a través del rol roles/iam.serviceAccountUser ).

  • La cuenta de servicio que llama a Cloud Deploy para promover una versión o crear un rollout debe tener el permiso iam.serviceAccount.actAs para usar la cuenta de servicio que se despliega en los destinos (por ejemplo, a través del rol roles/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