En esta guía se explica cómo usar un grupo de identidades de empleados y un proveedor de grupos de identidades de empleados para obtener tokens de corta duración del servicio de tokens de seguridad. Puedes usar los tokens para acceder a los recursos de Trusted Cloud que admitan la federación de identidades de Workforce y a los que se te haya concedido acceso.
Los métodos que se describen en esta guía se pueden usar en máquinas sin interfaz gráfica.
Puedes obtener tokens de corta duración siguiendo este proceso de alto nivel, que se describe en detalle más adelante en este documento:
- Obtén una credencial del proveedor de identidades de confianza.
- Intercambia la credencial por un token del servicio de tokens de seguridad.
Antes de empezar
Configurar la federación de identidades de los empleados o, para obtener instrucciones específicas de un IdP, consulta las siguientes guías:
- Configurar la federación de identidades para los trabajadores basada en Microsoft Entra ID
- Configurar la federación de identidades para los trabajadores basada en Okta
Anota el ID del grupo de identidades de Workforce y el ID del proveedor del grupo de identidades de Workforce.
Asegúrate de que tienes el permiso de Gestión de Identidades y Accesos (IAM)
serviceusage.services.use
. El rol con menos privilegios que contiene este permiso es Consumidor de uso de servicio (roles/serviceusage.serviceUsageConsumer
).Enable the IAM and Security Token Service APIs.
Instala Google Cloud CLI y, a continuación, inicia sesión en gcloud CLI con tu identidad federada. Después de iniciar sesión, inicializa la CLI de Google Cloud ejecutando el siguiente comando:
gcloud init
Intercambiar credenciales externas por un token de acceso de Trusted Cloud
En esta sección se explica cómo usar Security Token Service para intercambiar tus credenciales externas por un token de acceso que conceda acceso aTrusted Cloud. Para ello, puedes usar la CLI de gcloud, la API REST y las bibliotecas de cliente de Cloud, tal como se describe más adelante en esta guía.
Si necesitas un acceso de larga duración, puedes configurar un proceso de larga duración para que actualice continuamente las credenciales en esa máquina. También puedes ejecutar un servidor local en segundo plano con un endpoint que devuelva las credenciales.
Inicio de sesión basado en navegador con la CLI de gcloud
En esta sección se describe cómo configurar la CLI de gcloud para usar un flujo de inicio de sesión basado en navegador. Para ello, crea un archivo de configuración de inicio de sesión y, a continuación, haz referencia al archivo en las llamadas a gcloud auth login
o activa el archivo para que se use de forma predeterminada.
Crear el archivo de configuración de inicio de sesión
Para crear el archivo de configuración de inicio de sesión, ejecuta el siguiente comando. También puedes activar el archivo como predeterminado para gcloud CLI añadiendo la marca --activate
.
Después, puedes ejecutar gcloud auth login
sin especificar la ruta del archivo de configuración cada vez.
gcloud iam workforce-pools create-login-config \ locations/global/workforcePools/WORKFORCE_POOL_ID/providers/PROVIDER_ID \ --output-file=LOGIN_CONFIG_FILE_PATH
Haz los cambios siguientes:
WORKFORCE_POOL_ID
: el ID del grupo de trabajadoresPROVIDER_ID
: el ID del proveedorLOGIN_CONFIG_FILE_PATH
: la ruta a un archivo de configuración que especifiques (por ejemplo,login.json
El archivo contiene los endpoints que usa la CLI de gcloud para habilitar el flujo de autenticación basado en el navegador y definir la audiencia en el IdP que se configuró en el proveedor del grupo de identidades de Workforce. El archivo no contiene información confidencial.
El resultado es similar al siguiente:
{ "type": "external_account_authorized_user_login_config", "audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID", "auth_url": "https://auth.cloud.s3nscloud.fr/authorize", "token_url": "https://sts.s3nsapis.fr/v1/oauthtoken", "token_info_url": "https://sts.s3nsapis.fr/v1/introspect", }
Para evitar que
gcloud auth login
use este archivo de configuración automáticamente, puedes anularlo ejecutando gcloud config unset auth/login_config_file
.
Iniciar sesión mediante la autenticación basada en navegador
Para autenticarte mediante la autenticación de inicio de sesión basada en navegador, puedes usar uno de los siguientes métodos:
-
Si usaste la marca
--activate
al crear el archivo de configuración o si activaste el archivo de configuración congcloud config set auth/login_config_file
, la CLI de gcloud usará el archivo de configuración automáticamente:gcloud auth login
-
Para iniciar sesión especificando la ubicación del archivo de configuración, ejecuta el siguiente comando:
gcloud auth login --login-config=LOGIN_CONFIG_FILE_PATH
-
Para usar una variable de entorno para especificar la ubicación del archivo de configuración, asigna a
CLOUDSDK_AUTH_LOGIN_CONFIG_FILE
la ruta de configuración.
Inhabilitar el inicio de sesión basado en navegador
Para dejar de usar el archivo de configuración de inicio de sesión, haz lo siguiente:
-
Si usaste la marca
--activate
al crear el archivo de configuración o si activaste el archivo de configuración congcloud config set auth/login_config_file
, debes ejecutar el siguiente comando para desactivarlo:gcloud config unset auth/login_config_file
-
Borra la variable de entorno
CLOUDSDK_AUTH_LOGIN_CONFIG_FILE
si está definida.
Usar archivos de configuración para iniciar sesión
Como alternativa al inicio de sesión basado en navegador, en esta sección se muestran diferentes formas de usar archivos de configuración de credenciales para proporcionar acceso aTrusted Cloud acciones autenticadas. Para configurar los archivos de configuración, no es necesario que hayas iniciado sesión en la CLI de gcloud.
La forma de configurar el archivo depende de si tu proveedor de identidades usa OIDC o SAML.
OIDC
Puede obtener las credenciales que usa para configurar el archivo de configuración de las siguientes fuentes:
- Credenciales de origen de archivo
- Credenciales procedentes de URLs
- Credenciales de origen ejecutable no interactivas
- Credenciales interactivas procedentes de ejecutables
Credenciales procedentes de archivos
Cuando usas credenciales procedentes de archivos, los tokens se cargan desde un archivo. Otro proceso debe actualizar este archivo con un nuevo token de OIDC antes de que caduque el antiguo. Por ejemplo, si el token tiene un tiempo de validez de una hora, debes actualizar el archivo antes de que transcurra una hora.
Para generar el archivo de configuración con una credencial de origen de archivo, ejecuta el siguiente comando:
gcloud iam workforce-pools create-cred-config \
locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID \
--subject-token-type=urn:ietf:params:oauth:token-type:id_token \
--credential-source-file=PATH_TO_OIDC_ID_TOKEN \
--workforce-pool-user-project=WORKFORCE_POOL_USER_PROJECT \
--output-file=config.json
Haz los cambios siguientes:
WORKFORCE_POOL_ID
: el ID del grupo de identidades de WorkforceWORKFORCE_PROVIDER_ID
: el ID del proveedor del grupo de identidades de WorkforcePATH_TO_OIDC_TOKEN
: la ruta al archivo de credenciales del proveedor de identidades de OIDCWORKFORCE_POOL_USER_PROJECT
: el número o el ID del proyecto asociado al proyecto de usuario de grupos de Workforce.
La cuenta principal debe tener el permiso serviceusage.services.use
en este proyecto.
Al ejecutar el comando, se genera un archivo de configuración de IdP de OIDC similar al siguiente:
{
"type": "external_account",
"audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID",
"subject_token_type": "urn:ietf:params:oauth:token-type:id_token",
"token_url": "https://sts.googleapis.com/v1/token",
"workforce_pool_user_project": "WORKFORCE_POOL_USER_PROJECT",
"credential_source": {
"file": "PATH_TO_OIDC_CREDENTIALS_FILE"
}
}
Credenciales procedentes de URLs
Cuando usas credenciales procedentes de URLs, los tokens se cargan desde un servidor local con un endpoint que responde a las solicitudes HTTP GET
. La respuesta debe ser un token de ID de OIDC, ya sea en texto sin formato o en formato JSON.
Para generar un archivo de configuración con una credencial de origen URL, ejecuta el siguiente comando:
gcloud iam workforce-pools create-cred-config \
locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID \
--subject-token-type=urn:ietf:params:oauth:token-type:id_token \
--credential-source-url=URL_TO_RETURN_OIDC_ID_TOKEN \
--workforce-pool-user-project=WORKFORCE_POOL_USER_PROJECT \
--output-file=config.json
Haz los cambios siguientes:
WORKFORCE_POOL_ID
: el ID del grupo de identidades de Workforce.WORKFORCE_PROVIDER_ID
: el ID del proveedor del grupo de identidades de Workforce.URL_TO_RETURN_OIDC_ID_TOKEN
: la URL a la que se llama para obtener las credenciales de OIDC, como un token de ID de OIDC. Por ejemplo:http://localhost:5000/token
.WORKFORCE_POOL_USER_PROJECT
: el número de proyecto que se usa para la cuota y la facturación. El principal debe tenerserviceusage.services.use permission
en este proyecto.
Al ejecutar el comando, se genera un archivo de configuración de IdP de OIDC similar al siguiente:
{
"type": "external_account",
"audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID",
"subject_token_type": "urn:ietf:params:oauth:token-type:id_token",
"token_url": "https://sts.googleapis.com/v1/token",
"workforce_pool_user_project": "WORKFORCE_POOL_USER_PROJECT",
"credential_source": {
"url": "URL_TO_RETURN_OIDC_ID_TOKEN"
}
}
Credenciales de origen ejecutable no interactivas
Cuando usas credenciales de origen ejecutable no interactivas, los tokens se cargan desde un ejecutable local. El archivo ejecutable debe proporcionar un token de ID de OIDC válido y no caducado en formato JSON a stdout
:
{ "version": 1, "success": true, "token_type": "urn:ietf:params:oauth:token-type:id_token", "id_token": "HEADER.PAYLOAD.SIGNATURE", "expiration_time": 1620499962 }
Estos campos son obligatorios para que la respuesta sea correcta, excepto expiration_time
. El campo expiration_time
solo es obligatorio cuando se ha especificado un archivo de salida en la configuración de las credenciales.
El archivo ejecutable debe mostrar los errores a stdout
en el siguiente formato JSON:
{ "version": 1, "success": false, "code": "401", "message": "Caller not authorized." }
Todos estos campos son obligatorios para una respuesta de error. Las bibliotecas de cliente usan los campos de código y mensaje para generar el error correspondiente.
El comando puede devolver los siguientes campos:
version
: la versión de la salida JSON. Solo se admite la versión1
.success
: el estado de la respuesta. Cuando el estado estrue
, el ejecutable debe salir con el código de salida0
y la respuesta debe contener los siguientes campos:token_type
:id_token
- Campo
expiration_time
, si se especifica un archivo de salida en la configuración de credenciales
Cuando el estado es
false
, el ejecutable debe salir con un valor distinto de cero y la respuesta debe contener los siguientes campos:code
message
token_type
: el tipo de token de asunto de terceros, que debe serurn:ietf:params:oauth:token-type:id_token
id_token
: el token de OIDC de tercerosexpiration_time
: tiempo de caducidad del token OIDC de terceros en segundos (tiempo de inicio de registro de tiempo de Unix).code
: la cadena del código de errormessage
: el mensaje de error
Las bibliotecas de cliente definen las siguientes variables de entorno cuando se ejecuta el archivo ejecutable:
GOOGLE_EXTERNAL_ACCOUNT_AUDIENCE
: el campo de audiencia de la configuración de las credenciales. Esta variable siempre se define.GOOGLE_EXTERNAL_ACCOUNT_TOKEN_TYPE
: el tipo de token de asunto esperado. Esta variable siempre se define.GOOGLE_EXTERNAL_ACCOUNT_OUTPUT_FILE
: la ubicación del archivo de salida de la configuración de las credenciales. Esta variable solo está presente cuando se especifica en la configuración de las credenciales.
El archivo ejecutable puede usar estas variables de entorno para evitar que estos valores se codifiquen de forma rígida.
Para habilitar este método de obtención de credenciales con las bibliotecas de cliente, la variable de entorno GOOGLE_EXTERNAL_ACCOUNT_ALLOW_EXECUTABLES
debe tener el valor 1
.
Para generar el archivo de configuración con una credencial de origen ejecutable, ejecuta el siguiente comando:
gcloud iam workforce-pools create-cred-config \
locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID \
--subject-token-type=urn:ietf:params:oauth:token-type:id_token \
--executable-command=EXECUTABLE_COMMAND \
--executable-timeout-millis=EXECUTABLE_TIMEOUT \
--executable-output-file=EXECUTABLE_OUTPUT_FILE \
--workforce-pool-user-project=WORKFORCE_POOL_USER_PROJECT \
--output-file /path/to/generated/config.json
Haz los cambios siguientes:
WORKFORCE_POOL_ID
: el ID del grupo de identidades de Workforce.WORKFORCE_PROVIDER_ID
: el ID del proveedor del grupo de identidades de Workforce.EXECUTABLE_COMMAND
: el comando completo, incluidos los argumentos, que se debe ejecutar para obtener el token de asunto, como un token de ID de OIDC, con el siguiente formato:--executable-command="/path/to/command --foo=bar"
.EXECUTABLE_TIMEOUT
: opcional. Duración, en milisegundos, que se debe esperar a que se ejecute el archivo ejecutable (el valor predeterminado es 30 s).EXECUTABLE_OUTPUT_FILE
: opcional. Ruta a las credenciales de terceros generadas por el archivo ejecutable. Esto resulta útil para almacenar en caché las credenciales. Las bibliotecas de autenticación comprueban primero esta ruta antes de ejecutar el archivo ejecutable.WORKFORCE_POOL_USER_PROJECT
: número o ID del proyecto que se usa para la cuota y la facturación. El principal debe tener el permisoserviceusage.services.use
definido en este proyecto.
Al ejecutar el comando, se genera un archivo de configuración de IdP de OIDC similar al siguiente:
{
"type": "external_account",
"audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID",
"subject_token_type": "urn:ietf:params:oauth:token-type:id_token",
"token_url": "https://sts.googleapis.com/v1/token",
"workforce_pool_user_project": "WORKFORCE_POOL_USER_PROJECT",
"credential_source": {
"executable": {
"command": "EXECUTABLE_COMMAND",
"timeout_millis": "EXECUTABLE_TIMEOUT",
"output_file": "EXECUTABLE_OUTPUT_FILE"
}
}
}
Credenciales interactivas procedentes de ejecutables
Cuando usas credenciales interactivas procedentes de un archivo ejecutable, puedes proporcionar un archivo ejecutable que interactúe con el usuario a través de stdin
y stdout
. Si el usuario inicia sesión correctamente, el archivo ejecutable escribe una credencial válida y no caducada en el archivo especificado.
Para usar este modo, se necesitan las siguientes marcas:
--executable-output-file
: el archivo en el que el ejecutable escribe la información de las credenciales--exeutable-interactive-timeout-millis
: un valor distinto de cero que indica el modo interactivo y define el tiempo de espera. Por ejemplo,6000
para un tiempo de espera de 60 segundos.
Los siguientes campos son obligatorios para que la respuesta sea correcta, excepto expiration_time
:
{ "version": 1, "success": true, "token_type": "urn:ietf:params:oauth:token-type:id_token", "id_token": "HEADER.PAYLOAD.SIGNATURE", "expiration_time": 1620499962 }
El archivo ejecutable debe escribir los errores en el archivo especificado en --executable-output-file
con el siguiente formato JSON. Los siguientes campos son obligatorios al devolver una respuesta de error.
{ "version": 1, "success": false, "code": "401", "message": "Caller not authorized." }
Los campos code
y message
deben indicar el error correspondiente. Las bibliotecas de cliente usan estos campos cuando se produce el error.
Si se ejecuta correctamente, el comando devuelve los mismos campos para las credenciales de origen ejecutable interactivas y no interactivas.
Las variables de entorno también son las mismas para las credenciales de origen ejecutable interactivas y no interactivas.
Para generar una credencial interactiva obtenida de un archivo ejecutable, añade el parámetro
--executable-interactive-timeout-millis
y el parámetro
--executable-output-file
.
gcloud iam workforce-pools create-cred-config \
locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID \
--subject-token-type=urn:ietf:params:oauth:token-type:id_token \
--executable-command=EXECUTABLE_COMMAND \
--executable-interactive-timeout-millis=EXECUTABLE_INTERACTIVE_TIMEOUT \
--executable-output-file=EXECUTABLE_OUTPUT_FILE \
--workforce-pool-user-project=WORKFORCE_POOL_USER_PROJECT \
--output-file /path/to/generated/config.json
Haz los cambios siguientes:
WORKFORCE_POOL_ID
: el ID del grupo de identidades de Workforce.WORKFORCE_PROVIDER_ID
: el ID del proveedor del grupo de identidades de Workforce.EXECUTABLE_COMMAND
: el comando completo, incluidos los argumentos, que se debe ejecutar para obtener el token de asunto, con el siguiente formato:--executable-command="/path/to/command --arg1=val1 --arg2=val2"
EXECUTABLE_INTERACTIVE_TIMEOUT
: duración, en milisegundos, que se espera a que se ejecute el archivo ejecutable.EXECUTABLE_OUTPUT_FILE
: ruta a las credenciales de terceros generadas por el ejecutable. Esta ruta es útil para almacenar en caché las credenciales. Las bibliotecas de autenticación comprueban primero esta ruta antes de ejecutar el archivo ejecutable.WORKFORCE_POOL_USER_PROJECT
: el número o el ID del proyecto que se usa para la cuota y la facturación. La entidad de seguridad debe tener el permisoserviceusage.services.use
en este proyecto.
Al ejecutar el comando, se genera un archivo de configuración de IdP de OIDC similar al siguiente:
{
"type": "external_account",
"audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID",
"subject_token_type": "urn:ietf:params:oauth:token-type:id_token",
"token_url": "https://sts.googleapis.com/v1/token",
"workforce_pool_user_project": "WORKFORCE_POOL_USER_PROJECT",
"credential_source": {
"executable": {
"command": "EXECUTABLE_COMMAND",
"interactive_timeout_millis": "EXECUTABLE_INTERACTIVE_TIMEOUT",
"timeout_millis": "EXECUTABLE_TIMEOUT",
"output_file": "EXECUTABLE_OUTPUT_FILE",
}
}
}
El campo timeout_millis
se devuelve porque un ejecutable interactivo también puede ejecutarse en modo no interactivo en algunos casos.
En el modo interactivo, el comando devuelve un tiempo de espera predeterminado.
SAML
Puede obtener las credenciales que usa para configurar el archivo de configuración de las siguientes fuentes:
- Credenciales de origen de archivo
- Credenciales procedentes de URLs
- Credenciales procedentes de ejecutables
- Credenciales procedentes de ejecutables para el modo interactivo de gcloud
Credenciales procedentes de archivos
Las aserciones se cargan desde un archivo. Otro proceso debe actualizar este archivo con una nueva aserción SAML codificada en base64 antes de que caduque la anterior. Por ejemplo, si la aserción tiene un tiempo de vida de una hora, debes actualizar el archivo antes de que transcurra una hora.
gcloud iam workforce-pools create-cred-config \
locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID \
--output-file=federation_config.json \
--credential-source-file=CREDENTIAL_FILE \
--subject-token-type=urn:ietf:params:oauth:token-type:saml2 \
--workforce-pool-user-project=WORKFORCE_POOL_USER_PROJECT
Haz los cambios siguientes:
WORKFORCE_POOL_ID
: el ID del grupo de identidades de Workforce.WORKFORCE_PROVIDER_ID
: el ID del proveedor del grupo de identidades de Workforce.CREDENTIAL_FILE
: la ruta al archivo de credenciales que genera el proveedor de identidades.WORKFORCE_POOL_USER_PROJECT
: número o ID del proyecto que se usa para la cuota y la facturación. El principal debe tenerserviceusage.services.use permission
en este proyecto.
Credenciales procedentes de URLs
Las aserciones se cargan desde un servidor local con un endpoint que responde a las solicitudes `GET` de HTTP. La respuesta debe ser una aserción SAML [codificada en Base64](https://toolbox.googleapps.com/apps/encode_decode/) o un JSON que contenga una aserción SAML codificada en Base64. Para usar credenciales procedentes de una URL, usa la marca `--credential-source-url`: ```sh gcloud iam workforce-pools create-cred-config \ locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID \ --output-file=federation_config.json \ --credential-source-url=CREDENTIAL_URL \ --subject-token-type=urn:ietf:params:oauth:token-type:saml2 \ --workforce-pool-user-project=WORKFORCE_POOL_USER_PROJECT ``` Sustituye los siguientes valores: *WORKFORCE_POOL_ID
: el ID del grupo de identidades de la plantilla de personal.
* WORKFORCE_PROVIDER_ID
: el ID del proveedor del grupo de identidades de Workforce.
* CREDENTIAL_URL
: la URL del endpoint del servidor local.
* WORKFORCE_POOL_USER_PROJECT
: el número o el ID del proyecto que se usa para la cuota y la facturación. La entidad de seguridad debe tener el permiso `serviceusage.services.use` en este proyecto.
Credenciales procedentes de ejecutables
Las aserciones se cargan desde un archivo ejecutable local. El archivo ejecutable debe proporcionar una aserción SAML válida y no caducada en formato JSON a stdout
.
{ "version": 1, "success": true, "token_type": "urn:ietf:params:oauth:token-type:saml2", "saml_response": "...", "expiration_time": 1620499962 }
Estos campos son obligatorios para que la respuesta sea correcta, excepto expiration_time
. El campo expiration_time
solo es obligatorio cuando se especifica un archivo de salida en la configuración de las credenciales.
Si se produce un error, el ejecutable debe mostrarlo en el siguiente formato JSON en stdout:
{ "version": 1, "success": false, "code": "401", "message": "Caller not authorized." }
Todos estos campos son obligatorios para una respuesta de error. Las bibliotecas de cliente usan los campos de código y mensaje para generar el error correspondiente.
El comando puede devolver los siguientes campos:
version
: la versión de la salida JSON. Solo se admite la versión1
.success
: el estado de la respuesta. Cuando el estado estrue
, el archivo ejecutable debe cerrarse con el código de salida0
y la respuesta debe contener los siguientes campos:token_type
:saml_response
- Campo
expiration_time
, si se especifica un archivo de salida en la configuración de credenciales.
Cuando el estado es
false
, el ejecutable debe salir con un valor distinto de cero y la respuesta debe contener los siguientes campos: +code
+message
token_type
: el tipo de token de asunto de terceros, que debe serurn:ietf:params:oauth:token-type:saml2
saml_response
: la respuesta SAML de tercerosexpiration_time
: tiempo de caducidad de la respuesta SAML de terceros en segundos (tiempo de inicio de registro de Unix).code
: la cadena del código de errormessage
: el mensaje de error
Las bibliotecas de cliente definen las siguientes variables de entorno cuando se ejecuta el archivo ejecutable:
GOOGLE_EXTERNAL_ACCOUNT_AUDIENCE
: el campo de audiencia de la configuración de las credenciales. Esta variable siempre se define.GOOGLE_EXTERNAL_ACCOUNT_TOKEN_TYPE
: el tipo de token de asunto esperado. Esta variable siempre se define.GOOGLE_EXTERNAL_ACCOUNT_OUTPUT_FILE
: la ubicación del archivo de salida de la configuración de las credenciales. Esta variable solo está presente cuando se especifica en la configuración de las credenciales.
Para habilitar este método de obtención de credenciales con las bibliotecas de cliente, define la variable de entorno GOOGLE_EXTERNAL_ACCOUNT_ALLOW_EXECUTABLES
como 1
.
Para generar el archivo de configuración con una credencial de origen ejecutable, ejecuta el siguiente comando:
gcloud iam workforce-pools create-cred-config \
locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID \
--subject-token-type=urn:ietf:params:oauth:token-type:saml2 \
--executable-command=EXECUTABLE_COMMAND \
--executable-timeout-millis=EXECUTABLE_TIMEOUT \
--executable-output-file=EXECUTABLE_OUTPUT_FILE \
--workforce-pool-user-project=WORKFORCE_POOL_USER_PROJECT \
--output-file /path/to/generated/config.json
Haz los cambios siguientes:
WORKFORCE_POOL_ID
: el ID del grupo de identidades de Workforce.WORKFORCE_PROVIDER_ID
: el ID del proveedor del grupo de identidades de Workforce.EXECUTABLE_COMMAND
: el comando completo, incluidos los argumentos, que se debe ejecutar para obtener el token de asunto, con el siguiente formato:--executable-command="/path/to/command --foo=bar"
.EXECUTABLE_TIMEOUT
: opcional. Duración en milisegundos que se debe esperar para que se ejecute el archivo ejecutable (el valor predeterminado es 30 s).EXECUTABLE_OUTPUT_FILE
: opcional. Ruta a las credenciales de identidad de terceros (3PI) generadas por el archivo ejecutable. Esto resulta útil para almacenar en caché las credenciales. Las bibliotecas de autorización comprueban si existe antes de ejecutar el archivo ejecutable.WORKFORCE_POOL_USER_PROJECT
: el número de proyecto que se usa para la cuota y la facturación. La entidad de seguridad debe tener el permisoserviceusage.services.use
en este proyecto.
Al ejecutar el comando, se genera un archivo de configuración de IdP SAML similar al siguiente:
{
"type": "external_account",
"audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID",
"subject_token_type": "urn:ietf:params:oauth:token-type:saml2",
"token_url": "https://sts.googleapis.com/v1/token",
"workforce_pool_user_project": "WORKFORCE_POOL_USER_PROJECT",
"credential_source": {
"executable": {
"command": "EXECUTABLE_COMMAND",
"timeout_millis": "EXECUTABLE_TIMEOUT",
"output_file": "EXECUTABLE_OUTPUT_FILE"
}
}
}
Credenciales procedentes de ejecutables para el modo interactivo de gcloud
Cuando usas credenciales procedentes de un archivo ejecutable en el modo interactivo de gcloud, un archivo ejecutable interactúa con el usuario a través de la interfaz de línea de comandos.
En el comando anterior, sustituye lo siguiente:
EXECUTABLE_OUTPUT_FILE
: obligatorio. Ruta al archivo que proporciona las credenciales generadas por el archivo ejecutable.EXECUTABLE_TIMEOUT
: obligatorio. Un valor de tiempo de espera distinto de cero también indica al comando que use el modo interactivo.
{ "version": 1, "success": true, "token_type": "urn:ietf:params:oauth:token-type:saml2", "saml_response": "...", "expiration_time": 1620499962 }
Estos campos son obligatorios para que la respuesta sea correcta, excepto expiration_time
. Si se omite expiration_time
, el ejecutable se sigue ejecutando.
El archivo ejecutable debe mostrar los errores en el executable-output-file
con el siguiente formato JSON. Cuando el archivo ejecutable informa de un error, todos estos campos son obligatorios. Las bibliotecas de cliente usan los campos de código y mensaje
para generar el error correspondiente.
{ "version": 1, "success": false, "code": "401", "message": "Caller not authorized." }
Si el comando se ejecuta correctamente, se devuelven los mismos campos que en las credenciales de origen ejecutable no interactivas.
Las variables de entorno también son las mismas que las credenciales procedentes de ejecutables no interactivos.
Para generar una credencial interactiva basada en un archivo ejecutable, añade el parámetro --executable-interactive-timeout-millis
.
gcloud iam workforce-pools create-cred-config \
locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID \
--subject-token-type=urn:ietf:params:oauth:token-type:saml2 \
--executable-command=EXECUTABLE_COMMAND \
--executable-interactive-timeout-millis=EXECUTABLE_INTERACTIVE_TIMEOUT \
--executable-output-file=EXECUTABLE_OUTPUT_FILE \
--workforce-pool-user-project=WORKFORCE_POOL_USER_PROJECT \
--output-file /path/to/generated/config.json
Haz los cambios siguientes:
WORKFORCE_POOL_ID
: el ID del grupo de identidades de Workforce.WORKFORCE_PROVIDER_ID
: el ID del proveedor del grupo de identidades de Workforce.EXECUTABLE_COMMAND
: el comando completo, incluidos los argumentos, que se debe ejecutar para obtener el token de asunto, con el siguiente formato:--executable-command="/path/to/command --foo=bar")
.EXECUTABLE_INTERACTIVE_TIMEOUT
: duración, en milisegundos, que se espera a que se ejecute el archivo ejecutable.EXECUTABLE_OUTPUT_FILE
: ruta a las credenciales de terceros generadas por el ejecutable. Esto resulta útil para almacenar en caché las credenciales. Las bibliotecas de autenticación comprueban primero esta ruta antes de ejecutar el archivo ejecutable.WORKFORCE_POOL_USER_PROJECT
: el número o el ID del proyecto que se usa para la cuota y la facturación. La entidad de seguridad debe tener el permisoserviceusage.services.use
en este proyecto.
Al ejecutar el comando, se genera un archivo de configuración de IdP SAML similar al siguiente:
{
"type": "external_account",
"audience": "//iam.googleapis.com/locations/global/workforcePools/<var>WORKFORCE_POOL_ID<var>/providers/<var>WORKFORCE_PROVIDER_ID</var>",
"subject_token_type": "urn:ietf:params:oauth:token-type:saml2",
"token_url": "https://sts.googleapis.com/v1/token",
"workforce_pool_user_project": "<var>WORKFORCE_POOL_USER_PROJECT</var>",
"credential_source": {
"executable": {
"command": "<var>EXECUTABLE_COMMAND</var>",
"interactive_timeout_millis": "<var>EXECUTABLE_INTERACTIVE_TIMEOUT</var>",
"timeout_millis": "<var>EXECUTABLE_TIMEOUT</var>",
"output_file": "<var>EXECUTABLE_OUTPUT_FILE</var>",
}
}
}
Para iniciar sesión, ejecuta el siguiente comando:
gcloud auth login --cred-file=/path/to/config.json
Ten en cuenta que ni la CLI de gcloud ni la herramienta de línea de comandos bq admiten tipos de credenciales de origen ejecutable.
En los flujos sin interfaz gráfica, la CLI de gcloud usa automáticamente el siguiente ámbito: https://www.googleapis.com/auth/cloud-platform
.
A continuación, la CLI de gcloud publica de forma transparente tus credenciales en el endpoint del servicio de tokens de seguridad, donde se intercambian por tokens de acceso temporales.Trusted Cloud
Ahora puedes ejecutar comandos gcloud
con la CLI de gcloud.
Usa las Trusted Cloud bibliotecas de cliente
Si usas una biblioteca de cliente compatible, puedes configurarla para que genere credenciales de Google automáticamente. Cuando sea posible, te recomendamos que generes las credenciales automáticamente para no tener que implementar el proceso de intercambio de tokens.
Trusted Cloud Las bibliotecas de cliente de los grupos de trabajo se admiten en los siguientes lenguajes: Node.js, Java, Python, Go y C++ (gRPC).
Para usar bibliotecas de cliente con estos servicios o lenguajes, haz lo siguiente:
Herramienta bq
Para autenticarte mediante Workforce Identity Federation, usa el comando gcloud auth login
:
gcloud auth login --cred-file=FILEPATH.json
donde FILEPATH
es la ruta al archivo de configuración de las credenciales.
La herramienta bq admite la federación de identidades para los trabajadores en la versión 390.0.0 y versiones posteriores de la CLI de Google Cloud.
C++
La mayoría de las Trusted Cloud bibliotecas de cliente de C++
admiten la federación de identidades de los empleados mediante un objeto ChannelCredentials
,
que se crea llamando a grpc::GoogleDefaultCredentials()
. Para inicializar esta credencial, debes compilar las bibliotecas de cliente con la versión 1.42.0 o posterior de gRPC.
Las bibliotecas de cliente de Cloud de Cloud Storage para C++ usan la API REST, no gRPC, por lo que no admiten la federación de identidades de la fuerza de trabajo.
auto creds = grpc::GoogleDefaultCredentials();
// Create a channel, stub and make RPC calls (same as in the previous example)
auto channel = grpc::CreateChannel("greeter.googleapis.com", creds);
std::unique_ptr<Greeter::Stub> stub(Greeter::NewStub(channel));
grpc::Status s = stub->sayHello(&context, *request, response);
gcloud
Para autenticarte mediante Workforce Identity Federation, usa el comando gcloud auth login
:
gcloud auth login --cred-file=FILEPATH.json
Sustituye FILEPATH
por la ruta del archivo de configuración de las credenciales.
La CLI de gcloud admite la federación de identidades para los trabajadores en la versión 392.0.0 y en versiones posteriores de la CLI de Google Cloud.
Go
Las bibliotecas de cliente de Cloud para Go admiten la federación de identidades de trabajo cuando se usa la versión v0.0.0-20211005180243-6b3c2da341f1 o una posterior del módulo golang.org/x/oauth2
.
import (
"context"
"fmt"
"log"
"cloud.google.com/go/storage"
"google.golang.org/api/iterator"
"google.golang.org/api/option"
"io/ioutil"
)
ctx := context.Background()
client, err := storage.NewClient(ctx)
# Explicit initialization can also be used.
# var jsonPath = "/path/to/3p-credentials.json"
# client, err := storage.NewClient(ctx, option.WithCredentialsFile(jsonPath))
if err != nil {
log.Fatal(err)
}
fmt.Println("Buckets:")
it := client.Buckets(ctx, projectID)
for {
battrs, err := it.Next()
if err == iterator.Done {
break
}
if err != nil {
log.Fatal(err)
}
fmt.Println(battrs.Name)
}
Java
Las bibliotecas de cliente de Cloud para Java admiten la federación de identidades de trabajo cuando se usa la versión 1.2.0 o posterior del artefacto com.google.auth:google-auth-library-oauth2-http
.
import com.google.auth.oauth2.GoogleCredentials;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;
GoogleCredentials credentials = GoogleCredentials.getApplicationDefault();
GoogleCredentials sourceCredentials = credentials
.createScoped(Arrays.asList("https://www.googleapis.com/auth/devstorage.read_only"));
Storage storageService = StorageOptions.newBuilder().setProjectId("project-id")
.setCredentials(sourceCredentials).build().getService();
Node.js
Las bibliotecas de cliente de Cloud para Node.js admiten la federación de identidades de trabajo cuando se usa la versión 7.10.0 o posterior del paquete google-auth-library
.
A diferencia de los grupos de identidades de carga de trabajo, los grupos de identidades de Workforce están asociados a una organización y no a un Trusted Cloud proyecto. Cuando creas un objeto GoogleAuth
, debes especificar un ID de proyecto. Para obtener más información, consulta el README del paquete google-auth-library
.
const auth = new GoogleAuth({
scopes: 'https://www.googleapis.com/auth/cloud-platform',
// Specify a project ID.
projectId: 'CLOUD_RESOURCE_PROJECT_ID',
});
# API request using Auth library.
const client = await auth.getClient();
const url =
`https://storage.googleapis.com/storage/v1/b?projects=${projectId}`;
const res = await client.request({url});
console.log(res.data);
Python
Las bibliotecas de cliente de Cloud para Python admiten la federación de identidades de trabajo cuando se usa la versión 2.3.0 o posterior del paquete google-auth
.
from google.cloud import storage
import google.auth
credentials, project = google.auth.default(
scopes=['https://www.googleapis.com/auth/devstorage.read_only'])
client = storage.Client(
project="project-id", credentials=credentials)
En el código de ejemplo, el valor project
puede ser None
si la biblioteca no puede descubrir automáticamente el ID del proyecto. Puedes transferir el ID de proyecto de forma explícita al usar una instancia de servicio, como se hace en el ejemplo del cliente de almacenamiento, o definir el ID de proyecto mediante la variable de entorno GOOGLE_CLOUD_PROJECT
.
Para obtener más información, consulta la guía de usuario del paquete google-auth
.
Utilizar la API REST
Puedes llamar a la API del servicio de tokens de seguridad para cambiar tus credenciales externas por tokens de acceso ejecutando el siguiente comando: Trusted Cloud Trusted Cloud
curl https://sts.s3nsapis.fr/v1/token \
--data-urlencode "audience=//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID" \
--data-urlencode "grant_type=urn:ietf:params:oauth:grant-type:token-exchange" \
--data-urlencode "requested_token_type=urn:ietf:params:oauth:token-type:access_token" \
--data-urlencode "scope=https://www.googleapis.com/auth/cloud-platform" \
--data-urlencode "subject_token_type=SUBJECT_TOKEN_TYPE" \
--data-urlencode "subject_token=EXTERNAL_SUBJECT_TOKEN" \
--data-urlencode "options={\"userProject\":\"BILLING_PROJECT_NUMBER\"}"
Haz los cambios siguientes:
AUDIENCE
: el nombre completo del recurso del proveedor que emite el token de asunto.WORKFORCE_POOL_ID
: el ID del grupo de identidades de WorkforceWORKFORCE_PROVIDER_ID
: el ID del proveedor del grupo de identidades de WorkforceSUBJECT_TOKEN_TYPE
: se le asigna uno de los siguientes valores:urn:ietf:params:oauth:token-type:id_token
para tokens de ID de OIDCurn:ietf:params:oauth:token-type:saml2
para aserciones SAML
EXTERNAL_SUBJECT_TOKEN
: el token emitido por el IdP que representa la identidad de la entidad principal para la que se solicita el token de acceso.Si ha configurado un proveedor de OIDC, el token debe tener el formato JWT.
BILLING_PROJECT_NUMBER
: el número o el ID del proyecto que se usa para la cuota y la facturación. La entidad de seguridad debe tener el permisoserviceusage.services.use
en este proyecto.
La respuesta es similar a la siguiente:
{
"access_token": "ya29.dr.AaT61Tc6Ntv1ktbGkaQ9U_MQfiQw...",
"issued_token_type": "urn:ietf:params:oauth:token-type:access_token",
"token_type": "Bearer",
"expires_in": 3600
}
Gestionar sesiones con la CLI de gcloud
Los tokens temporales Trusted Cloud que obtiene la CLI de gcloud del endpoint del servicio de tokens de seguridad caducan tras un intervalo de tiempo especificado. Cuando el token está a punto de caducar, la CLI de gcloud inspecciona el archivo de credenciales que has proporcionado y la validez de las credenciales que has recibido de tu proveedor de identidades. Si tus credenciales siguen siendo válidas, la CLI de gcloud obtendrá de forma transparente un nuevoTrusted Cloud token de acceso y tu sesión actual se ejecutará sin interrupciones.
Si tus credenciales han caducado, no se emitirán tokens nuevos y las llamadas que hagas con esas credenciales fallarán. Trusted Cloud En este punto, debes volver a autenticarte.
Puedes finalizar tu sesión ejecutando el siguiente comando:
gcloud auth revoke
gcloud
admite varias sesiones de usuario. Para obtener la lista de sesiones, incluida la sesión activa, ejecuta el siguiente comando:
gcloud auth list
El resultado del comando es similar al siguiente:
Credentialed Accounts
ACTIVE ACCOUNT
* bola@example.com
principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID
/subject/kalani@example.com
Para cambiar a otra sesión y definirla como activa, ejecuta el siguiente comando:
gcloud config set account principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_ID
Siguientes pasos
- Eliminar usuarios de la federación de identidades de la plantilla y sus datos
- Consulta qué Trusted Cloud productos son compatibles con Workforce Identity Federation.
- Configurar el acceso de los usuarios a la consola (federado)