20. OI Active Directory Federation Services

Perkiraan waktu penyelesaian: 18 jam

Pemilik komponen yang dapat dioperasikan: OIC

Cara mengonfigurasi koneksi OIDC

Koneksi OIDC dikelola oleh Konfigurasi Status yang Diinginkan (DSC). Meskipun dapat dibuat secara manual, DSC adalah metode yang lebih disukai.

  1. Login ke VM CONFIG1 sebagai pengguna Marvin.

  2. Buka c:\config\config.ps1 menggunakan VSCode atau editor pilihan Anda.

  3. Telusuri -ADFS1 untuk menemukan node konfigurasi server ADFS.

    # Example ADFS server noe in config.ps1
    NodeName           = "$Site1Code-ADFS1"
    HyperVHost         = 'AA-OC-BM01'
    Role               = 'adfs'
    IPv4Addr           = '172.21.0.23'
    

    Array bernama AdfsAppGrp berisi tabel hash koneksi OIDC. Salin seluruh tabel hash Example-OIDC dan tempelkan setelah tabel hash Example-OIDC yang ada. Contoh:

    @{
                         Name        = 'Example-OIDC'
                         AdfsSrvApp  = @{
            
    }
    @{
                         Name        = 'Example-OIDC'
                         AdfsSrvApp  = @{
            
    }
    
  4. Perbarui parameter Name dan RedirectURI ke nilai yang terkait dengan koneksi OIDC baru Anda. Simpan file config.ps1.

  5. Buka jendela PowerShell sebagai administrator dan perbarui konfigurasi server ADFS1. Ganti [Situs] dengan kode situs Anda.

    $Cred = Get-Credential -Message "Enter Admin Credentials for ADFS1"
    c:\dsc\Update-RemoteHost.ps1 -ComputerName [Site]-ADFS1 -Credential $Cred -NoThirdParty
    
  6. Validasi konfigurasi OIDC dengan login ke VM ADFS1, membuka MMC AD FS Management, lalu mengklik Application Groups.

  7. Saat login ke VM ADFS1, buka C:\config dan cari file bernama <Your Connector Name> Srv App.txt. Simpan nilai Identifier dan ClientSecret yang ditemukan dalam file ini untuk digunakan nanti dengan aplikasi Anda. Hapus file ini setelah nilai ID dan secret dicatat.

Konfigurasi OIDC untuk konsol infra GDC

  1. Kumpulkan informasi konektor OIDC untuk deployment GDC.

    1. URI Pengalihan: https://ais-core.<GDC_name>.<DNS_domain>/finish-login, misalnya, https://ais-core.example.domain.local/finish-login.
    2. URL Konsol Layanan GDC: https://infra-console.<GDC_name>.<DNS_domain>, misalnya, https://infra-console.example.domain.local.
  2. Ikuti langkah-langkah sebelumnya untuk membuat koneksi OIDC.

  3. Setelah Anthos Identity Service (AIS) di sel GDC dikonfigurasi, uji konfigurasi OIDC dengan URL untuk konsol GDC.

    1. Login ke workstation OIC.
    2. Buka Chrome, lalu buka URL infra-console, misalnya https://infra-console.example.domain.local.
    3. Jika diminta, masukkan nama pengguna dan sandi Anda. Jika kredensial valid, Anda akan dialihkan ke GUI infra-console.

    Ulangi langkah ini sesuai kebutuhan untuk setiap sel GDC yang dikelola oleh server ADFS ini.

Konfigurasi DNS GDC untuk ADFS

  1. Login ke Pengontrol Sistem atau Bootstrapper.

  2. Mengekspor kubeconfig untuk cluster admin root:

    export KUBECONFIG=/root/release/root-admin/root-admin-kubeconfig
    
  3. Konfigurasi OCIT_DOMAIN menggunakan zona penerusan. Ganti OCIT_DOMAIN dengan nama domain OCIT Anda dan endpoint dengan alamat IP OC DNS:

    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
    EOF
    

    Outputnya akan terlihat seperti contoh ini:

    dnszone.network.private.gdc.goog/ocit-domain created
    
  4. Jika perubahan tidak diterapkan, mulai ulang deployment:

    kubectl rollout restart deployment -n dns-system gpc-coredns-forwarder
    

    Perubahan DNS ini disebarkan ke semua cluster di GDC.

  5. Dengan kubeconfig admin root, validasi bahwa resolusi domain OCIT berfungsi sebagaimana mestinya:

    NAMESERVER=$(kubectl -n dns-system get service gpc-coredns-forwarder-udp | \
      awk '/[0-9]\./ {print $4}')
    dig +short @${NAMESERVER} fs.OCIT_DOMAIN
    
  6. Ekspor kubeconfig untuk cluster admin org:

    export KUBECONFIG=/root/release/org-admin/org-admin-kubeconfig
    
  7. Terapkan kubeconfig admin org, dan validasi bahwa resolusi domain OCIT berfungsi sebagaimana mestinya.:

    NAMESERVER=$(kubectl -n dns-system get service gpc-coredns-infra-forwarder | \
      awk '/[0-9]\./ {print $4}')
    dig +short @${NAMESERVER} fs.OCIT_DOMAIN
    

Konfigurasi AIS GDC untuk konsol

  1. Login ke ADFS1, lalu buka MMC Pengelolaan AD FS

  2. Klik Service > Certificates

  3. Klik dua kali sertifikat untuk Komunikasi Layanan

  4. Klik tab Jalur Sertifikasi

  5. Pilih sertifikat paling atas yang diberi label Root

  6. Klik Lihat Sertifikat

  7. Pilih tab Detail, lalu klik Salin ke File...

    1. Simpan dalam format Base-64 (.CER)
  8. Salin CA Root ADFS ke Pengontrol Sistem atau Bootstrapper sebagai adfs.cer.

  9. Login ke pengontrol sistem atau bootstrapper, lalu ekspor CA Root ADFS ke variabel shell dengan encoding base64. Perintah berikut mengenkode sertifikat, termasuk header, ke base64 sebagai satu baris (tanpa karakter baris baru):

        export BASE64_CERT=$(base64 adfs.cer | tr -d "\n\r")
    
  10. Ekspor cluster Admin Root kubeconfig:

    export KUBECONFIG=/root/release/root-admin/root-admin-kubeconfig
    
  11. Buka repositori iac dan tambahkan struktur direktori untuk organisasi global:

    cd iac; mkdir -p infrastructure/global/orgs/root/
    
  12. Tambahkan file ioauthmethod.yaml untuk organisasi:

    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
    EOF
    

    Ganti variabel berikut:

    VariabelDefinisi
    ADFS_CERT_BASE64

    Nilai $BASE64_CERT yang Anda buat di langkah sebelumnya.

    Sertifikat berenkode PEM yang dienkode base64 ini, yang digunakan ADFS untuk menandatangani sendiri, diperlukan oleh Layanan Identitas GKE untuk membuat koneksi yang aman dengan instance ADFS internal.

    ADFS_CLIENT_ID ID OpenID Connect untuk klien organisasi di ADFS.
    ADFS_CLIENT_SECRET Rahasia OpenID Connect untuk klien organisasi yang terdaftar di ADFS.
    OCIT_DOMAIN Nama domain OCIT. Untuk mengetahui informasi selengkapnya, lihat Konfigurasi DNS GDC untuk ADFS.
  13. Tambahkan file kustomization.yaml ke folder iac global:

    cat > infrastructure/global/orgs/root/kustomization.yaml << EOF
    apiVersion: kustomize.config.k8s.io/v1beta1
    kind: Kustomization
    metadata:
      name: ioauthmethod-kustomization
    resources:
    - ioauthmethod.yaml
    EOF
    
  14. Siapkan dan lakukan commit pada file YAML organisasi dan file kustomisasi:

    git add "infrastructure/global"
    git add "infrastructure/zonal"
    git commit
    
  15. Kirim update ke GitLab:

    git -c http.sslVerify=false push
    
  16. Tunggu peninjauan dan penggabungan kode.

  17. Pastikan IdP yang baru ditambahkan ada di ClientConfig:

      kubectl get ClientConfig default -n kube-public -o yaml
    

Menyiapkan autentikasi multi-faktor ADFS

Persyaratan

  1. YubiKey telah disediakan untuk pengguna sesuai dengan bagian 5.16 Penguatan dan penerapan kebijakan.
  2. Semua langkah sebelumnya untuk AD FS telah dikonfirmasi berfungsi seperti yang diharapkan, yang berarti pengguna dapat mengakses endpoint GDC menggunakan autentikasi nama pengguna dan sandi dengan AD FS.

Petunjuk

Lakukan langkah-langkah berikut untuk menyiapkan autentikasi multi-faktor ADFS.

Mengaktifkan autentikasi sertifikat ADFS secara global

Jalankan langkah-langkah berikut di host ADFS1.

  1. RDP ke host ADFS1 menggunakan akun -sa Anda, misalnya username-sa.
  2. Jalankan jendela PowerShell sebagai Administrator.
  3. Periksa apakah CertificateAuthentication sudah diaktifkan di lingkungan Anda:

    # Checking current Global Authentication Policy for
    # PrimaryIntranetAuthenticationProvider
    Get-AdfsGlobalAuthenticationPolicy | Select-Object `
        -Property PrimaryIntranetAuthenticationProvider
    
    # Example output, note it is missing CertificateAuthentication
    PrimaryIntranetAuthenticationProvider  : {FormsAuthentication,
        WindowsAuthentication, MicrosoftPassportAuthentication}
    
  4. Tetapkan PrimaryIntranetAuthenticationProvider untuk menyertakan CertificateAuthentication. Selain itu, hapus metode autentikasi yang tidak digunakan di 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}
    
Menguji autentikasi sertifikat ADFS

Selesaikan langkah-langkah berikut di workstation IT OC.

  1. Login ke workstation IT OC sebagai akun non-hak istimewa Anda.
  2. Buka browser Chrome dan akses infra-console.CELL_NAME.DOMAIN seperti biasa, misalnya https://infra-console.example.domain.local.
  3. Klik opsi Login menggunakan sertifikat yang muncul di bawah tombol Login.

    OC-IT
gambar

  4. Pilih sertifikat pengguna non-privilege Anda dari jendela dialog, lalu klik OK.

    OC-IT
gambar

  5. Saat diminta, masukkan PIN YubiKey Anda, lalu klik Oke.

    OC-IT
gambar

  6. Jika autentikasi ADFS berfungsi dengan benar, Anda akan melihat GUI konsol infrastruktur seolah-olah Anda memasukkan nama pengguna dan sandi.

  7. Logout dari konsol infrastruktur menggunakan tombol Log out, lalu tutup semua jendela Chrome. Tindakan ini menghapus kredensial yang di-cache dan memungkinkan Anda menguji setiap endpoint GDC.

    OC-IT
gambar

  8. Ulangi langkah-langkah di bagian ini untuk setiap endpoint GDC, dengan mengingat untuk logout dan menutup Chrome setiap kali untuk memastikan Anda melihat perintah autentikasi AD FS:

    • Console.gdchservices (gdchservices org)
    • GitLab
    • ServiceNow
    • Organisasi lain

Menerapkan autentikasi MFA ADFS secara ketat di seluruh dunia

Jalankan langkah-langkah berikut di host ADFS1.

  1. RDP ke host ADFS1 sebagai akun -sa Anda, misalnya alexb-sa.
  2. Jalankan jendela PowerShell sebagai Administrator.
  3. Tetapkan PrimaryIntranetAuthenticationProvider untuk menyertakan CertificateAuthentication SAJA.

    # 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}
    

Uji ulang setiap endpoint GDC

Jalankan langkah-langkah berikut dari workstation IT OC.

  1. Login ke workstation IT OC sebagai akun non-hak istimewa Anda.
  2. Buka browser Chrome dan akses infra-console.CELL_NAME.DOMAIN seperti biasa, misalnya https://infra-console.example.domain.local.
  3. Portal AD FS akan langsung meminta sertifikat atau YubiKey. Anda tidak akan lagi melihat kolom untuk nama pengguna atau sandi.

    OC-IT
gambar

  4. Setelah memilih sertifikat, masukkan PIN YubiKey Anda, yang sama dengan pengujian sebelumnya.

    OC-IT
gambar

Penyiapan selesai.