Roles y permisos para destinos de Workflows

En este documento, se muestra cómo otorgar roles y permisos de Identity and Access Management (IAM) para colaborar con el enrutamiento de eventos desde Google Cloud Platform y otras fuentes a los flujos de trabajo de destino mediante Eventarc.

  1. Otorga permisos de todo el proyecto al principal que invoca las APIs de Eventarc (por ejemplo, el creador del activador de Eventarc):

    1. El rol Administrador de Eventarc te permite tener control total sobre todos los recursos de Eventarc, incluida la especificación de una cuenta de servicio para el activador cuando la creas.
    2. El rol de usuario de cuenta de servicio permite que una principal use la identidad de una cuenta de servicio. La cuenta de servicio está asociada con un activador de Eventarc y representa la identidad del activador.
  2. Otorga permisos de activador de Eventarc a la cuenta de servicio del activador:

    1. El rol de receptor de eventos de Eventarc permite que el activador de Eventarc reciba eventos de proveedores de eventos. No es necesario otorgar el rol si enrutas eventos directos desde Cloud Pub/Sub.
    2. El rol Invocador de flujos de trabajo permite que el activador de Eventarc inicie la ejecución de un flujo de trabajo.
  3. Otorga permisos a los agentes de servicio de Google:

    1. Si creas un activador para eventos directos desde Cloud Storage, otorga el rol de publicador de Pub/Sub.
    2. Si habilitaste el agente de servicio de Cloud Pub/Sub el 8 de abril de 2021 o antes de esa fecha, otorga el rol de creador de tokens de cuenta de servicio.

Para obtener más información sobre cómo otorgar roles de IAM, consulta Administra el acceso. También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.

Otorga permisos en todo el proyecto

Si eres el creador del proyecto, se te otorga el rol de propietario básico (roles/owner). De forma predeterminada, este rol incluye los permisos necesarios para obtener acceso completo a la mayoría de los recursos de Google Cloud. De lo contrario, un administrador debe otorgar los roles necesarios en el recurso apropiado a la principal apropiada (también conocida como miembro).

Por ejemplo, una principal puede ser una Cuenta de Google (para usuarios finales) o una cuenta de servicio (para aplicaciones y cargas de trabajo de procesamiento). Cada principal tiene su propio identificador, que suele ser una dirección de correo electrónico.

  1. El rol de administrador de Eventarc (roles/eventarc.admin) te permite tener control total sobre todos los recursos de Eventarc.

    Otorga el rol en el proyecto:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=PRINCIPAL \
        --role=roles/eventarc.admin

    Reemplaza lo siguiente:

    • PROJECT_ID: tu ID del proyecto de Google Cloud.
    • PRINCIPAL: un identificador para el creador del activador que, por lo general, tiene el siguiente formato: PRINCIPAL_TYPE:ID. Por ejemplo, user:my-user@example.com. Si deseas obtener una lista completa de los valores PRINCIPAL_TYPE posibles, consulta la referencia sobre la vinculación de políticas.
  2. El rol de usuario de la cuenta de servicio (roles/iam.serviceAccountUser) permite que una principal ejecute operaciones como una cuenta de servicio.

    Cuando creas un activador de Eventarc o cuando implementas un flujo de trabajo, necesitas este rol para asociar una cuenta de servicio administrada por el usuario con el activador o flujo de trabajo, y que represente su identidad. Si deseas obtener más información, consulta Roles para la autenticación de cuentas de servicio.

    Puedes otorgar el rol en el proyecto para permitir que la principal use la identidad de varias cuentas de servicio o puedes otorgar el rol en la cuenta de servicio para permitir que la principal actúe en nombre de una cuenta de servicio específica.

    Otorga el rol en el proyecto:

    gcloud projects add-iam-policy-binding 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 \
        projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \
        --member=PRINCIPAL \
        --role=roles/iam.serviceAccountUser

    Reemplaza lo siguiente:

    • SERVICE_ACCOUNT_PROJECT_ID: el ID del proyecto de Google Cloud que contiene la cuenta de servicio.
    • SERVICE_ACCOUNT_NAME: el nombre de la cuenta de servicio

Otorga permisos de activador de Eventarc

Cada activador de Eventarc se asocia a una cuenta de servicio de IAM en el momento en que se crea el activador. Puedes especificar una cuenta de servicio administrada por el usuario que el activador use como su identidad predeterminada. Si no especificas una cuenta de servicio durante la creación del activador, este usa la cuenta de servicio predeterminada de Compute Engine para su identidad.

Te recomendamos crear tu propia cuenta de servicio administrada por el usuario para tener mayor control y flexibilidad cuando administres tu activador.

  1. Crea una cuenta de servicio y anota su nombre:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \
        --description="DESCRIPTION" \
        --display-name="DISPLAY_NAME"

    Reemplaza lo siguiente:

    • SERVICE_ACCOUNT_NAME: el nombre de la cuenta de servicio Este nombre aparecerá en la dirección de correo electrónico que identifica la cuenta de servicio.
    • DESCRIPTION: una descripción opcional del servicio
    • DISPLAY_NAME: Es un nombre de cuenta de servicio que se mostrará en la consola de Google Cloud.
  2. Otorga el rol de receptor de eventos de Eventarc (roles/eventarc.eventReceiver) en el proyecto a la cuenta de servicio asociada con tu activador de Eventarc para que pueda recibir eventos de proveedores de eventos.

    Ten en cuenta que no necesitas otorgar el rol de receptor de eventos de Eventarc si enrutas eventos directos desde Cloud Pub/Sub.

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/eventarc.eventReceiver

    Reemplaza SERVICE_ACCOUNT_NAME por el nombre de tu cuenta de servicio que anotaste en el paso anterior.

  3. Otorga el rol de invocador de flujos de trabajo (roles/workflows.invoker) en el proyecto a la cuenta de servicio asociada con tu activador de Eventarc para que pueda iniciar la ejecución del flujo de trabajo. .

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/workflows.invoker

    Reemplaza SERVICE_ACCOUNT_NAME por el nombre de tu cuenta de servicio que anotaste antes.

Otorga permisos a los agentes de servicio de Google

Algunos servicios de Google Cloud tienen agentes de servicio que permiten que los servicios accedan a tus recursos. Si una API requiere un agente de servicio, Google crea el agente de servicio después de que activas y usas la API.

  1. Si creas un activador para eventos directos desde Cloud Storage, para admitir la publicación de mensajes en un tema, otorga el rol de publicador de Pub/Sub (roles/pubsub.publisher) en el proyecto al agente de servicio de Cloud Storage:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com \
        --role=roles/pubsub.publisher

    Reemplaza PROJECT_NUMBER por el número de proyecto de Google Cloud. Para encontrar el número del proyecto, ve a la página de bienvenida de la consola de Google Cloud o ejecuta el siguiente comando:

    gcloud projects describe PROJECT_ID --format='value(projectNumber)'
  2. Si habilitaste el agente de servicio de Cloud Pub/Sub el 8 de abril de 2021 o antes de esa fecha, para admitir solicitudes de envío de Pub/Sub autenticadas, otorga el rol de creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator) en el proyecto al agente de servicio de Pub/Sub. De lo contrario, este rol se otorga de forma predeterminada:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \
        --role=roles/iam.serviceAccountTokenCreator

¿Qué sigue?