En este documento, se describen las cuentas de servicio que se usan para ejecutar Cloud Deploy y llamar a Cloud Deploy 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 en un proyecto final. No puedes reemplazar este agente de servicio por un servicio alternativo cuenta, pero puedes editar sus permisos, por ejemplo, cuando usas recursos externos al proyecto (como una cuenta de servicio o una cuenta grupo de trabajadores de Cloud Build).
La cuenta de servicio de ejecución de Cloud Deploy
Cloud Deploy usa esta cuenta de servicio para ejecutar renderizaciones y implementar las operaciones en Cloud Build. Esta cuenta necesita permisos suficientes para leer y escribir en el bucket de Cloud Storage y en 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 del destino.
La cuenta de servicio de automatización de Cloud Deploy
Esta es la cuenta de servicio que usa Cloud Deploy para ejecutar automatizaciones. Esta puede ser la ejecución predeterminada cuenta de servicio u otra cuenta de servicio. Consulta La cuenta de servicio de automatización Obtén 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 servicios de Google Cloud que se usa en Cloud Deploy los datos en los que se basa. 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
No puedes reemplazar el agente de servicio por una cuenta de servicio alternativa. Pero tú necesitar agregar permisos, p. ej., para permitir el acceso a un grupo privado en a otro proyecto, configurado como parte de una entorno de ejecución.
Cuenta de servicio de ejecución de Cloud Deploy
De forma predeterminada, Cloud Deploy se ejecuta con el entorno predeterminado de Compute Engine cuenta de servicio. Esa cuenta de servicio tiene permisos suficientes en el proyecto que lo contiene para renderizar manifiestos y implementar en tus destinos.
El nombre de esta cuenta de servicio sigue este patrón:
[project-number]-compute@developer.gserviceaccount.com
Esta cuenta de servicio predeterminada tiene permisos amplios. La mejor práctica es
cambia tu entorno de ejecución para que
que Cloud Deploy ejecuta como una cuenta de servicio diferente.
Puedes cambiar la cuenta de servicio de ejecución para cada
target con
la propiedad executionConfigs.privatePool.serviceAccount
o
propiedad executionConfigs.defaultPool.serviceAccount
en
definición del objetivo.
Cualquier cuenta de servicio que configures para estas propiedades debe tener la
El rol roles/clouddeploy.jobRunner
en el proyecto de Cloud Deploy. Si el valor predeterminado
ejecución de la cuenta de servicio no tiene este permiso, 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"
Qué cuentas de servicio crear
Si eliges no usar la cuenta de servicio de ejecución predeterminada para el procesamiento y debes crear una o más cuentas de servicio alternativas para usarlas. Estas son cuentas de servicio con las que se ejecuta Cloud Deploy, y están establecido en la configuración de destino.
Un motivo para crear más de una sería tener una cuenta de servicio específica o cuentas para realizar implementaciones en destinos restringidos, como uno de producción.
Un enfoque posible es usar cuentas de servicio separadas por canalización de entrega. Cada cuenta de servicio incluiría roles con permisos suficientes para para renderizar e implementar.
Para las implementaciones en Google Kubernetes Engine, puedes restringe la cuenta de servicio a un espacio de nombres.
Usa cuentas de servicio de un proyecto diferente
Para tu entorno de ejecución, puedes especificar una cuenta de servicio que está en un proyecto diferente del que de destino:
En el proyecto al que pertenece la cuenta de servicio, habilita la SA entre proyectos. política de la organización.
Otorga al agente de servicio de Cloud Deploy (
service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com
) eliam.serviceAccounts.actAs
para tu cuenta de servicio.En este caso,
project-number
es el proyecto en el que creaste tu objetivo.También puedes otorgar el permiso
roles/iam.serviceAccountUser
. que incluye ese permiso, en el proyecto y en cada servicio que está en un proyecto diferente de aquel en el que Se está ejecutando Cloud Deploy.Otorga al agente de servicio de Cloud Build (
service-<project-number>@gcp-sa-cloudbuild.iam.gserviceaccount.com
) el Rolroles/iam.serviceAccountTokenCreator
.En este caso,
project-number
es el proyecto en el que creaste tu destino, y este rol se otorga en el servicio proyecto de la cuenta.Debes otorgar este rol a cada cuenta de servicio configurada en la dirección entorno de ejecución si esa cuenta de servicio está en un proyecto diferente del en el que se ejecuta Cloud Deploy.
Otorga al llamador de
gcloud deploy releases create
ygcloud deploy rollouts create
el permisoiam.serviceAccounts.actAs
en la cuenta de servicio. oroles/iam.serviceAccountUser
en el área de la seguridad en la nube.
Permisos necesarios
La cuenta de servicio que se usa para renderizar la configuración debe tener suficientes permisos para acceder al bucket de Cloud Storage en el que se encuentra se almacenan recursos (canalizaciones de entrega, versiones y lanzamientos).
El rol
roles/clouddeploy.jobRunner
incluye todos los permisos que necesita la cuenta de servicio de procesamiento (privatePool
odefaultPool
).La cuenta de servicio que se usa en la implementación debe tener los permisos suficientes para implementar en el clúster de destino y el 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.actAs
. permiso para usar la cuenta de servicio que renderiza manifiestos (por ejemplo, a través deroles/iam.serviceAccountUser
de seguridad en la nube).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 implementa en los destinos (por ejemplo, a través de laroles/iam.serviceAccountUser
de seguridad en la nube).La cuenta de servicio configurada para una operación de automatización. debe tener permiso para ejecutar las operaciones que se están automatizando. 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 usando la cuenta de servicio de automatización, que puede ser de ejecución, una cuenta de servicio no predeterminada que se usa como cuenta cuenta de servicio u 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 más información sobre los roles predefinidos de Cloud Deploy.
- Aprende a crear y administrar cuentas de servicio.