Workflows usa cuentas de servicio para brindar el acceso a los flujos de trabajo a los recursos de Google Cloud. Las cuentas de servicio son cuentas especiales que actúan como la identidad de una entidad que no es una persona, como una función, una aplicación o una VM. Te brindan una forma de autenticar a las entidades que no son personas. R de servicio pueden considerarse tanto una identidad como un recurso.
Cuando una cuenta de servicio se considera una identidad, puedes otorgar un rol a una cuenta de servicio, lo que le permite acceder a un recurso (como un flujo de trabajo).
Cuando piensas en una cuenta de servicio como un recurso, puedes otorgar roles a que otros usuarios accedan a esa cuenta de servicio o la administren.
Una cuenta de servicio se identifica por su dirección de correo electrónico, que es única a la cuenta.
Para obtener más información sobre cómo configurar la autenticación con una aplicación de producción, consulta Cómo autenticarse como una cuenta de servicio.
Cuenta de servicio predeterminada
Cada flujo de trabajo se asocia con un servicio de Identity and Access Management (IAM) en el momento en que se crea el flujo de trabajo. Si no especificas una cuenta de servicio durante la creación del flujo de trabajo, este usa la cuenta de servicio predeterminada de Compute Engine para su identidad. Puedes verificar la cuenta de servicio asociada de un flujo de trabajo. En este documento, consulta Cómo verificar la cuenta de servicio asociada de un flujo de trabajo.
Recomendamos usar la cuenta de servicio predeterminada para las pruebas y el desarrollo. únicamente. Para los entornos de producción, recomendamos crear una cuenta de servicio nueva y otorgarle uno o más roles de IAM que contengan los permisos mínimos necesarios para administrar flujos de trabajo.
Los únicos roles que requiere tu cuenta de servicio son los necesarios para acceder a los recursos orquestados por tus flujos de trabajo. Para obtener más información, en esta documento, consulta Permisos de la cuenta de servicio.
Permisos de las cuentas de servicio
Debido a que las cuentas de servicio son identidades, puedes permitir que una cuenta de servicio acceda a los recursos de tu proyecto si le otorgas una función, al igual que lo harías con cualquier otra principal. Por ejemplo, si quieres permitir que tu flujo de trabajo envíe registros
Cloud Logging, asegúrate de que la cuenta de servicio que ejecuta el flujo de trabajo tenga
un rol que incluya el permiso logging.logEntries.create
(por ejemplo, el rol Logs Writer
). En general, los roles que requiere tu
de servicio dependen de los recursos que organices con tu
en los flujos de trabajo. Para determinar qué roles se requieren, revisa el producto
documentación para el recurso que estás organizando o
elegir roles predefinidos.
Ten en cuenta que la cuenta de servicio del flujo de trabajo no requiere el elemento workflows.invoker
.
a menos que el flujo de trabajo se invoque a sí mismo o a otros flujos de trabajo (es decir,
nuevas ejecuciones de flujos de trabajo). Para obtener más información, consulta Cómo invocar Workflows.
Para obtener más información sobre cómo otorgar roles a las principales, incluidas las cuentas de servicio, consulta Administra el acceso a los proyectos, las carpetas y las organizaciones.
Conecta cuentas de servicio a recursos
Si quieres crear un recurso y conectar una cuenta de servicio, necesitas permisos para
cree el recurso y le adjunta la cuenta de servicio.
Cualquier rol que incluya el permiso iam.serviceAccounts.actAs
proporciona el permiso para conectar la cuenta de servicio a un recurso.
Si deseas obtener más información, consulta Roles para la autenticación de cuentas de servicio.
Invoca funciones de Cloud Run (2ª gen..)
En las funciones de Cloud Run (2ª gen.), los permisos de invocación están disponibles mediante la administración
del servicio subyacente de Cloud Run. Si tu flujo de trabajo invoca un
Cloud Run (2ª gen..), no es necesario que otorgues
a la cuenta de servicio del emisor. El invocador de Cloud Run Functions
(roles/cloudfunctions.invoker
). En su lugar, debes otorgar el acceso
Rol de Invocador de Cloud Run (roles/run.invoker
).
Para obtener más información, consulta Comparación de versiones de funciones de Cloud Run.
Implementa un flujo de trabajo con una cuenta de servicio personalizada
Puedes crear tu propia cuenta de servicio administrada por el usuario para brindarte mayor flexibilidad en el control del acceso a tu flujo de trabajo.
Crea una cuenta de servicio y anota su nombre:
Otorga la cuenta de servicio los roles apropiados según los recursos a los que debe acceder el flujo de trabajo para hacer su trabajo.
Asegúrate de que todas las principales que implementan flujos de trabajo tengan la capacidad de adjuntar la cuenta de servicio a los recursos. Si creaste la cuenta de servicio, se te otorga este permiso de forma automática. Para obtener más información, consulta Roles para autenticación de cuenta de servicio.
Si quieres obtener el permiso que necesitas para conectar una cuenta de servicio a un recurso, solicita a tu administrador que te otorgue el Es el rol de IAM de usuario de cuenta de servicio (
roles/iam.serviceAccountUser
) en tu proyecto o la cuenta de servicio. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.Este rol predefinido contiene el permiso
iam.serviceAccounts.actAs
, que se requiere para conectar una cuenta de servicio a un recurso.También puedes obtener este permiso con roles personalizados o con otros roles predefinidos.
Otorga el rol en el proyecto:
gcloud projects add-iam-policy-binding WORKFLOWS_PROJECT_ID \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
O bien, otorga el rol en la cuenta de servicio:
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_RESOURCE_NAME \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
Reemplaza lo siguiente:
WORKFLOWS_PROJECT_ID
: El ID de tu proyecto de Google Cloud que contiene los recursos del flujo de trabajoPRINCIPAL
: Es un identificador para el implementador del flujo de trabajo. en el formatouser|group|serviceAccount:email
odomain:domain
Por ejemplo:user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
SERVICE_ACCOUNT_RESOURCE_NAME
: Es el nombre completo del recurso de la cuenta de servicio. Por ejemplo:projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com
Aquí:
SERVICE_ACCOUNT_PROJECT_ID
es Google Cloud el ID del proyecto que contiene la cuenta de servicio.SERVICE_ACCOUNT_NAME
es el nombre de la cuenta de servicio.
Implementa tu flujo de trabajo con la cuenta de servicio personalizada.
Implementa un flujo de trabajo con una cuenta de servicio entre proyectos
De forma predeterminada, no puedes crear una cuenta de servicio en un proyecto y conectarla a un recurso en otro proyecto. En las siguientes instrucciones, se muestra cómo conectar una cuenta de servicio de un proyecto a un flujo de trabajo de otro proyecto. Luego, puedes usar la cuenta de servicio en diferentes proyectos para implementar un flujo de trabajo.
Si la cuenta de servicio y los recursos del flujo de trabajo están en proyectos diferentes desde el proyecto en el que se encuentra la cuenta de servicio, completa lo siguiente:
En la consola de Google Cloud, ve a la página Políticas de la organización:
Ir a Políticas de la organización
Verifica la política de la organización del proyecto y asegurarte de que el La restricción booleana
iam.disableCrossProjectServiceAccountUsage
no es para el proyecto. Si deseas obtener más información, consulta Habilita cuentas de servicio para conectarlas entre proyectos.Crea una cuenta de servicio y anota su nombre:
Otorga a la cuenta de servicio los roles adecuados, en función de los recursos a los que debe acceder el flujo de trabajo para realizar su trabajo.
Otorga el rol de creador de tokens de cuenta de servicio (
roles/iam.serviceAccountTokenCreator
) al agente de servicio de Workflows. Esto permite que el agente de servicio administre el acceso entre proyectos de la cuenta de servicio. Un agente de servicio es la identidad de un servicio de Google Cloud determinado para un proyecto en particular. Para obtener más información, consulta Agentes de servicio.Console
En la consola de Google Cloud, ve a la página Flujos de trabajo:
Haz clic en
. Crear para crear un flujo de trabajo o seleccionar el nombre del flujo de trabajo que que quieres actualizar.En la lista Cuenta de servicio, haz clic en Cambiar de proyecto.
Selecciona una cuenta de servicio de un proyecto diferente.
Si se te solicita, otorga el rol
roles/iam.serviceAccountTokenCreator
a el agente de servicio de Workflows.
gcloud
Otorga el rol
roles/iam.serviceAccountTokenCreator
a la Agente de servicio de Workflows:gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_RESOURCE_NAME \ --member='serviceAccount:service-WORKFLOWS_PROJECT_NUMBER@gcp-sa-workflows.iam.gserviceaccount.com' \ --role='roles/iam.serviceAccountTokenCreator'
Reemplaza lo siguiente:
SERVICE_ACCOUNT_RESOURCE_NAME
: El nombre completo del recurso de la cuenta de servicio. Por ejemplo:projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com
Aquí:
SERVICE_ACCOUNT_PROJECT_ID
es el ID del proyecto de Google Cloud que contiene la cuenta de servicio.SERVICE_ACCOUNT_NAME
es el nombre del cuenta de servicio.
WORKFLOWS_PROJECT_NUMBER
: Es el número del proyecto de Google Cloud que contiene los recursos del flujo de trabajo.
Asegúrate de que todas las principales que implementan flujos de trabajo tengan la capacidad de adjuntar la cuenta de servicio a los recursos. Si creaste la cuenta de servicio, puedes se otorgó este permiso automáticamente. Para obtener más información, consulta Roles para la autenticación de cuentas de servicio.
Para obtener el permiso que necesitas para conectar una cuenta de servicio a un recurso, pídele a tu administrador que te otorgue el rol de IAM de Usuario de cuenta de servicio (
roles/iam.serviceAccountUser
) en tu proyecto o la cuenta de servicio. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.Este rol predefinido contiene las
iam.serviceAccounts.actAs
permiso, que se requiere para conectar una cuenta de servicio a un recurso.También puedes obtener este permiso con roles personalizados o con otros roles predefinidos.
Console
En la consola de Google Cloud, ve a Workflows página:
Haz clic en
Crear para crear un flujo de trabajo o selecciona el nombre del flujo de trabajo que deseas actualizar.En la lista Cuenta de servicio, haz clic en Cambiar de proyecto.
Selecciona una cuenta de servicio de un proyecto diferente.
Si se te solicita, otorga el rol
roles/iam.serviceAccountUser
al proyecto.
gcloud
Otorga el rol en el proyecto:
gcloud projects add-iam-policy-binding WORKFLOWS_PROJECT_ID \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
O bien, otorga el rol en la cuenta de servicio:
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_RESOURCE_NAME \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
Reemplaza lo siguiente:
WORKFLOWS_PROJECT_ID
: El ID de tu proyecto de Google Cloud que contiene los recursos del flujo de trabajoPRINCIPAL
: Es un identificador para el implementador del flujo de trabajo en el formatouser|group|serviceAccount:email
odomain:domain
. Por ejemplo:user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
SERVICE_ACCOUNT_RESOURCE_NAME
: El nombre completo del recurso de la cuenta de servicio. Por ejemplo:projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com
Aquí:
SERVICE_ACCOUNT_PROJECT_ID
es el ID del proyecto de Google Cloud que contiene la cuenta de servicio.SERVICE_ACCOUNT_NAME
es el nombre del cuenta de servicio.
Implementa tu flujo de trabajo con la cuenta de servicio entre proyectos.
Verifica la cuenta de servicio asociada con un flujo de trabajo
Puedes verificar qué cuenta de servicio está asociada con un flujo de trabajo en particular.
Console
En la consola de Google Cloud, ve a la página Workflows.
En la página Flujos de trabajo, haz clic en el flujo de trabajo. de la fuente de datos.
En la página Detalles del flujo de trabajo, haz clic en la pestaña Detalles.
Se muestra la cuenta de servicio asociada al flujo de trabajo.
gcloud
Abre una terminal.
Ingresa el siguiente comando:
gcloud workflows describe MY_WORKFLOW
Reemplaza
MY_WORKFLOW
por el nombre de tu flujo de trabajo.Se incluye una descripción completa del flujo de trabajo que incluye la cuenta de servicio asociada que se devuelven. Por ejemplo:
createTime: '2020-06-05T23:45:34.154213774Z' name: projects/myProject/locations/us-central1/workflows/myWorkflow serviceAccount: projects/my-project/serviceAccounts/012345678901-compute@developer.gserviceaccount.com sourceContents: [...]