Usa Workload Identity

Aprende a autenticar tus servicios de Cloud Run for Anthos con Workload Identity para acceder a las API de Google Cloud, como las API de Compute, Storage y Database. API de aprendizaje automático o de aprendizaje automático.

Para autenticar tus servicios de Cloud Run for Anthos, debes hacer lo siguiente:

  1. Habilita Workload Identity en tu clúster
  2. Configura permisos
  3. Vincula tu cuenta de servicio de Kubernetes (KSA) a una cuenta de servicio de Google (GSA)

Después de seguir estos pasos, puedes implementar un nuevo servicio de Cloud Run for Anthos que use la Workload Identity que creaste.

Habilita Workload Identity en tu clúster

Para configurar Workload Identity con Cloud Run for Anthos, puedes configurar Workload Identity de flota en lugar de usar un archivo JSON de cuenta de servicio de Google Cloud.

Configura los permisos para habilitar todas las métricas con Workload Identity

Para habilitar métricas, como el recuento de solicitudes de informes o la latencia de las solicitudes a la observabilidad de Google Cloud, debes otorgar permisos de escritura para Cloud Monitoring. Por ejemplo, puedes otorgar el rol de escritor de métricas de Monitoring (roles/monitoring.metricWriter) a la cuenta de servicio de Google asociada con Cloud Run for Anthos, ya que incluye los permisos necesarios para escribir datos de supervisión. Consulta Cómo usar cuentas de servicio para obtener más información sobre cómo crear cuentas de servicio de Google.

Vincula cuentas de servicio

Debes configurar una relación para una cuenta de servicio de Kubernetes (KSA) a fin de que actúe como una cuenta de servicio de Google (GSA). Cualquier carga de trabajo que se ejecute como KSA que vincules se autenticará de forma automática como GSA cuando se acceda a las API de Google Cloud. La KSA que vinculas debe existir dentro del clúster y el espacio de nombres del servicio de Cloud Run for Anthos para el que deseas usar Workload Identity. Además, puede pertenecer a un proyecto de Google Cloud diferente del proyecto de Google Cloud en el que reside el clúster.

  1. Si no existe una GSA, crea una; de lo contrario, continúa con el siguiente paso. Puedes crear una GSA para usar con Cloud Run for Anthos dentro de cualquier proyecto de Google Cloud en tu organización y, luego, usarla desde el proyecto de Google Cloud en el que se ejecutan los servicios de Cloud Run for Anthos.

    Para crear una nueva GSA, ejecuta el siguiente comando:

    gcloud iam service-accounts create GSA_NAME

    Reemplaza GSA_NAME con el nombre de la nueva cuenta de servicio de Google.

    Para obtener más información sobre el uso de las cuentas de servicio de Google con tus servicios de Cloud Run for Anthos, consulta Usa cuentas de servicio.

  2. Asegúrate de que tu GSA tenga las funciones de IAM que necesitas. Puedes otorgar funciones adicionales con el siguiente comando:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "serviceAccount:GSA_NAME@PROJECT_ID.iam.gserviceaccount.com" \
        --role "ROLE_NAME"
    

    Reemplaza lo siguiente:

    • PROJECT_ID por el ID del proyecto de Google Cloud en el que reside la cuenta de servicio de Google.
    • GSA_NAME: es el nombre de tu cuenta de servicio de Google.
    • ROLE_NAME: por la función de IAM para asignar a tu GSA, como roles/monitoring.metricWriter.
  3. Si no existe una cuenta de servicio de Kubernetes (KSA), crea una en el mismo espacio de nombres de Kubernetes que tu servicio de Cloud Run for Anthos. De lo contrario, continúa con el siguiente paso:

    kubectl create serviceaccount --namespace K8S_NAMESPACE KSA_NAME
  4. Vincula las cuentas de servicio de Kubernetes y Google para crear Workload Identity y, luego, impleméntala en el clúster:

    1. Para permitir que la KSA actúe en nombre de GSA, crea una vinculación de política de IAM entre las dos.

      gcloud iam service-accounts add-iam-policy-binding \
      --role roles/iam.workloadIdentityUser \
      --member "serviceAccount:PROJECT_ID.svc.id.goog[K8S_NAMESPACE/KSA_NAME]" \
      GSA_NAME@GSA_PROJECT_ID.iam.gserviceaccount.com

      Reemplaza lo siguiente:

      • PROJECT_ID por el ID del proyecto de Google Cloud para el clúster en el que residen tu cuenta de servicio de Kubernetes y los servicios de Cloud Run for Anthos.
      • K8S_NAMESPACE/KSA_NAME por el espacio de nombres y el nombre de tu cuenta de servicio de Kubernetes
      • GSA_NAME@GSA_PROJECT_ID por el nombre de tu cuenta de servicio de Google y el ID del proyecto de Google Cloud. Puedes usar cualquier cuenta de servicio de Google en la organización. Para ver tus cuentas de servicio de Google, consulta Enumera cuentas de servicio.
    2. Agrega la anotación iam.gke.io/gcp-service-account=GSA_NAME@GSA_PROJECT_ID a la KSA con la dirección de correo electrónico de la GSA.

      kubectl annotate serviceaccount \
      --namespace K8S_NAMESPACE KSA_NAME \
       iam.gke.io/gcp-service-account=GSA_NAME@GSA_PROJECT_ID.iam.gserviceaccount.com

      Reemplaza lo siguiente:

      • K8S_NAMESPACE/KSA_NAME por el espacio de nombres y el nombre de la cuenta de servicio de Kubernetes para la que creaste una vinculación
      • GSA_NAME@GSA_PROJECT_ID por el nombre de tu cuenta de servicio de Google y el ID del proyecto de Google Cloud para el que creaste una vinculación.

