Tempo stimato per il completamento: 18 ore
Proprietario del componente operabile: OIC
Come configurare una connessione OIDC
Le connessioni OIDC sono gestite da Desired State Configuration (DSC). Anche se possono essere creati manualmente, il DSC è il metodo preferito.
Accedi alla VM CONFIG1 come utente
Marvin.Apri c:\config\config.ps1 utilizzando VSCode o l'editor che preferisci.
Cerca
-ADFS1per trovare il nodo di configurazione del server ADFS.# Example ADFS server noe in config.ps1 NodeName = "$Site1Code-ADFS1" HyperVHost = 'AA-OC-BM01' Role = 'adfs' IPv4Addr = '172.21.0.23'Un array denominato
AdfsAppGrpcontiene tabelle hash di connessioni OIDC. Copia l'intera tabella hash diExample-OIDCe incollala dopo la tabella hashExample-OIDCesistente. Esempio:@{ Name = 'Example-OIDC' AdfsSrvApp = @{ … } @{ Name = 'Example-OIDC' AdfsSrvApp = @{ … }Aggiorna i parametri
NameeRedirectURIai valori associati alla nuova connessione OIDC. Salva il file config.ps1.Apri una finestra di PowerShell come amministratore e aggiorna la configurazione del server ADFS1. Sostituisci [Site] con il codice del tuo sito.
$Cred = Get-Credential -Message "Enter Admin Credentials for ADFS1" c:\dsc\Update-RemoteHost.ps1 -ComputerName [Site]-ADFS1 -Credential $Cred -NoThirdPartyConvalida la configurazione OIDC accedendo alla VM ADFS1, aprendo la MMC AD FS Management e facendo clic su Application Groups (Gruppi di applicazioni).
Dopo aver eseguito l'accesso alla VM ADFS1, apri
C:\confige cerca un file denominato<Your Connector Name> Srv App.txt. Salva i valoriIdentifiereClientSecrettrovati in questo file per utilizzarli in un secondo momento con la tua applicazione. Elimina questo file una volta registrati i valori dell'identificatore e del secret.
Configurazione OIDC per la console di infrastruttura GDC
Raccogli le informazioni sul connettore OIDC per il deployment di GDC.
- URI di reindirizzamento:
https://ais-core.<GDC_name>.<DNS_domain>/finish-login, ad esempiohttps://ais-core.example.domain.local/finish-login. - URL della console di servizio GDC:
https://infra-console.<GDC_name>.<DNS_domain>, ad esempiohttps://infra-console.example.domain.local.
- URI di reindirizzamento:
Segui i passaggi precedenti per creare la connessione OIDC.
Una volta configurato Anthos Identity Service (AIS) nella cella GDC, testa la configurazione OIDC con l'URL della console GDC.
- Accedi a una workstation OIC.
- Apri Chrome e vai all'URL della console dell'infrastruttura, ad esempio
https://infra-console.example.domain.local. - Quando richiesto, inserisci il tuo nome utente e la password. Se le credenziali sono valide, il sistema ti reindirizzerà alla GUI della console dell'infrastruttura.
Ripeti questo passaggio, se necessario, per ogni cella GDC gestita da questo server ADFS.
Configurazione DNS GDC per ADFS
Accedi al controller di sistema o al bootstrapper.
Esporta
kubeconfigper il cluster di amministrazione root:export KUBECONFIG=/root/release/root-admin/root-admin-kubeconfigConfigura OCIT_DOMAIN utilizzando una zona di inoltro. Sostituisci OCIT_DOMAIN con il nome di dominio OCIT e gli endpoint con gli indirizzi IP DNS 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 EOFL'output è simile a questo esempio:
dnszone.network.private.gdc.goog/ocit-domain createdSe le modifiche non vengono applicate, riavvia il deployment:
kubectl rollout restart deployment -n dns-system gpc-coredns-forwarderQuesta modifica del DNS viene propagata a tutti i cluster in GDC.
Con il file kubeconfig dell'amministratore root, verifica che la risoluzione del dominio OCIT funzioni come previsto:
NAMESERVER=$(kubectl -n dns-system get service gpc-coredns-forwarder-udp | \ awk '/[0-9]\./ {print $4}') dig +short @${NAMESERVER} fs.OCIT_DOMAINEsporta
kubeconfigper il cluster di amministrazione dell'organizzazione:export KUBECONFIG=/root/release/org-admin/org-admin-kubeconfigApplica il file kubeconfig dell'amministratore dell'organizzazione e verifica che la risoluzione del dominio OCIT funzioni come previsto:
NAMESERVER=$(kubectl -n dns-system get service gpc-coredns-infra-forwarder | \ awk '/[0-9]\./ {print $4}') dig +short @${NAMESERVER} fs.OCIT_DOMAIN
Configurazione di GDC AIS per la console
Accedi ad ADFS1 e apri MMC di gestione AD FS
Fai clic su Servizio > Certificati.
Fai doppio clic sul certificato per le comunicazioni tra servizi.
Fai clic sulla scheda Percorso di certificazione.
Seleziona il certificato in alto etichettato come Root
Fai clic su Visualizza certificato.
Seleziona la scheda Dettagli, quindi fai clic su Copia nel file…
- Salva in formato Base-64 (.CER)
Copia la CA principale di ADFS nel controller di sistema o nel bootstrapper come
adfs.cer.Accedi al controller di sistema o al bootstrapper, quindi esporta la CA radice ADFS in una variabile shell con codifica Base64. Il seguente comando codifica il certificato, incluse le intestazioni, in base64 come singola riga (senza caratteri di nuova riga):
export BASE64_CERT=$(base64 adfs.cer | tr -d "\n\r")Esporta il cluster di amministrazione radice
kubeconfig:export KUBECONFIG=/root/release/root-admin/root-admin-kubeconfigVai al repository
iace aggiungi la struttura di directory per l'organizzazione globale:cd iac; mkdir -p infrastructure/global/orgs/root/Aggiungi il file
ioauthmethod.yamlper l'organizzazione: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 EOFSostituisci le seguenti variabili:
Variabile Definizione ADFS_CERT_BASE64Il valore di
$BASE64_CERTche hai creato in un passaggio precedente.Questo certificato con codifica PEM base64 che ADFS utilizza per l'autofirma è richiesto da GKE Identity Service per stabilire una connessione sicura con un'istanza ADFS interna.
ADFS_CLIENT_IDL'ID OpenID Connect per il client dell'organizzazione in ADFS. ADFS_CLIENT_SECRETIl segreto OpenID Connect per il client dell'organizzazione registrato in ADFS. OCIT_DOMAINIl nome di dominio OCIT. Per ulteriori informazioni, vedi Configurazione DNS GDC per ADFS. Aggiungi il file
kustomization.yamlalla cartellaiacglobale:cat > infrastructure/global/orgs/root/kustomization.yaml << EOF apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization metadata: name: ioauthmethod-kustomization resources: - ioauthmethod.yaml EOFEsegui lo staging e il commit del file YAML dell'organizzazione e dei file Kustomize:
git add "infrastructure/global" git add "infrastructure/zonal" git commitEsegui il push dell'aggiornamento su GitLab:
git -c http.sslVerify=false pushAttendi la revisione del codice e l'unione.
Verifica che l'IdP appena aggiunto esista in
ClientConfig:kubectl get ClientConfig default -n kube-public -o yaml
Configurare l'autenticazione a più fattori ADFS
Requisiti
- Le YubiKey sono state fornite agli utenti in base alla sezione 5.16 Applicazioni di hardening e delle norme.
- È stato confermato che tutti i passaggi precedenti per AD FS funzionano come previsto, il che significa che gli utenti possono accedere agli endpoint GDC utilizzando l'autenticazione con nome utente e password con AD FS.
Istruzioni
Segui questi passaggi per configurare l'autenticazione a più fattori ADFS.
Abilitare l'autenticazione dei certificati ADFS a livello globale
Esegui i seguenti passaggi sull'host ADFS1.
- Connettiti all'host ADFS1 tramite RDP utilizzando l'account -sa, ad esempio username-sa.
- Esegui una finestra di PowerShell come
Administrator. Controlla se CertificateAuthentication è già abilitato nel tuo ambiente:
# Checking current Global Authentication Policy for # PrimaryIntranetAuthenticationProvider Get-AdfsGlobalAuthenticationPolicy | Select-Object ` -Property PrimaryIntranetAuthenticationProvider # Example output, note it is missing CertificateAuthentication PrimaryIntranetAuthenticationProvider : {FormsAuthentication, WindowsAuthentication, MicrosoftPassportAuthentication}Imposta PrimaryIntranetAuthenticationProvider in modo da includere CertificateAuthentication. Inoltre, rimuovi un metodo di autenticazione non utilizzato in 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}
Testare l'autenticazione del certificato ADFS
Completa i seguenti passaggi su una workstation IT OC.
- Accedi a una workstation OC IT come account non privilegiato.
- Apri il browser Chrome e accedi a infra-console.CELL_NAME.DOMAIN come faresti normalmente, ad esempio https://infra-console.example.domain.local.
Fai clic sull'opzione Accedi utilizzando un certificato visualizzata sotto il pulsante Accedi.
Seleziona il certificato utente non privilegiato dalla finestra di dialogo e fai clic su OK.
Quando richiesto, inserisci il PIN di YubiKey e fai clic su Ok.
Se l'autenticazione ADFS funziona correttamente, dovresti visualizzare la GUI della console dell'infrastruttura come se avessi inserito il nome utente e la password.
Esci dalla console dell'infrastruttura utilizzando il pulsante Esci, quindi chiudi tutte le finestre di Chrome. Questa azione rimuove le credenziali memorizzate nella cache e ti consente di testare ogni altro endpoint GDC.
Ripeti i passaggi di questa sezione per ogni endpoint GDC, ricordandoti di disconnetterti e chiudere Chrome ogni volta per assicurarti di visualizzare le richieste di autenticazione AD FS:
- Console.gdchservices (organizzazione gdchservices)
- GitLab
- ServiceNow
- Altre organizzazioni
Applica rigorosamente l'autenticazione MFA di ADFS a livello globale
Esegui i seguenti passaggi sull'host ADFS1.
- RDP all'host ADFS1 come account -sa, ad esempio alexb-sa.
- Esegui una finestra PowerShell come amministratore.
Imposta PrimaryIntranetAuthenticationProvider in modo che includa 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}
Esegui nuovamente il test di ogni endpoint GDC
Esegui i seguenti passaggi da una workstation IT di OC.
- Accedi a una workstation OC IT come account non privilegiato.
- Apri il browser Chrome e accedi a infra-console.CELL_NAME.DOMAIN come faresti normalmente, ad esempio https://infra-console.example.domain.local.
Il portale AD FS chiede immediatamente un certificato o una YubiKey. Non devi più visualizzare i campi per un nome utente o una password.
Dopo aver selezionato il certificato, inserisci il PIN della YubiKey, identico a quello dei test precedenti.
La configurazione è stata completata.