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.
- En la consola de Google Cloud, ve a la página Buckets de Cloud Storage.
En la lista de buckets, haz clic en el nombre del bucket para el que deseas otorgar el rol.
Elige la pestaña Permisos cerca de la parte superior de la página.
Haz clic en el botón add_box Otorgar acceso.
Aparecerá el cuadro de diálogo Agregar principales.
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 proyectoPOOL_ID
: el ID del grupo de cargas de trabajoSUBJECT
: 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 proyectoWORKLOAD_POOL_ID
: el ID del grupo de cargas de trabajoGROUP
: 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 proyectoWORKLOAD_POOL_ID
: el ID del grupo de cargas de trabajoATTRIBUTE_NAME
: uno de los atributos que se asignó a partir de tu IdPATTRIBUTE_VALUE
: el valor del atributo.
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.
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:
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\)
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 accesoPROJECT_NUMBER
: el número del proyecto que contiene el grupo de Workload Identity.POOL_ID
: el ID del grupo de identidades para cargas de trabajoSUBJECT
: el valor esperado para el atributo que asignaste agoogle.subject
GROUP
: el valor esperado para el atributo que asignaste agoogle.groups
ATTRIBUTE_NAME
: el nombre de un atributo personalizado en la asignación de atributosATTRIBUTE_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
Para crear una cuenta de servicio para la carga de trabajo externa, haz lo siguiente:
Enable the IAM, Security Token Service, and Service Account Credentials APIs.
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.
Otorga acceso a la cuenta de servicio a los recursos a los que deseas que accedan las identidades externas.
Otorga el rol de usuario de Workload Identity (
roles/iam.workloadIdentityUser
) a la cuenta de servicio: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.
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:
Para crear una cuenta de servicio que sirva como la identidad que se usará, haz lo siguiente:
Enable the IAM, Security Token Service, and Service Account Credentials APIs.
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.
Otorga acceso a la cuenta de servicio a los recursos a los que deseas que accedan las identidades externas.
Para otorgar acceso mediante la identidad temporal como cuenta de servicio, haz lo siguiente.
Ve a la página Grupos de Workload Identity.
Selecciona Otorgar acceso.
En el cuadro de diálogo Otorgar acceso a la cuenta de servicio, selecciona Otorgar acceso mediante la identidad temporal como cuenta de servicio.
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:
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 ensubject
y el valor del atributo en el valor de la declaraciónsub
en los tokens que emite tu proveedor de identidad externo.
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 servicioPROJECT_NUMBER
: el número del proyecto que contiene el grupo de Workload Identity.POOL_ID
: el ID del grupo de identidades para cargas de trabajoSUBJECT
: el valor esperado para el atributo que asignaste agoogle.subject
GROUP
: el valor esperado para el atributo que asignaste agoogle.groups
ATTRIBUTE_NAME
: el nombre de un atributo personalizado en la asignación de atributosATTRIBUTE_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:
-
En la consola de Google Cloud, ve a la página Grupos de Workload Identity.
Ir a Grupos de Workload Identity -
En la tabla, selecciona tu grupo para ir a la página de detalles del grupo.
-
Haz clic en Otorgar acceso.
-
Selecciona Otorgar acceso con identidades federadas (recomendado).
-
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:
-
Haz clic en Descargar configuración.
-
En el cuadro de diálogo Configurar tu aplicación, haz lo siguiente:
-
En la lista desplegable Proveedor, selecciona tu proveedor.
-
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.
En la lista desplegable Tipo de formato, selecciona el formato.
-
-
Haz clic en Descargar configuración y toma nota de la ruta de acceso en la que guardaste el archivo.
-