Implementa un servicio nuevo para usar Workload Identity

Implementa un nuevo servicio de Cloud Run for Anthos que use Workload Identity que creaste.

Console

  1. Ve a Cloud Run for Anthos en la consola de Google Cloud:

    Ir a Cloud Run for Anthos

  2. Haz clic en Crear servicio si quieres configurar un servicio nuevo en el que realizarás la implementación. Si quieres configurar un servicio existente, haz clic en el servicio y, luego, haz clic en IMPLEMENTAR Y EDITAR UNA NUEVA REVISIÓN.

  3. En Configuración avanzada, haz clic en Contenedor.

    imagen

  4. Haz clic en el menú desplegable Service account (Cuenta de servicio) y selecciona la cuenta de servicio que deseas.

  5. Haz clic en Siguiente para pasar a la siguiente sección.

  6. En la sección Configura la forma en que se activa el servicio, selecciona la conectividad que deseas usar para invocar el servicio.

  7. Haz clic en Crear para implementar la imagen en Cloud Run for Anthos y espera a que termine la implementación.

Línea de comandos

  • Para servicios existentes, configura la cuenta de servicio de Kubernetes mediante la ejecución del comando gcloud run services update con los siguientes parámetros:

    gcloud run services update SERVICE --service-account KSA_NAME
    

    Reemplaza lo siguiente:

    • SERVICE por el nombre de tu servicio de Cloud Run for Anthos
    • KSA_NAME por la cuenta de servicio de Kubernetes que usaste para crear Workload Identity.
  • Para servicios nuevos, configura la cuenta de servicio de Kubernetes mediante la ejecución del comando gcloud run deploy con el parámetro --service-account:

    gcloud run deploy --image IMAGE_URL --service-account KSA_NAME
    

    Reemplaza lo siguiente:

    • IMAGE_URL por una referencia a la imagen del contenedor, como gcr.io/cloudrun/hello
    • KSA_NAME por la cuenta de servicio de Kubernetes que usaste para crear Workload Identity.

YAML

Puedes descargar la configuración de un servicio existente en un archivo YAML con el comando gcloud run services describe mediante la marca --format=export. Luego, puedes modificar ese archivo YAML e implementar esos cambios con el comando gcloud run services replace. Debes asegurarte de modificar solo los atributos especificados.

  1. Descarga la configuración del servicio en un archivo llamado service.yaml en el lugar de trabajo local:

    gcloud run services describe SERVICE --format export > service.yaml

    Reemplaza SERVICE por el nombre de tu servicio de Cloud Run for Anthos.

  2. En tu archivo local, actualiza el atributo serviceAccountName::

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        spec:
          serviceAccountName: KSA_NAME
    

    Reemplazar

    • SERVICE por el nombre de tu servicio de Cloud Run for Anthos
    • KSA_NAME por la cuenta de servicio de Kubernetes que usaste para crear Workload Identity.
  3. Para implementar la configuración en el servicio de Cloud Run for Anthos, ejecuta el siguiente comando:

    gcloud run services replace service.yaml

Migra servicios existentes para usar Workload Identity

Si habilitaste Workload Identity en un clúster existente, se debe migrar cada servicio en ese clúster para el que desees usar Workload Identity. Obtén más información para migrar servicios existentes.

Próximos pasos

Obtén más información sobre cómo administrar el acceso a tus servicios.