En esta guía, se describe cómo usar la federación de Workload Identity para permitir que las cargas de trabajo usen credenciales de Active Directory a fin de autenticarse en Google Cloud.
Si ejecutas cargas de trabajo de Windows Server en un entorno de Active Directory, estas cargas de trabajo podrían tener acceso a las credenciales de Active Directory. Por ejemplo:
- Un servicio de Windows podría estar configurado para acceder como un usuario de dominio.
- Una aplicación de IIS podría configurarse para ejecutarse como una cuenta de servicio administrada de grupo (gMSA).
Si usas la federación de Workload Identity en combinación con los Servicios de federación de Active Directory (AD FS), puedes permitir que estas cargas de trabajo intercambien sus credenciales de Kerberos de Active Directory por credenciales de Google Cloud de corta duración. Las cargas de trabajo pueden usar estas credenciales de corta duración para acceder a las APIs de Google Cloud.
El intercambio de credenciales de Active Directory con credenciales de Google Cloud de corta duración funciona mediante el encadenamiento de dos intercambios de tokens:
- Una carga de trabajo usa OpenID Connect (OIDC), SAML-POST o WS-Trust para solicitar un token de OIDC o una aserción de SAML de AD FS. Para autenticarse en AD FS, la carga de trabajo usa la autenticación integrada de Windows (IWA) y sus credenciales existentes de Active Directory.
- Luego, la carga de trabajo usa la federación de Workload Identity para intercambiar el token OIDC o la aserción de SAML por un token STS y, de forma opcional, actuar en nombre de una cuenta de servicio de Google Cloud.
En este artículo, se muestra cómo puedes automatizar este proceso de una manera que no requiere cambios en tu aplicación mediante el Autenticador de carga de trabajo para Windows.
Prepara AD FS
Solo debes realizar estos pasos una vez.
Selecciona un protocolo
La forma de preparar AD FS depende del protocolo que desees usar:
SAML: Puedes permitir que las cargas de trabajo usen SAML o WS-Trust para obtener aserciones de SAML.
Para usar SAML o WS-Trust, debes crear una parte de confianza en AD FS y configurar un grupo de identidades de carga de trabajo para que confíe en las aserciones emitidas para esta parte de confianza.
Una carga de trabajo puede usar su usuario de Active Directory para autenticarse en AD FS, mediante la vinculación SAML-POST o WS-Trust. AD FS emite una aserción de SAML que contiene información sobre el usuario de Active Directory de la carga de trabajo y datos adicionales, como las membresías de grupo.
El uso de SAML o WS-Trust requiere AD FS 3.0, AD FS para Windows Server 2016 o una versión más reciente de AD FS.
OIDC: Puedes permitir que las cargas de trabajo usen OIDC para obtener tokens de OIDC.
Para usar OIDC, debes crear un cliente de OIDC (aplicación nativa) y un recurso de OIDC (API web) en AD FS. Luego, configura un grupo de Workload Identity a fin de que confíe en los tokens de acceso emitidos para la API de Web.
Una carga de trabajo puede usar su usuario de Active Directory y el permiso
client_credentials
de OAuth para autenticarse en AD FS. AD FS emite un token de acceso, pero no un token de ID.El token de acceso contiene información sobre la aplicación cliente de OIDC, pero no incluye información sobre el usuario de Active Directory de la carga de trabajo ni las membresías de grupo.
Debido a que los tokens de acceso no contienen información sobre el usuario de Active Directory, el uso de OIDC puede ser menos flexible que el uso de SAML o WS-Trust.
El uso de OIDC requiere AD FS para Windows Server 2016 o una versión más reciente de AD FS.
Requisitos previos de IWA
En esta sección, se describen los requisitos previos de IWA que se requieren para usar esta guía.
Si nunca usaste IWA con AD FS, asegúrate de cumplir con los siguientes requisitos:
- Configuraste AD FS para permitir la Autenticación de Windows y para usar el nombre principal del servicio correcto.
- Configuraste la protección extendida para la autenticación a fin de que sea compatible con la implementación de AD FS.
Registra la carga de trabajo
Para registrar tu carga de trabajo en AD FS, haz lo siguiente:
OIDC
Para permitir que las cargas de trabajo usen OIDC, necesitas dos registros de aplicaciones en AD FS:
Un registro de aplicación del tipo aplicación nativa o aplicación de servidor
Un registro de aplicación del tipo API de Web que corresponde a un proveedor de grupos de Workload Identity en Google Cloud.
Registra la aplicación cliente
Crea una aplicación cliente que represente la carga de trabajo. Si tienes varias cargas de trabajo que necesitan acceso a Google Cloud, es posible que debas crear varias aplicaciones cliente.
Para registrar una aplicación cliente en AD FS, haz lo siguiente:
- Abre el complemento de MMC de AD FS y navega a Application Groups.
- Haz clic en Add application group.
En la página Te damos la bienvenida, haz lo siguiente:
- En el campo de texto, ingresa un nombre para el cliente.
- Selecciona Aplicación de servidor.
- Haz clic en Siguiente.
En la página Aplicación del servidor, haz lo siguiente:
En el campo de texto
, ingresa un identificador de cliente (ID de cliente) y un URI de redireccionamiento. Si solo planeas usar el tipo de otorgamiento
client_credentials
, el URI de redireccionamiento no se usará y puedes usar un URI comohttp://localhost/
.Haz clic en Siguiente.
En la página Configurar credenciales de aplicación, haz lo siguiente:
- Elige cómo se autentica el cliente. Para usar IWA, configura la Autenticación integrada de Windows como habilitada.
- Selecciona el usuario de dominio con el que está configurada tu aplicación.
- Haz clic en Siguiente.
En la página Resumen, revisa la configuración y haz clic en Siguiente.
Haz clic en Cerrar para descartar el cuadro de diálogo.
Crea una aplicación de API de Web para el grupo de federación de Workload Identity
Crea otro registro de aplicación de tipo API de Web. Esta aplicación corresponde a un proveedor de grupos de Workload Identity, y debes usarla para configurar una relación de confianza con Google Cloud.
Para crear la aplicación en AD FS, haz lo siguiente:
- Abre el complemento de MMC de AD FS y navega a Application Groups.
- Haz clic en Add application group.
- En la página de bienvenida, ingresa un nombre, como
Workload Identity Federation (test environment)
, y selecciona API de Web. Luego, haga clic en Siguiente. En la página Configurar API de Web, ingresa un identificador de relación de confianza para la API de Web.
En lugar de definir un identificador de relación de confianza personalizado, puedes usar el siguiente URI como tal:
https://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID
Reemplaza lo siguiente:
PROJECT_NUMBER
: Es el número del proyecto de Google Cloud que usas para crear el grupo de Workload Identity.POOL_ID
: Es un ID que elijas que identifique el grupo de Workload Identity. Debes usar el mismo ID cuando crees el grupo de Workload Identity más adelante.PROVIDER_ID
: Es un ID que elijas que identifique al proveedor de grupos de Workload Identity. Debes usar el mismo ID cuando crees el proveedor de grupos de Workload Identity más adelante.
Formatear el URI de esta manera garantiza que el identificador de usuario de confianza identifique de forma única un proveedor de grupos de Workload Identity.
Necesitarás el identificador de relación de confianza más adelante cuando configures el proveedor de grupo de Workload Identity.
Haz clic en Siguiente.
En la página Apply access control policy, selecciona una política de acceso adecuada y, luego, haz clic en Siguiente.
En la página Configure application permissions, agrega la aplicación cliente que creaste antes. Luego, haga clic en Siguiente.
En la página Resumen, revisa la configuración y haz clic en Siguiente.
Haz clic en Cerrar para descartar el cuadro de diálogo.
SAML o WS-Trust
Crea una relación de confianza con la parte autenticada en AD FS:
- Abre el complemento AD FS de MMC.
- Navega a relación de confianza con la parte autenticada.
- Haz clic en Agregar relación de confianza con la parte autenticada.
- En la página Te damos la bienvenida del asistente para agregar la relación de confianza con la parte autenticada, haz lo siguiente:
- Selecciona Compatible con notificaciones.
- Haz clic en Start.
- En la página Seleccionar fuente de datos, haz lo siguiente:
- Selecciona Enter data about relying party manually.
- Haz clic en Siguiente.
En la página Especificar nombre visible, haz lo siguiente:
- Ingresa un nombre para la relación de confianza.
- Haz clic en Siguiente.
En la página Configurar certificado, haz clic en Siguiente. No se requiere un certificado de encriptación porque la federación de Workload Identity no admite aserciones de SAML encriptadas.
En la página Configurar URL, haz lo siguiente:
SAML
Usa la siguiente configuración:
- Configura Habilitar compatibilidad con el protocolo SAML 2.0 WebSSO como habilitado.
En el campo URL del servicio SSO SAML 2.0 de la parte autenticada, ingresa la siguiente URL:
https://sts.googleapis.com/v1/token
WS-Trust
Mantén la configuración predeterminada
Haz clic en Siguiente.
En la página Configurar identificadores, ingresa un identificador de parte de confianza.
En lugar de definir un identificador de relación de confianza personalizado, puedes usar el siguiente URI como tal:
https://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID
Reemplaza lo siguiente:
PROJECT_NUMBER
: Es el número del proyecto de Google Cloud que usas para crear el grupo de Workload Identity.POOL_ID
: Es un ID que elijas que identifique el grupo de Workload Identity. Debes usar el mismo ID cuando crees el grupo de Workload Identity más adelante.PROVIDER_ID
: Es un ID que elijas que identifique al proveedor de grupos de Workload Identity. Debes usar el mismo ID cuando crees el proveedor de grupos de Workload Identity más adelante.
Formatear el URI de esta manera garantiza que el identificador de usuario de confianza identifique de forma única un proveedor de grupos de Workload Identity.
Necesitarás el identificador de relación de confianza más adelante cuando configures el proveedor de grupo de Workload Identity.
Haga clic en Next.
En la página Elige una política de control de acceso, selecciona una política de control de acceso adecuada y, luego, haz clic en Siguiente.
En la página Listo para agregar confianza, revisa la configuración y haz clic en Siguiente.
En la página Finalizar, haz clic en Cerrar para descartar el cuadro de diálogo.
Para ser compatibles con la federación de Workload Identity, las aserciones de SAML deben contener al menos una reclamación que identifique de forma única al usuario de Active Directory. Por lo general, debes usar la reclamación Name ID para este fin, que corresponde al valor del elemento NameID
en la aserción de SAML.
Para personalizar el conjunto de reclamaciones de la aserción de SAML, debes editar la política de emisión de reclamaciones de la relación de confianza con la parte autenticada. Para editar la política de emisión de reclamaciones, haz lo siguiente:
- En la lista de relaciones de confianza, selecciona la relación de confianza que acabas de crear y haz clic en Editar política de emisión de reclamaciones.
- Haz clic en Agregar regla.
- En la página Elige un tipo de regla del asistente para Agregar regla de reclamación de transformación, haz lo siguiente:
- Selecciona Transformar un reclamo entrante.
- Haz clic en Siguiente.
En la página Configurar regla de reclamación, establece la siguiente configuración:
- Nombre de la regla de reclamación:
Name Identifier
. - Tipo de reclamación entrante: Selecciona SID principal, UPN o una reclamación diferente para identificar de forma exclusiva al sujeto.
- Tipo de reclamo saliente: Name ID
- Formato de ID de nombre saliente: Sin especificar.
- Nombre de la regla de reclamación:
Selecciona Pasar todos los valores de la reclamación y haz clic en Finalizar.
De forma opcional, configura reglas adicionales para incluir más atributos en las aserciones de SAML.
Haz clic en Aceptar para cerrar el cuadro de diálogo de la política de emisión de reclamaciones.
Configura la federación de Workload Identity
Solo debes realizar estos pasos una vez por cada usuario de Azure AD o la cuenta de AWS con la que deseas federar. Luego, puedes usar el mismo grupo y proveedor de Workload Identity para varias cargas de trabajo y en varios proyectos de Google Cloud.
Para comenzar a configurar la federación de Workload Identity, haz lo siguiente:
-
En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.
Es mejor usar un proyecto exclusivo para administrar los grupos y los proveedores de Workload Identity.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Obtén información sobre cómo verificar si la facturación está habilitada en un proyecto.
Habilita las API de IAM, Resource Manager, Service Account Credentials, and Security Token Service.
Define una condición y la asignación de atributos
Las credenciales específicas del entorno de la carga de trabajo de AWS o Azure contienen varios atributos, y debes decidir qué atributo deseas usar como identificador de asunto (google.subject
) en Google Cloud.
De manera opcional, puedes asignar atributos adicionales. Luego, puedes hacer referencia a estos atributos adicionales cuando otorgues acceso a los recursos.
OIDC
Tus asignaciones de atributos pueden usar las reclamaciones incorporadas en los tokens de acceso de AD FS como atributos de origen.
Para autenticar una aplicación, puedes usar la siguiente asignación de atributos:
google.subject=assertion.appid
Esta asignación establece google.subject
en el valor de la reclamación appid
, que contiene el ID de cliente de la aplicación de AD FS.
SAML o WS-Trust
Tus asignaciones de atributos pueden usar las reclamaciones incorporadas en la aserción emitida por AD FS, como se describió antes en esta guía.
Usa la siguiente asignación para permitir que la federación de Workload Identity use la reclamación de ID de nombre de la aserción de SAML para identificar de forma única al usuario:
google.subject=assertion.subject
Si configuraste tu política de emisión de reclamaciones a fin de incluir reclamaciones adicionales en las aserciones de SAML, puedes agregar asignaciones adicionales. Por ejemplo:
google.groups=assertion.attributes['http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid'] attribute.userip=['http://schemas.microsoft.com/2014/09/requestcontext/claims/userip'][0]
De manera opcional, puedes definir una condición de atributo. Las condiciones de los atributos son expresiones CEL que pueden verificar los atributos de aserción y los atributos de destino.
Si la condición del atributo se evalúa como true
para una credencial determinada, se acepta la credencial. De lo contrario, se rechaza la credencial.
OIDC
Puedes usar una condición de atributo a fin de restringir qué clientes pueden usar la federación de Workload Identity para obtener tokens de Google Cloud de corta duración.
Por ejemplo, la siguiente condición define que las aplicaciones deben usar IWA para autenticarse en AD FS:
assertion.authmethod=='http://schemas.microsoft.com/ws/2008/06/identity/authenticationmethod/windows'
A fin de controlar la lista de aplicaciones, puedes obtener credenciales de corta duración para Google Cloud, no definas condiciones de atributos. En su lugar, usa permisos del cliente en AD FS para definir qué aplicaciones están permitidas.
SAML o WS-Trust
Puedes usar una condición de atributo para restringir qué usuarios de Active Directory pueden usar la federación de identidades de carga de trabajo a fin de obtener tokens de Google Cloud de corta duración.
Por ejemplo, la siguiente condición solo permite aserciones de SAML que incluyen una reclamación de membresía de grupo determinada:
"S-1-5-6" in google.groups
Crea el proveedor y el grupo de Workload Identity
Roles obligatorios
A fin de obtener los permisos que necesitas para configurar la federación de Workload Identity, pídele a tu administrador que te otorgue los siguientes roles de IAM en el proyecto:
- Administrador de grupos de Workload Identity (
roles/iam.workloadIdentityPoolAdmin
) - Administrador de cuenta de servicio (
roles/iam.serviceAccountAdmin
)
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso.
De manera alternativa, la función básica de propietario de IAM (roles/owner
) también incluye permisos para configurar la federación de identidades.
No deberías otorgar roles básicos en un entorno de producción, pero puedes otorgarlas en un entorno de desarrollo o de prueba.
Consola
En la consola de Google Cloud, ve a la página Proveedor y grupo de cargas de trabajo nuevos.
En Crear un grupo de identidades, ingresa lo siguiente:
- Nombre: Es el nombre del grupo. El nombre también se usa como el ID del grupo. No puedes cambiar el ID del grupo más adelante.
- Descripción: Es el texto que describe el propósito del grupo.
Haz clic en Continuar.
Establece la configuración del proveedor:
OIDC
- Selecciona un proveedor: OpenID Connect (OIDC).
- Nombre del proveedor: el nombre del proveedor del conjunto de datos. El nombre también se usa como el ID del proveedor. No puedes cambiar el ID del proveedor más adelante.
- URL del emisor:
https://ADFS_DOMAIN/adfs
en la queADFS_DOMAIN
es el nombre de dominio público del servidor o la granja de AD FS.
SAML
Haz clic en Continuar.
En Configura los atributos del proveedor, agrega las asignaciones de atributos que identificaste antes.
En Condiciones del atributo, ingresa la condición del atributo que identificaste antes. Deja el campo en blanco si no tienes una condición de atributo.
Haz clic en Guardar para crear el proveedor y el grupo de Workload Identity.
gcloud
Crea un nuevo grupo de Workload Identity:
gcloud iam workload-identity-pools create POOL_ID \ --location="global" \ --description="DESCRIPTION" \ --display-name="DISPLAY_NAME"
Reemplaza lo siguiente:
POOL_ID
: Es el ID único para el grupo.DISPLAY_NAME
: es el nombre del grupo.DESCRIPTION
: Es la descripción del grupo. Esta descripción aparece cuando se otorga acceso a identidades de grupo.
Agrega un proveedor de grupos de Workload Identity:
OIDC
gcloud iam workload-identity-pools providers create-oidc PROVIDER_ID \ --location="global" \ --workload-identity-pool="POOL_ID" \ --issuer-uri="
https://ADFS_DOMAIN/adfs
" \ --allowed-audiences="RELYING_PARTY_ID" \ --attribute-mapping="MAPPINGS" \ --attribute-condition="CONDITIONS"Reemplaza lo siguiente:
POOL_ID
: Es el ID del grupo.ADFS_DOMAIN
: Es el nombre de dominio público del servidor o la granja de AD FS.RELYING_PARTY_ID
: Es el identificador de relación de confianza de la aplicación de API de Web para el grupo de federación de Workload Identity en AD FS. Solo necesitas este parámetro si usas un identificador de relación de confianza personalizado.MAPPINGS
: Es la lista separada por comas de las asignaciones de atributos que identificaste antes.CONDITIONS
: Es la condición de atributo que identificaste antes. Quita el parámetro si no tienes una condición de atributo.
SAML o WS-Trust
curl -O https://ADFS_DOMAIN/federationmetadata/2007-06/federationmetadata.xml gcloud iam workload-identity-pools providers create-saml PROVIDER_ID \ --location="global" \ --workload-identity-pool="POOL_ID" \ --idp-metadata-path="federationmetadata.xml" \ --attribute-mapping="MAPPINGS" \ --attribute-condition="CONDITIONS"
Reemplaza lo siguiente:
ADFS_DOMAIN
: Nombre de dominio de tu servidor de AD FS o de la granja de servidores.POOL_ID
: el ID del grupo.MAPPINGS
: una lista separada por comas de las asignaciones de atributos que identificaste antes.CONDITIONS
: la condición de atributo que creaste antes en esta guía (opcional).
Ejemplo:
gcloud iam workload-identity-pools providers create-saml example-provider \ --location="global" \ --workload-identity-pool="pool-1" \ --idp-metadata-path="federationmetadata.xml" \ --attribute-mapping=google.subject=assertion.subject"
Autentica una carga de trabajo
Debes seguir estos pasos una vez por carga de trabajo.
Crea una cuenta de servicio para la carga de trabajo externa
Habilita las API de IAM, Security Token Service, and Service Account Credentials.
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 Workload Identity.
Otorga acceso a la cuenta de servicio a los recursos a los que deseas que accedan las identidades externas.
Permite que la carga de trabajo externa actúe en nombre de la cuenta de servicio
Para permitir que las identidades externas actúen en nombre de una cuenta de servicio, otórgales el rol del usuario de Workload Identity (roles/iam.workloadIdentityUser
) en esta cuenta. Puedes otorgar el rol a una identidad externa específica o a varias identidades externas:
- Para una identidad externa específica, escribe una condición de atributo que verifique el atributo
google.subject
. - Para un grupo de identidades externas, escribe una condición de atributo que verifique el atributo
google.groups
o un atributo personalizadoattribute.NAME
. - Para todas las identidades externas del grupo de Workload Identity, no uses una condición de atributo.
Consola
Para permitir que las identidades externas actúen en nombre de una cuenta de servicio con la consola de Google Cloud, haz lo siguiente:
En la consola de Google Cloud, ve a la página Grupos de Workload Identity.
Busca el grupo de Workload Identity que deseas actualizar y selecciónalo.
Para otorgar acceso al grupo de Workload Identity seleccionado, haz clic en
Otorgar acceso.En la lista Cuenta de servicio, selecciona la cuenta de servicio para las identidades externas que actuarán en nombre de ella.
Para elegir qué identidades en el grupo pueden actuar en nombre de la cuenta de servicio, realiza una de las siguientes acciones:
A fin de permitir que solo las identidades específicas del grupo de Workload Identity 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 permitir que todas las identidades externas del grupo de Workload Identity actúen en nombre de la cuenta de servicio, selecciona Todas las identidades en el grupo.
Para guardar la configuración, haz clic en Guardar y, luego, en Descartar.
gcloud
Para permitir que las identidades externas actúen en nombre de una cuenta de servicio mediante la CLI de gcloud, haz lo siguiente:
Para obtener el número del proyecto actual, ejecuta el siguiente comando:
gcloud projects describe $(gcloud config get-value core/project) --format=value\(projectNumber\)
Para otorgar el rol de usuario de Workload Identity (
roles/iam.workloadIdentityUser
) a identidades externas que cumplan con ciertos criterios, haz lo siguiente:Por tema
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \ --role=roles/iam.workloadIdentityUser \ --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT"
Por grupo
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \ --role=roles/iam.workloadIdentityUser \ --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP"
Por atributo
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \ --role=roles/iam.workloadIdentityUser \ --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE"
Todas las identidades externas
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \ --role=roles/iam.workloadIdentityUser \ --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/*"
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 IdentityPOOL_ID
: el ID del grupo de Workload IdentitySUBJECT
: 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 atributos
Crea una configuración de credenciales
Puedes permitir que Bibliotecas cliente de Cloud y herramientas como la CLI de gcloud y Terraform usen credenciales de Active Directory para autenticarse en Google Cloud mediante el uso de Autenticador de cargas de trabajo para Windows
El autenticador de cargas de trabajo para Windows es una herramienta de código abierto que actúa como un complemento para las bibliotecas cliente de Cloud y las herramientas como la CLI de gcloud:
- Cuando la herramienta o biblioteca necesita una credencial nueva, inicia el autenticador de carga de trabajo en segundo plano.
- El autenticador de cargas de trabajo usa OIDC, SAML o WS-Trust para obtener un token nuevo o una aserción de SAML de AD FS y lo pasa a la herramienta o la biblioteca.
- Luego, la herramienta o biblioteca usa el intercambio de tokens o la aserción de SAML con credenciales de Google Cloud de corta duración mediante la federación de Workload Identity.
Si deseas usar el autenticador de cargas de trabajo para Windows, debes crear un archivo de configuración de credenciales. Este archivo define lo siguiente:
- Dónde encontrar el autenticador de cargas de trabajo para Windows ejecutable (
wwauth.exe
) y con qué parámetros ejecutarlo - Qué grupo y proveedor de Workload Identity usar
- Qué cuenta de servicio actuará en nombre de ella
Para crear un archivo de configuración de credenciales, haz lo siguiente en Windows Server que ejecuta la carga de trabajo:
- Haz clic con el botón derecho en Iniciar (o presiona Windows+X) y, luego, en Windows PowerShell.
Descarga el autenticador de cargas de trabajo para Windows y guárdalo en una ubicación a la que pueda acceder tu carga de trabajo:
(New-Object Net.WebClient).DownloadFile( "https://github.com/GoogleCloudPlatform/iam-windows-authenticator/releases/latest/download/wwauth.exe", "${env:ProgramData}\wwauth.exe")
Si creas un archivo de configuración de credenciales con el autenticador de cargas de trabajo para Windows, el archivo contiene la ruta de acceso a su ejecutable. Si luego borras o mueves el archivo ejecutable, las cargas de trabajo no podrán encontrarlo ni usarlo.
Iniciar
wwauth.exe
:& ${env:ProgramData}\wwauth.exe
Se abrirá un cuadro de diálogo de configuración:
Selecciona la pestaña AD FS y, luego, ingresa la siguiente configuración:
URI del emisor del servidor de AD FS: el URI público de tu servidor o granja de AD FS.
https://ADFS_DOMAIN/adfs/
Reemplaza
ADFS_DOMAIN
por el nombre de dominio público del servidor de AD FS o la granja de servidores.
La siguiente configuración depende del protocolo que desees usar:
OIDC
- Protocolo: AdfsOidc
- ID de la parte autenticada: Mantén la configuración predeterminada.
- ID de cliente: Es el identificador de cliente (ID de cliente) de la aplicación del servidor en AD FS.
SAML
- Protocolo: AdfsSamlPost
- URL del servicio para clientes de confirmación:
https://sts.googleapis.com/v1/token
- Firmar solicitudes con certificado: inhabilitado
WS-Trust
- Protocolo: AdfsWsTrust
Selecciona la pestaña Workload Identity y, luego, ingresa la siguiente configuración:
- Número de proyecto: el número de proyecto que contiene el grupo de Workload Identity
- ID del grupo: ID del grupo de Workload Identity
- ID de proveedor: ID del proveedor de grupos de Workload Identity.
- Suplantar la identidad de una cuenta de servicio: Habilitada
- Dirección de correo electrónico: Dirección de correo electrónico de la cuenta de servicio
Selecciona la pestaña AD FS y verifica que el campo ID de la parte autenticada ahora contenga la URL de tu proveedor de grupos de Workload Identity.
Haz clic en Aplicar y elige una ubicación de archivo para guardar el archivo de configuración de la credencial.
A diferencia de una clave de cuenta de servicio, un archivo de configuración de credenciales no contiene ningún secreto y no debe ser confidencial. Los detalles sobre el archivo de configuración de credenciales están disponibles en https://google.aip.dev/auth/4117.
Ya estás listo para probar tu configuración:
Selecciona un usuario de Active Directory para realizar la prueba. Puede ser el usuario de Active Directory de la carga de trabajo o el usuario con el que accediste.
Para probar la configuración con el usuario actual, haz clic en Probar.
Para probar con un usuario diferente, selecciona Probar > Probar configuración como usuario y, luego, ingresa las credenciales para el usuario.
La herramienta ahora intenta autenticarse en Google Cloud mediante los siguientes pasos:
- Adquiere un token de OIDC o una aserción de SAML de AD FS.
- Obtén un token del Google STS.
- Actúa en nombre de la cuenta de servicio.
Si la autenticación se realiza de forma correcta, verás el mensaje La prueba se completó correctamente:
Usa la configuración de credenciales para acceder a Google Cloud
Para permitir que las herramientas y las bibliotecas cliente usen la configuración de tus credenciales, haz lo siguiente en Windows Server que ejecuta tu carga de trabajo:
- Haz clic con el botón derecho en el botón Iniciar y, luego, en Ejecutar.
- Ingresa
sysdm.cpl
y haz clic en Aceptar. - En la pestaña Avanzado, haz clic en Variables de entorno.
En la sección Variables del sistema, agrega dos variables nuevas:
Nombre Valor GOOGLE_APPLICATION_CREDENTIALS
Ruta de acceso al archivo de configuración de credenciales GOOGLE_EXTERNAL_ACCOUNT_ALLOW_EXECUTABLES
1
Haz clic en OK.
Usa una biblioteca cliente o herramienta que admita la federación de Workload Identity y pueda encontrar credenciales de forma automática:
C++
La mayoría de las bibliotecas cliente de Google Cloud para C++ admiten la federación de identidades mediante un objeto
ChannelCredentials
, que se crea mediante una llamada agrpc::GoogleDefaultCredentials()
. Para inicializar esta credencial, debes compilar las bibliotecas cliente con la versión 1.36.0 o posterior de gRPC.La biblioteca cliente de Cloud Storage para C++ usa la API de REST, no gRPC, por lo que no admite la federación de identidades.
Comienza a usarlo
Las bibliotecas cliente para Go admiten la federación de identidades si usan la versión v0.0.0-20210218202405-ba52d332ba99 o una versión posterior del módulo
golang.org/x/oauth2
.Para verificar qué versión de este módulo usa tu biblioteca cliente, ejecuta los siguientes comandos:
cd $GOPATH/src/cloud.google.com/go go list -m golang.org/x/oauth2
Java
Las bibliotecas cliente para Java admiten la federación de identidades si usan la versión 0.24.0 o posterior del artefacto
com.google.auth:google-auth-library-oauth2-http
.Para verificar qué versión de este artefacto usa tu biblioteca cliente, ejecuta el siguiente comando de Maven en el directorio de tu aplicación:
mvn dependency:list -DincludeArtifactIds=google-auth-library-oauth2-http
Node.js
Las bibliotecas cliente de Node.js admiten la federación de Workload Identity si usan la versión 7.0.2 o una versión posterior del paquete
google-auth-library
.Para verificar qué versión de este paquete usa tu biblioteca cliente, ejecuta el siguiente comando en el directorio de tu aplicación:
npm list google-auth-library
Cuando creas un objeto
GoogleAuth
, puedes especificar un ID del proyecto o puedes permitir queGoogleAuth
encuentre el ID del proyecto de forma automática. Para encontrar el ID del proyecto de manera automática, la cuenta de servicio en el archivo de configuración debe tener la función de Navegador (roles/browser
) o una función con permisos equivalentes en tu proyecto. Para obtener más información, consulta elREADME
del paquetegoogle-auth-library
.Python
Las bibliotecas cliente para Python admiten la federación de identidades si usan la versión 1.27.0 o posterior del paquete
google-auth
.Para verificar qué versión de este paquete usa tu biblioteca cliente, ejecuta el siguiente comando en el entorno en el que está instalado el paquete:
pip show google-auth
Si deseas especificar un ID del proyecto para el cliente de autenticación, puedes configurar la variable de entorno
GOOGLE_CLOUD_PROJECT
o permitir que el cliente busque el ID del proyecto de forma automática. Para encontrar el ID del proyecto de manera automática, la cuenta de servicio en el archivo de configuración debe tener la función de Navegador (roles/browser
) o una función con permisos equivalentes en tu proyecto. Para obtener más información, consulta la guía del usuario del paquetegoogle-auth
.gcloud
Para autenticar con la federación de Workload Identity, usa el comando
gcloud auth login
:gcloud auth login --cred-file=FILEPATH.json
Reemplaza
FILEPATH
por la ruta de acceso al archivo de configuración de credenciales.La asistencia para la federación de Workload Identity en la CLI de gcloud está disponible en la versión 363.0.0 y posteriores de la CLI de gcloud.
Terraform
El proveedor de Google Cloud admite la federación de Workload Identity si usas la versión 3.61.0 o una posterior:
terraform { required_providers { google = { source = "hashicorp/google" version = "~> 3.61.0" } } }
gsutil
Para autenticar mediante la federación de Workload Identity, usa uno de los siguientes métodos:
Cuando uses gsutil junto con gcloud, accede con normalidad:
gcloud auth login --cred-file=FILEPATH.json
Cuando uses gsutil como una aplicación de línea de comandos independiente, edita el archivo .boto para incluir la siguiente sección:
[Credentials] gs_external_account_file = FILEPATH
Reemplaza
FILEPATH
en ambos casos por la ruta de acceso al archivo de configuración de la credencial.La asistencia para la federación de Workload Identity en gsutil está disponible en la versión 379.0.0 y posteriores de la CLI de gcloud.
bq
Para autenticar mediante la federación de Workload Identity, usa el comando
gcloud auth login
de la siguiente manera:gcloud auth login --cred-file=FILEPATH.json
Reemplaza
FILEPATH
por la ruta de acceso al archivo de configuración de credenciales.La compatibilidad con la federación de Workload Identity en bq está disponible en la versión 390.0.0 y posteriores de la CLI de gcloud.
¿Qué sigue?
- Obtén más información sobre la federación de Workload Identity.
- Obtén más información sobre las prácticas recomendadas para usar la federación de Workload Identity.
- Consulta cómo puedes administrar grupos y proveedores de Workload Identity.