Tiempo estimado para completar la actividad: 18 horas
Propietario del componente operable: OIC
Cómo configurar una conexión de OIDC
Las conexiones de OIDC se administran con la configuración de estado deseado (DSC). Si bien se pueden crear manualmente, el DSC es el método preferido.
Accede a 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'Un array llamado
AdfsAppGrpcontiene tablas hash de conexiones de OIDC. Copia toda la tabla hash deExample-OIDCy pégala después de la tabla hash deExample-OIDCexistente. Ejemplo:@{ Name = 'Example-OIDC' AdfsSrvApp = @{ … } @{ Name = 'Example-OIDC' AdfsSrvApp = @{ … }Actualiza los parámetros
NameyRedirectURIa los valores asociados con tu nueva conexión de OIDC. Guarda el archivo config.ps1.Abre una ventana de PowerShell como administrador y actualiza la configuración del servidor ADFS1. Reemplaza [Sitio] 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. Para ello, accede a la VM de ADFS1, abre el MMC de AD FS Management y, luego, haz clic en Application Groups.
Mientras accedes a la VM de 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. Borra este archivo una vez que se registren los valores del identificador y el secreto.
Configuración de OIDC para la consola de infraestructura de GDC
Recopila información del conector de OIDC para la implementación de GDC.
- URIs de redireccionamiento:
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 redireccionamiento:
Sigue los pasos anteriores para crear la conexión de OIDC.
Una vez que se configure Anthos Identity Service (AIS) en la celda de GDC, prueba la configuración de OIDC con la URL de la consola de GDC.
- Accede a una estación de trabajo de OIC.
- Abre Chrome y navega a la URL de la consola de infraestructura, por ejemplo,
https://infra-console.example.domain.local. - Cuando se te solicite, ingresa tu nombre de usuario y contraseña. Si las credenciales son válidas, se te redireccionará a la GUI de la consola de infraestructura.
Repite este paso según sea necesario para cada celda de GDC administrada por este servidor de ADFS.
Configuración de DNS de GDC para ADFS
Accede al controlador del sistema o al programa de arranque.
Exporta
kubeconfigpara el clúster de administrador raíz:export KUBECONFIG=/root/release/root-admin/root-admin-kubeconfigConfigura OCIT_DOMAIN con una zona de reenvío. Reemplaza OCIT_DOMAIN por el nombre de tu dominio de OCIT y los extremos 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 EOFEl resultado se ve como en el siguiente ejemplo:
dnszone.network.private.gdc.goog/ocit-domain createdSi no se aplican los cambios, 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 kubeconfig del administrador raíz, valida que la resolución del dominio de OCIT funcione según lo previsto:
NAMESERVER=$(kubectl -n dns-system get service gpc-coredns-forwarder-udp | \ awk '/[0-9]\./ {print $4}') dig +short @${NAMESERVER} fs.OCIT_DOMAINExporta
kubeconfigpara el clúster de administrador de la organización:export KUBECONFIG=/root/release/org-admin/org-admin-kubeconfigAplica el kubeconfig del administrador de la organización y valida que la resolución del dominio de OCIT funcione según lo previsto:
NAMESERVER=$(kubectl -n dns-system get service gpc-coredns-infra-forwarder | \ awk '/[0-9]\./ {print $4}') dig +short @${NAMESERVER} fs.OCIT_DOMAIN
Configuración del AIS de GDC para la consola
Accede a ADFS1 y, luego, abre la MMC de administración de AD FS.
Haz clic en Servicio > Certificados.
Haz doble clic en el certificado de Service Communications.
Haz clic en la pestaña Ruta de certificación.
Selecciona el certificado superior etiquetado como raíz.
Haz clic en Ver certificado.
Selecciona la pestaña Detalles y, luego, haz clic en Copiar a archivo…
- Cómo guardar en formato Base-64 (.CER)
Copia la CA raíz de ADFS en el controlador del sistema o el programa de arranque como
adfs.cer.Accede al controlador del sistema o al programa de arranque y, luego, exporta la CA raíz de ADFS a una variable de shell con codificación en 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-kubeconfigNavega al repositorio
iacy agrega la estructura de directorios para la organización global:cd iac; mkdir -p infrastructure/global/orgs/root/Agrega el archivo
ioauthmethod.yamlpara 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 EOFReemplaza las siguientes variables:
Variable Definición ADFS_CERT_BASE64Es el valor de
$BASE64_CERTque creaste en un paso anterior.GKE Identity Service requiere este certificado con codificación PEM y codificación base64 que ADFS usa para autofirmar con el fin de establecer una conexión segura con una instancia interna de ADFS.
ADFS_CLIENT_IDEs el ID de OpenID Connect para el cliente de la organización en ADFS. ADFS_CLIENT_SECRETEl secreto de OpenID Connect para el cliente de la organización registrado en ADFS. OCIT_DOMAINEs el nombre de dominio de OCIT. Para obtener más información, consulta Configuración de DNS de GDC para ADFS. Agrega el archivo
kustomization.yamla la carpetaiacglobal:cat > infrastructure/global/orgs/root/kustomization.yaml << EOF apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization metadata: name: ioauthmethod-kustomization resources: - ioauthmethod.yaml EOFAgrega 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 la revisión de código y la combinación.
Verifica que el IdP agregado recientemente exista en
ClientConfig:kubectl get ClientConfig default -n kube-public -o yaml
Configura la autenticación de varios factores de ADFS
Requisitos
- Las YubiKeys se aprovisionaron para los usuarios según la sección 5.16 Aplicaciones de políticas y refuerzo de la seguridad.
- Se confirmó que todos los pasos anteriores para AD FS funcionan según lo esperado, lo que significa que los usuarios pueden acceder a los extremos de GDC con la autenticación de nombre de usuario y contraseña con AD FS.
Instrucciones
Sigue estos pasos para configurar la autenticación de varios factores de ADFS.
Habilita la autenticación de certificados de ADFS de forma global
Ejecuta los siguientes pasos en el host 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}Configura PrimaryIntranetAuthenticationProvider para incluir CertificateAuthentication. Además, quita 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}
Prueba la autenticación de certificados de ADFS
Completa los siguientes pasos en una estación de trabajo de TI de OC.
- Accede a 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 Acceder con un certificado que aparece debajo del botón Acceder.
Selecciona tu certificado de usuario sin privilegios en la ventana de diálogo y haz clic en Aceptar.
Cuando se te solicite, ingresa el PIN de tu YubiKey y haz clic en Aceptar.
Si la autenticación de ADFS funciona correctamente, deberías ver la GUI de infra-console como si hubieras ingresado tu nombre de usuario y contraseña.
Sal de la consola de infraestructura con el botón Salir y, luego, cierra todas las ventanas de Chrome. Esta acción quita las credenciales almacenadas en caché y te permite probar cada extremo de GDC.
Repite los pasos de esta sección para cada extremo de GDC. Recuerda cerrar sesión y cerrar Chrome cada vez para asegurarte de que se te presenten los mensajes de autenticación de AD FS:
- Console.gdchservices (organización de gdchservices)
- GitLab
- ServiceNow
- Otras organizaciones
Aplicar de forma estricta la autenticación con MFA de ADFS a nivel global
Ejecuta los siguientes pasos en el host ADFS1.
- Conéctate por RDP al host ADFS1 como tu cuenta -sa, por ejemplo, alexb-sa.
- Ejecuta una ventana de PowerShell como administrador.
Establece 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}
Vuelve a probar cada extremo de GDC
Ejecuta los siguientes pasos desde una estación de trabajo de TI de OC.
- Accede a 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 solicita de inmediato un certificado o una YubiKey. Ya no deberías ver campos para un nombre de usuario o una contraseña.
Después de seleccionar tu certificado, ingresa el PIN de la llave YubiKey, que debe ser idéntico al que usaste en las pruebas anteriores.
Se completó la configuración.