Durée estimée : 18 heures
Propriétaire du composant exploitable : OIC
Configurer une connexion OIDC
Les connexions OIDC sont gérées par la configuration de l'état souhaité (DSC, Desired State Configuration). Bien qu'elles puissent être créées manuellement, la méthode DSC est préférable.
Connectez-vous à la VM CONFIG1 en tant qu'utilisateur
Marvin.Ouvrez c:\config\config.ps1 à l'aide de VSCode ou de l'éditeur de votre choix.
Recherchez
-ADFS1pour trouver le nœud de configuration du serveur ADFS.# Example ADFS server noe in config.ps1 NodeName = "$Site1Code-ADFS1" HyperVHost = 'AA-OC-BM01' Role = 'adfs' IPv4Addr = '172.21.0.23'Un tableau nommé
AdfsAppGrpcontient des tables de hachage des connexions OIDC. Copiez l'intégralité de la table de hachageExample-OIDCet collez-la après la table de hachageExample-OIDCexistante. Exemple :@{ Name = 'Example-OIDC' AdfsSrvApp = @{ … } @{ Name = 'Example-OIDC' AdfsSrvApp = @{ … }Mettez à jour les paramètres
NameetRedirectURIavec les valeurs associées à votre nouvelle connexion OIDC. Enregistrez le fichier config.ps1.Ouvrez une fenêtre PowerShell en tant qu'administrateur et mettez à jour la configuration du serveur ADFS1. Remplacez [Site] par le code de votre site.
$Cred = Get-Credential -Message "Enter Admin Credentials for ADFS1" c:\dsc\Update-RemoteHost.ps1 -ComputerName [Site]-ADFS1 -Credential $Cred -NoThirdPartyValidez la configuration OIDC en vous connectant à la VM ADFS1, en ouvrant la MMC Gestion AD FS, puis en cliquant sur Groupes d'applications.
Une fois connecté à la VM ADFS1, ouvrez
C:\configet recherchez un fichier nommé<Your Connector Name> Srv App.txt. Enregistrez les valeursIdentifieretClientSecrettrouvées dans ce fichier pour les utiliser ultérieurement avec votre application. Supprimez ce fichier une fois que vous avez enregistré l'identifiant et les valeurs secrètes.
Configuration OIDC pour la console d'infrastructure GDC
Collectez les informations du connecteur OIDC pour le déploiement GDC.
- URI de redirection :
https://ais-core.<GDC_name>.<DNS_domain>/finish-login, par exemplehttps://ais-core.example.domain.local/finish-login. - URL de la console de service GDC :
https://infra-console.<GDC_name>.<DNS_domain>, par exemplehttps://infra-console.example.domain.local.
- URI de redirection :
Suivez les étapes précédentes pour créer la connexion OIDC.
Une fois Anthos Identity Service (AIS) configuré sur la cellule GDC, testez la configuration OIDC avec l'URL de la console GDC.
- Connectez-vous à un poste de travail OIC.
- Ouvrez Chrome et accédez à l'URL de la console d'infrastructure, par exemple
https://infra-console.example.domain.local. - Lorsque vous y êtes invité, saisissez votre nom d'utilisateur et votre mot de passe. Si les identifiants sont valides, vous serez redirigé vers l'interface utilisateur graphique de la console d'infrastructure.
Répétez cette étape si nécessaire pour chaque cellule GDC gérée par ce serveur ADFS.
Configuration DNS GDC pour ADFS
Connectez-vous au contrôleur système ou au programme d'amorçage.
Exportez
kubeconfigpour le cluster d'administrateur racine :export KUBECONFIG=/root/release/root-admin/root-admin-kubeconfigConfigurez OCIT_DOMAIN à l'aide d'une zone de transfert. Remplacez OCIT_DOMAIN par votre nom de domaine OCIT et les points de terminaison par les adresses 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 EOFLe résultat ressemble à cet exemple :
dnszone.network.private.gdc.goog/ocit-domain createdSi les modifications ne sont pas appliquées, redémarrez le déploiement :
kubectl rollout restart deployment -n dns-system gpc-coredns-forwarderCette modification du DNS se propage à tous les clusters du GDC.
Avec le fichier kubeconfig de l'administrateur racine, vérifiez que la résolution du domaine OCIT fonctionne comme prévu :
NAMESERVER=$(kubectl -n dns-system get service gpc-coredns-forwarder-udp | \ awk '/[0-9]\./ {print $4}') dig +short @${NAMESERVER} fs.OCIT_DOMAINExportez
kubeconfigpour le cluster d'administrateur de l'organisation :export KUBECONFIG=/root/release/org-admin/org-admin-kubeconfigAppliquez le fichier kubeconfig de l'administrateur de l'organisation et vérifiez que la résolution du domaine OCIT fonctionne comme prévu :
NAMESERVER=$(kubectl -n dns-system get service gpc-coredns-infra-forwarder | \ awk '/[0-9]\./ {print $4}') dig +short @${NAMESERVER} fs.OCIT_DOMAIN
Configuration GDC AIS pour la console
Connectez-vous à ADFS1, puis ouvrez la MMC de gestion AD FS.
Cliquez sur Service > Certificats.
Double-cliquez sur le certificat pour les communications de service.
Cliquez sur l'onglet "Chemin de certification".
Sélectionnez le certificat tout en haut, intitulé "Racine".
Cliquez sur "Afficher le certificat".
Sélectionnez l'onglet "Détails", puis cliquez sur "Copier dans un fichier".
- Enregistrer au format Base-64 (.CER)
Copiez la CA racine ADFS sur le contrôleur système ou le programme d'amorçage sous le nom
adfs.cer.Connectez-vous au contrôleur système ou au programme d'amorçage, puis exportez l'autorité de certification racine ADFS vers une variable shell avec encodage base64. La commande suivante encode le certificat, y compris les en-têtes, en base64 sur une seule ligne (sans caractères de nouvelle ligne) :
export BASE64_CERT=$(base64 adfs.cer | tr -d "\n\r")Exportez le cluster d'administrateur racine
kubeconfig:export KUBECONFIG=/root/release/root-admin/root-admin-kubeconfigAccédez au dépôt
iacet ajoutez la structure de répertoire pour l'organisation mondiale :cd iac; mkdir -p infrastructure/global/orgs/root/Ajoutez le fichier
ioauthmethod.yamlpour l'organisation :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 EOFRemplacez les variables suivantes :
Variable Définition ADFS_CERT_BASE64La valeur de
$BASE64_CERTque vous avez créée lors d'une étape précédente.Ce certificat encodé au format PEM et en base64 qu'AD FS utilise pour s'auto-signer est requis par GKE Identity Service pour établir une connexion sécurisée avec une instance AD FS interne.
ADFS_CLIENT_IDID OpenID Connect du client de l'organisation dans ADFS. ADFS_CLIENT_SECRETCode secret OpenID Connect pour le client de l'organisation enregistré dans AD FS. OCIT_DOMAINNom de domaine OCIT. Pour en savoir plus, consultez Configuration DNS GDC pour ADFS. Ajoutez le fichier
kustomization.yamlau dossieriacglobal :cat > infrastructure/global/orgs/root/kustomization.yaml << EOF apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization metadata: name: ioauthmethod-kustomization resources: - ioauthmethod.yaml EOFOrganisez et validez le fichier YAML de l'organisation et les fichiers Kustomize :
git add "infrastructure/global" git add "infrastructure/zonal" git commitTransférez la mise à jour vers GitLab :
git -c http.sslVerify=false pushAttendez que le code soit examiné et fusionné.
Vérifiez que le FId nouvellement ajouté existe dans
ClientConfig:kubectl get ClientConfig default -n kube-public -o yaml
Configurer l'authentification multifacteur ADFS
Conditions requises
- Les YubiKeys ont été provisionnées pour les utilisateurs conformément à la section 5.16 Renforcement et application des règles.
- Toutes les étapes précédentes pour AD FS ont été confirmées comme fonctionnant comme prévu, ce qui signifie que les utilisateurs peuvent accéder aux points de terminaison GDC à l'aide de l'authentification par nom d'utilisateur et mot de passe avec AD FS.
Instructions
Suivez les étapes ci-dessous pour configurer l'authentification multi-facteurs ADFS.
Activer l'authentification par certificat ADFS à l'échelle mondiale
Exécutez les étapes suivantes sur l'hôte ADFS1.
- Utilisez le protocole RDP pour vous connecter à l'hôte ADFS1 à l'aide de votre compte -sa, par exemple nom_utilisateur-sa.
- Exécutez une fenêtre PowerShell en tant que
Administrator. Vérifiez si CertificateAuthentication est déjà activé dans votre environnement :
# Checking current Global Authentication Policy for # PrimaryIntranetAuthenticationProvider Get-AdfsGlobalAuthenticationPolicy | Select-Object ` -Property PrimaryIntranetAuthenticationProvider # Example output, note it is missing CertificateAuthentication PrimaryIntranetAuthenticationProvider : {FormsAuthentication, WindowsAuthentication, MicrosoftPassportAuthentication}Définissez PrimaryIntranetAuthenticationProvider pour inclure CertificateAuthentication. De plus, supprimez une méthode d'authentification inutilisée dans 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}
Tester l'authentification par certificat ADFS
Procédez comme suit sur un poste de travail OC IT.
- Connectez-vous à un poste de travail OC IT avec votre compte non privilégié.
- Ouvrez le navigateur Chrome et accédez à infra-console.CELL_NAME.DOMAIN comme vous le feriez normalement, par exemple https://infra-console.example.domain.local.
Cliquez sur l'option Se connecter à l'aide d'un certificat qui s'affiche sous le bouton Se connecter.
Sélectionnez votre certificat utilisateur non privilégié dans la fenêtre de dialogue, puis cliquez sur OK.
Lorsque vous y êtes invité, saisissez le code de votre YubiKey, puis cliquez sur OK.
Si l'authentification ADFS fonctionne correctement, l'interface utilisateur graphique de la console d'infrastructure devrait s'afficher comme si vous aviez saisi votre nom d'utilisateur et votre mot de passe.
Déconnectez-vous de la console d'infrastructure à l'aide du bouton Se déconnecter, puis fermez toutes les fenêtres Chrome. Cette action supprime les identifiants mis en cache et vous permet de tester chaque point de terminaison GDC.
Répétez les étapes de cette section pour chaque point de terminaison GDC, en veillant à vous déconnecter et à fermer Chrome à chaque fois pour vous assurer que les invites d'authentification AD FS s'affichent :
- Console.gdchservices (organisation gdchservices)
- GitLab
- ServiceNow
- Autres entreprises
Appliquer strictement l'authentification MFA ADFS à l'échelle mondiale
Exécutez les étapes suivantes sur l'hôte ADFS1.
- Connectez-vous en RDP à l'hôte ADFS1 avec votre compte -sa, par exemple alexb-sa.
- Exécutez une fenêtre PowerShell en tant qu'administrateur.
Définissez PrimaryIntranetAuthenticationProvider pour inclure CertificateAuthentication UNIQUEMENT.
# 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}
Retester chaque point de terminaison GDC
Exécutez les étapes suivantes à partir d'un poste de travail OC IT.
- Connectez-vous à un poste de travail OC IT avec votre compte non privilégié.
- Ouvrez le navigateur Chrome et accédez à infra-console.CELL_NAME.DOMAIN comme vous le feriez normalement, par exemple https://infra-console.example.domain.local.
Le portail AD FS demande immédiatement un certificat ou une YubiKey. Vous ne devriez plus voir de champs pour un nom d'utilisateur ou un mot de passe.
Après avoir sélectionné votre certificat, saisissez le code PIN de votre YubiKey, identique à celui utilisé lors des tests précédents.
La configuration est terminée.