Descarga la configuración de credenciales y otorga acceso

En esta página, se describe cómo configurar tus cargas de trabajo para acceder a los recursos de Google Cloud mediante la federación de Workload Identity y el acceso directo a los recursos o la identidad temporal como cuenta de servicio.

Puedes encontrar instrucciones de extremo a extremo específicas para casos de uso en las guías de configuración de AWS y Azure, Active Directory, GitHub, GitLab y otras canalizaciones de implementación y Kubernetes.

Permite que tu carga de trabajo externa acceda a los recursos de Google Cloud

Para proporcionar a tu carga de trabajo acceso a los recursos de Google Cloud, te recomendamos que otorgues acceso directo a los recursos al principal. En este caso, la principal es el usuario federado. Algunos productos de Google Cloud tienen limitaciones de las APIs de Google Cloud. Si tu carga de trabajo llama a un extremo de API que tiene una limitación, puedes usar la identidad temporal como cuenta de servicio. En este caso, la principal es la cuenta de servicio de Google Cloud, que actúa como la identidad. Debes otorgar acceso a la cuenta de servicio en el recurso.

Acceso directo a recursos

Puedes otorgar acceso a una identidad federada directamente en los recursos mediante la consola de Google Cloud o la CLI de gcloud.

Console

Para usar la consola de Google Cloud para otorgar roles de IAM directamente en un recurso, debes ir a la página del recurso y, luego, otorgar el rol. En el siguiente ejemplo, se muestra cómo ir a la página de Cloud Storage y otorgar el rol de visualizador de objetos de almacenamiento (roles/storage.objectViewer) a una identidad federada directamente en un bucket de Cloud Storage.

  1. En la consola de Google Cloud, ve a la página Buckets de Cloud Storage.

    Ir a Buckets

  2. En la lista de buckets, haz clic en el nombre del bucket para el que deseas otorgar el rol.

  3. Elige la pestaña Permisos cerca de la parte superior de la página.

  4. Haz clic en el botón Otorgar acceso.

    Aparecerá el cuadro de diálogo Agregar principales.

  5. En el campo Nuevas principales, ingresa una o más identidades que necesiten acceso a tu bucket.

    Por tema

    principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT
    

    Reemplaza lo siguiente:

    • PROJECT_NUMBER: el número del proyecto
    • POOL_ID: el ID del grupo de cargas de trabajo
    • SUBJECT: el asunto individual asignado desde tu IdP, por ejemplo, administrator@example.com

    Por grupo

    principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP
    

    Reemplaza lo siguiente:

    • PROJECT_NUMBER: el número del proyecto
    • WORKLOAD_POOL_ID: el ID del grupo de cargas de trabajo
    • GROUP: el grupo asignado desde tu IdP, por ejemplo: administrator-group@example.com

    Por atributo

    principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE
    

    Reemplaza lo siguiente:

    • PROJECT_NUMBER: el número del proyecto
    • WORKLOAD_POOL_ID: el ID del grupo de cargas de trabajo
    • ATTRIBUTE_NAME: uno de los atributos que se asignó a partir de tu IdP
    • ATTRIBUTE_VALUE: el valor del atributo.
  6. Elige un rol (o roles) del menú desplegable Selecciona un rol. Los roles que seleccionas aparecen en el panel con una descripción breve del permiso que otorgan.

  7. Haz clic en Guardar.

gcloud

Para usar la CLI de gcloud para otorgar roles de IAM en un recurso en un proyecto, haz lo siguiente:

  1. Obtén el número del proyecto en el que se define el recurso.

    gcloud projects describe $(gcloud config get-value core/project) --format=value\(projectNumber\)
    
  2. Otorga el acceso al recurso.

    Para usar la CLI de gcloud a fin de otorgar el rol de usuario de Workload Identity (roles/iam.workloadIdentityUser) a identidades externas que cumplan con ciertos criterios, ejecuta el siguiente comando.

    Por tema

    gcloud storage buckets add-iam-policy-binding BUCKET_ID \
        --role=roles/storage.objectViewer \
        --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT"

    Por grupo

    gcloud storage buckets add-iam-policy-binding BUCKET_ID \
        --role=roles/storage.objectViewer \
        --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP"

    Por atributo

    gcloud storage buckets add-iam-policy-binding BUCKET_ID \
        --role=roles/storage.objectViewer \
        --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE"

    Reemplaza lo siguiente:

    • BUCKET_ID: el bucket en el que se otorga acceso
    • PROJECT_NUMBER: el número del proyecto que contiene el grupo de Workload Identity.
    • POOL_ID: el ID del grupo de identidades para cargas de trabajo
    • SUBJECT: el valor esperado para el atributo que asignaste a google.subject
    • GROUP: el valor esperado para el atributo que asignaste a google.groups
    • ATTRIBUTE_NAME: el nombre de un atributo personalizado en la asignación de atributos
    • ATTRIBUTE_VALUE: el valor del atributo personalizado en la asignación de atributos

    Puedes otorgar roles en cualquier recurso de Google Cloud que admita políticas de permisos de IAM.

