Roles y permisos para destinos de Google Kubernetes Engine (GKE)

En este documento, se muestra cómo otorgar roles y permisos de Identity and Access Management (IAM) para admitir eventos de enrutamiento usando Eventarc desde Google Cloud y otras fuentes a destinos de GKE, incluidos los extremos públicos de servicios privados y públicos que se ejecutan en un clúster de GKE.

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

    1. El rol de 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 de suscriptor de Pub/Sub permite que tu activador de Eventarc consuma mensajes de Pub/Sub y adjunte suscripciones a un tema.
    3. El rol de escritor de métricas de Monitoring permite que el servidor de reenvío de eventos de Eventarc escriba métricas usando Cloud Monitoring y otros sistemas que proporcionan métricas.
  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, necesitas este rol para poder asociar una cuenta de servicio administrada por el usuario con el activador 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 suscriptor de Pub/Sub (roles/pubsub.subscriber) en el proyecto a la cuenta de servicio asociada con tu activador de Eventarc, para que pueda consumir mensajes de Pub/Sub y adjuntar suscripciones a un tema.

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

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

  4. Otorga el rol de escritor de métricas de Monitoring (roles/monitoring.metricWriter) en el proyecto a la cuenta de servicio asociada con tu activador de Eventarc para que el servidor de reenvío de eventos de Eventarc pueda escribir métricas usando Cloud Monitoring y otros sistemas que proporcionan métricas.

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

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?