Tiempo estimado para completarse: 18 horas
Propietario del componente operable: OIC
Cómo configurar una conexión OIDC
Las conexiones OIDC se gestionan mediante la configuración del estado deseado (DSC). Aunque se pueden crear manualmente, DSC es el método preferido.
Inicia sesión en la VM CONFIG1 como usuario
Marvin.Abre c:\config\config.ps1 con VSCode o el editor que prefieras.
Busca
-ADFS1para encontrar el nodo de configuración del servidor ADFS.# Example ADFS server noe in config.ps1 NodeName = "$Site1Code-ADFS1" HyperVHost = 'AA-OC-BM01' Role = 'adfs' IPv4Addr = '172.21.0.23'Una matriz llamada
AdfsAppGrpcontiene tablas hash de conexiones OIDC. Copia toda la tabla hash deExample-OIDCy pégala después de la tabla hashExample-OIDC. Ejemplo:@{ Name = 'Example-OIDC' AdfsSrvApp = @{ … } @{ Name = 'Example-OIDC' AdfsSrvApp = @{ … }Actualiza los parámetros
NameyRedirectURIcon los valores asociados a tu nueva conexión OIDC. Guarda el archivo config.ps1.Abre una ventana de PowerShell como administrador y actualiza la configuración del servidor ADFS1. Sustituye [Site] por el código de tu sitio.
$Cred = Get-Credential -Message "Enter Admin Credentials for ADFS1" c:\dsc\Update-RemoteHost.ps1 -ComputerName [Site]-ADFS1 -Credential $Cred -NoThirdPartyValida la configuración de OIDC iniciando sesión en la máquina virtual ADFS1, abriendo la MMC Gestión de AD FS y, a continuación, haciendo clic en Grupos de aplicaciones.
Mientras tengas la sesión iniciada en la máquina virtual ADFS1, abre
C:\configy busca un archivo llamado<Your Connector Name> Srv App.txt. Guarda los valoresIdentifieryClientSecretque se encuentran en este archivo para usarlos más adelante con tu aplicación. Elimina este archivo una vez que hayas registrado los valores del identificador y del secreto.
Configuración de OIDC para la consola de infraestructura de GDC
Recopila información del conector OIDC para la implementación de GDC.
- URIs de redirección:
https://ais-core.<GDC_name>.<DNS_domain>/finish-login, por ejemplo,https://ais-core.example.domain.local/finish-login. - URL de la consola de servicios de GDC:
https://infra-console.<GDC_name>.<DNS_domain>, por ejemplo,https://infra-console.example.domain.local.
- URIs de redirección:
Sigue los pasos anteriores para crear la conexión OIDC.
Una vez que se haya configurado Anthos Identity Service (AIS) en la celda de GDC, prueba la configuración de OIDC con la URL de la consola de GDC.
- Inicia sesión en una estación de trabajo de OIC.
- Abre Chrome y ve a la URL de la consola de infraestructura, por ejemplo,
https://infra-console.example.domain.local. - Cuando se te pida, introduce tu nombre de usuario y tu contraseña. Si las credenciales son válidas, se te redirigirá a la interfaz gráfica de usuario de la consola de infraestructura.
Repite este paso según sea necesario para cada celda de GDC gestionada por este servidor de ADFS.
Configuración de DNS de GDC para ADFS
Inicia sesión en el controlador del sistema o en el Bootstrapper.
Exporta
kubeconfigpara el clúster de administrador raíz:export KUBECONFIG=/root/release/root-admin/root-admin-kubeconfigConfigura el OCIT_DOMAIN mediante una zona directa. Sustituye OCIT_DOMAIN por el nombre de dominio de OCIT y los endpoints por las direcciones IP de DNS de OC:
kubectl apply -f - <<EOF apiVersion: network.private.gdc.goog/v1alpha1 kind: DNSZone metadata: namespace: dns-system name: ocit-domain spec: domainName: OCIT_DOMAIN forwardingConfig: # Set to OC DNS IPs (the AD domain controllers) endpoints: - 192.0.2.0 - 192.0.2.1 replicateToTenantOrg: true EOFLa salida tiene este aspecto:
dnszone.network.private.gdc.goog/ocit-domain createdSi los cambios no se aplican, reinicia la implementación:
kubectl rollout restart deployment -n dns-system gpc-coredns-forwarderEste cambio de DNS se propaga a todos los clústeres de GDC.
Con el archivo kubeconfig del administrador raíz, comprueba que la resolución del dominio OCIT funciona correctamente:
NAMESERVER=$(kubectl -n dns-system get service gpc-coredns-forwarder-udp | \ awk '/[0-9]\./ {print $4}') dig +short @${NAMESERVER} fs.OCIT_DOMAINExporta
kubeconfigdel clúster de administrador de la organización:export KUBECONFIG=/root/release/org-admin/org-admin-kubeconfigAplica el archivo kubeconfig de administrador de la organización y comprueba que la resolución de dominio de OCIT funciona correctamente:
NAMESERVER=$(kubectl -n dns-system get service gpc-coredns-infra-forwarder | \ awk '/[0-9]\./ {print $4}') dig +short @${NAMESERVER} fs.OCIT_DOMAIN
Configuración de GDC AIS para la consola
Inicia sesión en ADFS1 y abre la MMC de gestión de AD FS.
Haz clic en Servicio > Certificados.
Haz doble clic en el certificado de comunicaciones de servicio.
Haz clic en la pestaña Ruta de certificación.
Selecciona el certificado de la parte superior con la etiqueta "Raíz".
Haz clic en Ver certificado.
Selecciona la pestaña Detalles y, a continuación, haz clic en Copiar en archivo...
- Guardar en formato Base-64 (.CER)
Copia la CA raíz de ADFS en el controlador del sistema o en el Bootstrapper como
adfs.cer.Inicia sesión en el controlador del sistema o en el programa de arranque y, a continuación, exporta la CA raíz de ADFS a una variable de shell con codificación base64. El siguiente comando codifica el certificado, incluidos los encabezados, en base64 como una sola línea (sin caracteres de nueva línea):
export BASE64_CERT=$(base64 adfs.cer | tr -d "\n\r")Exporta el clúster de administrador raíz
kubeconfig:export KUBECONFIG=/root/release/root-admin/root-admin-kubeconfigVe al repositorio
iacy añade la estructura de directorios de la organización global:cd iac; mkdir -p infrastructure/global/orgs/root/Añade el archivo
ioauthmethod.yamlde la organización:cat > infrastructure/global/orgs/root/ioauthmethod.yaml << EOF apiVersion: iam.global.private.gdc.goog/v1alpha1 kind: IOAuthMethod metadata: name: adfs-oidc namespace: gpc-system spec: oidc: certificateAuthorityData: ADFS_CERT_BASE64 clientID: ADFS_CLIENT_ID clientSecret: ADFS_CLIENT_SECRET groupPrefix: gdch-infra-operator- groupsClaim: groups issuerURI: https://fs.OCIT_DOMAIN/adfs scopes: openid email offline_access userClaim: email userPrefix: gdch-infra-operator- cloudConsoleRedirectURI: http://cloud.console.not.enabled kubectlRedirectURI: http://localhost:9879/callback EOFSustituye las siguientes variables:
Variable Definición ADFS_CERT_BASE64El valor de
$BASE64_CERTque has creado en un paso anterior.GKE Identity Service necesita este certificado codificado en PEM y en Base64 que ADFS usa para autofirmarse para establecer una conexión segura con una instancia interna de ADFS.
ADFS_CLIENT_IDEl ID de OpenID Connect del cliente de la organización en ADFS. ADFS_CLIENT_SECRETEl secreto de OpenID Connect del cliente de la organización registrado en ADFS. OCIT_DOMAINEl nombre de dominio de OCIT. Para obtener más información, consulta Configuración de DNS de GDC para ADFS. Añade el archivo
kustomization.yamla la carpeta globaliac:cat > infrastructure/global/orgs/root/kustomization.yaml << EOF apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization metadata: name: ioauthmethod-kustomization resources: - ioauthmethod.yaml EOFAñade y confirma el archivo YAML de la organización y los archivos de Kustomize:
git add "infrastructure/global" git add "infrastructure/zonal" git commitEnvía la actualización a GitLab:
git -c http.sslVerify=false pushEspera a que se revise el código y se combine.
Verifica que el IdP recién añadido exista en
ClientConfig:kubectl get ClientConfig default -n kube-public -o yaml
Configurar la autenticación multifactor de ADFS
Requisitos
- Las YubiKeys se han aprovisionado a los usuarios según la sección 5.16 Aplicaciones de protección y políticas.
- Se ha confirmado que todos los pasos anteriores de AD FS funcionan correctamente, lo que significa que los usuarios pueden acceder a los endpoints de GDC mediante la autenticación con nombre de usuario y contraseña con AD FS.
Instrucciones
Sigue estos pasos para configurar la autenticación multifactor de ADFS.
Habilitar la autenticación con certificado de ADFS de forma global
Sigue estos pasos en el host de ADFS1.
- Conéctate por RDP al host ADFS1 con tu cuenta -sa, por ejemplo, nombredeusuario-sa.
- Ejecuta una ventana de PowerShell como
Administrator. Comprueba si CertificateAuthentication ya está habilitado en tu entorno:
# Checking current Global Authentication Policy for # PrimaryIntranetAuthenticationProvider Get-AdfsGlobalAuthenticationPolicy | Select-Object ` -Property PrimaryIntranetAuthenticationProvider # Example output, note it is missing CertificateAuthentication PrimaryIntranetAuthenticationProvider : {FormsAuthentication, WindowsAuthentication, MicrosoftPassportAuthentication}Define PrimaryIntranetAuthenticationProvider para incluir CertificateAuthentication. Además, elimina un método de autenticación no utilizado en OC IT, MicrosoftPassportAuthentication.
# Setting the Global Authentication Policy for # PrimaryIntranetAuthenticationProvider to include CertificateAuthentication Set-AdfsGlobalAuthenticationPolicy -PrimaryIntranetAuthenticationProvider ` @('FormsAuthentication', 'WindowsAuthentication', 'CertificateAuthentication') # Validating the update to Global Authentication Policy for # PrimaryIntranetAuthenticationProvider Get-AdfsGlobalAuthenticationPolicy | Select-Object ` -Property PrimaryIntranetAuthenticationProvider # Desired output PrimaryIntranetAuthenticationProvider : {CertificateAuthentication, FormsAuthentication, WindowsAuthentication}
Probar la autenticación con certificado de ADFS
Sigue estos pasos en una estación de trabajo de TI de OC.
- Inicia sesión en una estación de trabajo de TI de OC con tu cuenta sin privilegios.
- Abre el navegador Chrome y accede a infra-console.CELL_NAME.DOMAIN como lo harías normalmente (por ejemplo, https://infra-console.example.domain.local).
Haz clic en la opción Sign in using a certificate (Iniciar sesión con un certificado) que aparece debajo del botón Sign in (Iniciar sesión).
En la ventana de diálogo, selecciona el certificado de usuario sin privilegios y haz clic en Aceptar.
Cuando se te solicite, introduce el PIN de tu YubiKey y haz clic en Aceptar.
Si la autenticación de ADFS funciona correctamente, deberías ver la interfaz gráfica de usuario de infra-console como si hubieras introducido tu nombre de usuario y tu contraseña.
Cierra sesión en la consola de infraestructura con el botón Cerrar sesión y, a continuación, cierra todas las ventanas de Chrome. Esta acción elimina las credenciales almacenadas en caché y te permite probar cada endpoint de GDC.
Repite los pasos de esta sección para cada endpoint de GDC. Recuerda cerrar sesión y cerrar Chrome cada vez para asegurarte de que se te muestren las peticiones de autenticación de AD FS:
- Console.gdchservices (organización gdchservices)
- GitLab
- ServiceNow
- Otras empresas
Aplicar estrictamente la autenticación multifactor de ADFS de forma global
Sigue estos pasos en el host de ADFS1.
- Conéctate por RDP al host ADFS1 con tu cuenta -sa, por ejemplo, alexb-sa.
- Ejecuta una ventana de PowerShell como administrador.
Defina PrimaryIntranetAuthenticationProvider para que incluya SOLO CertificateAuthentication.
# Setting the Global Authentication Policy for # PrimaryIntranetAuthenticationProvider to include CertificateAuthentication Set-AdfsGlobalAuthenticationPolicy -PrimaryIntranetAuthenticationProvider ` @('CertificateAuthentication') # Validating the update to Global Authentication Policy for # PrimaryIntranetAuthenticationProvider Get-AdfsGlobalAuthenticationPolicy | Select-Object ` -Property PrimaryIntranetAuthenticationProvider # Desired output PrimaryIntranetAuthenticationProvider : {CertificateAuthentication}
Volver a probar cada endpoint de GDC
Sigue estos pasos desde una estación de trabajo de TI de OC.
- Inicia sesión en una estación de trabajo de TI de OC con tu cuenta sin privilegios.
- Abre el navegador Chrome y accede a infra-console.CELL_NAME.DOMAIN como lo harías normalmente (por ejemplo, https://infra-console.example.domain.local).
El portal de AD FS pide inmediatamente un certificado o una YubiKey. Ya no deberían aparecer los campos de nombre de usuario o contraseña.
Después de seleccionar el certificado, introduce el PIN de tu YubiKey, que debe ser el mismo que has usado en las pruebas anteriores.
La configuración se ha completado.