Uso de identidad temporal como cuenta de servicio

  1. Para crear una cuenta de servicio para la carga de trabajo externa, haz lo siguiente:

    1. Habilita las API de IAM, Security Token Service, and Service Account Credentials.

      Habilita las API

    2. Crea una cuenta de servicio que represente la carga de trabajo. Es mejor usar una cuenta de servicio dedicada para cada carga de trabajo.

      No es necesario que la cuenta de servicio esté en el mismo proyecto que el grupo de identidades para cargas de trabajo.

    3. Otorga acceso a la cuenta de servicio a los recursos a los que deseas que accedan las identidades externas.

    4. Otorga el rol de usuario de Workload Identity (roles/iam.workloadIdentityUser) a la cuenta de servicio:

    5. Crea una cuenta de servicio que represente la carga de trabajo. Te recomendamos que uses una cuenta de servicio dedicada para cada carga de trabajo.

      No es necesario que la cuenta de servicio esté en el mismo proyecto que el grupo de Workload Identity, pero debes consultar el proyecto que contiene la cuenta de servicio.

  2. Para otorgar acceso a una identidad federada mediante identidad temporal como cuenta de servicio con la consola de Google Cloud o la CLI de gcloud, haz lo siguiente:

    Console

    Para usar la consola de Google Cloud para otorgar roles de IAM a una identidad federada con una cuenta de servicio, haz lo siguiente:

    1. Para crear una cuenta de servicio que sirva como la identidad que se usará, haz lo siguiente:

      1. Habilita las API de IAM, Security Token Service, and Service Account Credentials.

        Habilita las API

      2. Crea una cuenta de servicio que represente la identidad de la carga de trabajo. Te recomendamos que uses una cuenta de servicio dedicada para cada carga de trabajo.

        No es necesario que la cuenta de servicio esté en el mismo proyecto que el grupo de Workload Identity, pero cuando otorgas acceso a IAM, debes hacer referencia al proyecto que contiene la cuenta de servicio.

      3. Otorga acceso a la cuenta de servicio a los recursos a los que deseas que accedan las identidades externas.

    2. Para otorgar acceso mediante la identidad temporal como cuenta de servicio, haz lo siguiente.

      1. Ve a la página Grupos de Workload Identity.

        Ir a Grupos de Workload Identity

      2. Selecciona Otorgar acceso.

      3. En el cuadro de diálogo Otorgar acceso a la cuenta de servicio, selecciona Otorgar acceso mediante la identidad temporal como cuenta de servicio.

      4. En la lista Cuentas de servicio, selecciona la cuenta de servicio para las identidades externas que actuarán en nombre de ella y haz lo siguiente:

      5. Para elegir qué identidades en el grupo pueden actuar en nombre de la cuenta de servicio, realiza una de las siguientes acciones:

        • Para permitir que solo las identidades específicas del grupo de identidades para cargas de trabajo actúen en nombre de la cuenta de servicio, selecciona Solo identidades que coinciden con el filtro.

        • En la lista Nombre del atributo, selecciona el atributo que deseas filtrar.

        • En el campo Valor del atributo, ingresa el valor esperado del atributo; por ejemplo, si usas una asignación de atributos google.subject=assertion.sub, establece el nombre del atributo en subject y el valor del atributo en el valor de la declaración sub en los tokens que emite tu proveedor de identidad externo.

      6. Para guardar la configuración, haz clic en Guardar y, luego, en Descartar.

    gcloud

    Para usar la CLI de gcloud a fin de otorgar el rol de usuario de Workload Identity (roles/iam.workloadIdentityUser) a identidades externas que cumplan con ciertos criterios, ejecuta el siguiente comando.

    Por tema

    gcloud storage buckets add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
        --role=roles/storage.objectViewer \
        --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT"

    Por grupo

    gcloud storage buckets add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
        --role=roles/storage.objectViewer \
        --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP"

    Por atributo

    gcloud storage buckets add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
        --role=roles/storage.objectViewer \
        --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE"

    Reemplaza lo siguiente:

    • SERVICE_ACCOUNT_EMAIL: La dirección de correo electrónico de la cuenta de servicio
    • PROJECT_NUMBER: el número del proyecto que contiene el grupo de Workload Identity.
    • POOL_ID: el ID del grupo de identidades para cargas de trabajo
    • SUBJECT: el valor esperado para el atributo que asignaste a google.subject
    • GROUP: el valor esperado para el atributo que asignaste a google.groups
    • ATTRIBUTE_NAME: el nombre de un atributo personalizado en la asignación de atributos
    • ATTRIBUTE_VALUE: el valor del atributo personalizado en la asignación de atributos

Descarga la configuración

Para permitir que tu carga de trabajo acceda a las bibliotecas cliente, primero debes descargar y configurar las credenciales predeterminadas de la aplicación (ADC) mediante lo siguiente:

  1. En la consola de Google Cloud, ve a la página Grupos de Workload Identity.

    Ir a Grupos de Workload Identity
  2. En la tabla, selecciona tu grupo para ir a la página de detalles del grupo.

  3. Haz clic en Otorgar acceso.

  4. Selecciona Otorgar acceso con identidades federadas (recomendado).

  5. Para descargar la credencial predeterminada de la aplicación (ADC) de modo que tu carga de trabajo pueda acceder a las bibliotecas cliente, haz lo siguiente:

    1. Haz clic en Descargar configuración.

    2. En el cuadro de diálogo Configurar tu aplicación, haz lo siguiente:

      1. En la lista desplegable Proveedor, selecciona tu proveedor.

      2. En ruta de token de OIDC o ruta de aserción de SAML, ingresa la ruta de acceso en la que se encuentra el token o la aserción.

      3. En la lista desplegable Tipo de formato, selecciona el formato.

    3. Haz clic en Descargar configuración y toma nota de la ruta de acceso en la que guardaste el archivo.