完了までの推定時間: 18 時間
操作可能なコンポーネントの所有者: OIC
OIDC 接続を構成する方法
OIDC 接続は、Desired State Configuration(DSC)によって管理されます。手動で作成することもできますが、DSC を使用することをおすすめします。
ユーザー
Marvinとして CONFIG1 VM にログインします。VSCode または任意のエディタを使用して c:\config\config.ps1 を開きます。
-ADFS1を検索して、ADFS サーバーの構成ノードを見つけます。# Example ADFS server noe in config.ps1 NodeName = "$Site1Code-ADFS1" HyperVHost = 'AA-OC-BM01' Role = 'adfs' IPv4Addr = '172.21.0.23'AdfsAppGrpという名前の配列には、OIDC 接続のハッシュテーブルが含まれています。Example-OIDCのハッシュテーブル全体をコピーして、既存のExample-OIDCハッシュテーブルの後に貼り付けます。例:@{ Name = 'Example-OIDC' AdfsSrvApp = @{ … } @{ Name = 'Example-OIDC' AdfsSrvApp = @{ … }NameパラメータとRedirectURIパラメータを、新しい OIDC 接続に関連付けられた値に更新します。config.ps1 ファイルを保存します。管理者として PowerShell ウィンドウを開き、ADFS1 サーバーの構成を更新します。[Site] はサイトコードに置き換えます。
$Cred = Get-Credential -Message "Enter Admin Credentials for ADFS1" c:\dsc\Update-RemoteHost.ps1 -ComputerName [Site]-ADFS1 -Credential $Cred -NoThirdPartyADFS1 VM にログインし、AD FS 管理 MMC を開いて [アプリケーション グループ] をクリックして、OIDC 構成を検証します。
ADFS1 VM にログインした状態で、
C:\configを開き、<Your Connector Name> Srv App.txtという名前のファイルを探します。このファイルで見つかったIdentifier値とClientSecret値を保存し、後でアプリケーションで使用します。識別子とシークレット値が記録されたら、このファイルを削除します。
GDC インフラストラクチャ コンソールの OIDC 構成
GDC デプロイの OIDC コネクタ情報を収集します。
- リダイレクト URI:
https://ais-core.<GDC_name>.<DNS_domain>/finish-login(例:https://ais-core.example.domain.local/finish-login)。 - GDC サービス コンソールの URL:
https://infra-console.<GDC_name>.<DNS_domain>(例:https://infra-console.example.domain.local)。
- リダイレクト URI:
上記の手順に沿って、OIDC 接続を作成します。
GDC セルで Anthos Identity Service(AIS)を構成したら、GDC コンソールの URL を使用して OIDC 構成をテストします。
- OIC ワークステーションにログインします。
- Chrome を開き、インフラストラクチャ コンソールの URL(
https://infra-console.example.domain.localなど)に移動します。 - プロンプトが表示されたら、ユーザー名とパスワードを入力します。認証情報が有効な場合は、infra-console GUI にリダイレクトされます。
この ADFS サーバーで管理されている各 GDC セルについて、必要に応じてこの手順を繰り返します。
ADFS の GDC DNS 構成
システム コントローラまたはブートストラップにログインします。
ルート管理クラスタの
kubeconfigをエクスポートします。export KUBECONFIG=/root/release/root-admin/root-admin-kubeconfig転送ゾーンを使用して OCIT_DOMAIN を構成します。OCIT_DOMAIN を OCIT ドメイン名に置き換え、エンドポイントを OC DNS IP アドレスに置き換えます。
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出力は次の例のようになります。
dnszone.network.private.gdc.goog/ocit-domain created変更が適用されない場合は、デプロイを再起動します。
kubectl rollout restart deployment -n dns-system gpc-coredns-forwarderこの DNS 変更は、GDC 内のすべてのクラスタに伝播されます。
ルート管理者 kubeconfig を使用して、OCIT ドメイン解決が意図したとおりに機能していることを確認します。
NAMESERVER=$(kubectl -n dns-system get service gpc-coredns-forwarder-udp | \ awk '/[0-9]\./ {print $4}') dig +short @${NAMESERVER} fs.OCIT_DOMAIN組織の管理クラスタの
kubeconfigをエクスポートします。export KUBECONFIG=/root/release/org-admin/org-admin-kubeconfig組織管理者の kubeconfig を適用し、OCIT ドメイン解決が意図したとおりに機能していることを確認します。
NAMESERVER=$(kubectl -n dns-system get service gpc-coredns-infra-forwarder | \ awk '/[0-9]\./ {print $4}') dig +short @${NAMESERVER} fs.OCIT_DOMAIN
コンソールの GDC AIS 構成
ADFS1 にサインオンし、AD FS 管理 MMC を開きます。
[サービス] > [証明書] をクリックします。
サービス通信の証明書をダブルクリックします。
[証明書のパス] タブをクリックします。
[ルート] と表示されている一番上の証明書を選択します。
[証明書を表示] をクリックします
[詳細] タブを選択し、[ファイルにコピー...] をクリックします。
- Base-64(.CER)形式で保存する
ADFS ルート CA を
adfs.cerとしてシステム コントローラまたはブートストラップにコピーします。システム コントローラまたはブートストラップにサインオンし、ADFS ルート CA を Base64 エンコードでシェル変数にエクスポートします。次のコマンドは、ヘッダーを含めた証明書を base64 形式にエンコードし、改行文字を含まない単一行として出力します。
export BASE64_CERT=$(base64 adfs.cer | tr -d "\n\r")ルート管理クラスタ
kubeconfigをエクスポートします。export KUBECONFIG=/root/release/root-admin/root-admin-kubeconfigiacリポジトリに移動し、グローバル組織のディレクトリ構造を追加します。cd iac; mkdir -p infrastructure/global/orgs/root/組織の
ioauthmethod.yamlファイルを追加します。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次の変数を置き換えます。
変数 定義 ADFS_CERT_BASE64前の手順で作成した
$BASE64_CERTの値。ADFS が自己署名に使用するこの Base64 エンコードの PEM エンコード証明書は、GKE Identity Service が内部 ADFS インスタンスとの安全な接続を確立するために必要です。
ADFS_CLIENT_IDADFS の組織のクライアントの OpenID Connect ID。 ADFS_CLIENT_SECRETADFS に登録されている組織のクライアントの OpenID Connect シークレット。 OCIT_DOMAINOCIT ドメイン名。詳細については、ADFS の GDC DNS 構成をご覧ください。 kustomization.yamlファイルをグローバルiacフォルダに追加します。cat > infrastructure/global/orgs/root/kustomization.yaml << EOF apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization metadata: name: ioauthmethod-kustomization resources: - ioauthmethod.yaml EOF組織の YAML ファイルと kustomize ファイルをステージングして commit します。
git add "infrastructure/global" git add "infrastructure/zonal" git commit更新を GitLab に push します。
git -c http.sslVerify=false pushコードレビューとマージを待ちます。
新しく追加した IdP が
ClientConfigに存在することを確認します。kubectl get ClientConfig default -n kube-public -o yaml
ADFS 多要素認証を設定する
要件
- YubiKey は、セクション 5.16 強化とポリシーの適用に従ってユーザーにプロビジョニングされています。
- AD FS の前の手順がすべて想定どおりに動作していることが確認されました。つまり、ユーザーは AD FS でユーザー名とパスワードの認証を使用して GDC エンドポイントにアクセスできます。
手順
ADFS 多要素認証を設定する手順は次のとおりです。
ADFS 証明書認証をグローバルに有効にする
ADFS1 ホストで次の手順を実行します。
- -sa アカウント(例: username-sa)を使用して、ADFS1 ホストに RDP 接続します。
- PowerShell ウィンドウを
Administratorとして実行します。 環境で CertificateAuthentication がすでに有効になっているかどうかを確認します。
# Checking current Global Authentication Policy for # PrimaryIntranetAuthenticationProvider Get-AdfsGlobalAuthenticationPolicy | Select-Object ` -Property PrimaryIntranetAuthenticationProvider # Example output, note it is missing CertificateAuthentication PrimaryIntranetAuthenticationProvider : {FormsAuthentication, WindowsAuthentication, MicrosoftPassportAuthentication}PrimaryIntranetAuthenticationProvider を設定して、CertificateAuthentication を含めます。また、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}
ADFS 証明書認証をテストする
OC IT ワークステーションで次の手順を行います。
- 権限のないアカウントで OC IT ワークステーションにログインします。
- Chrome ブラウザを開き、通常どおり infra-console.CELL_NAME.DOMAIN(例: https://infra-console.example.domain.local)にアクセスします。
[ログイン] ボタンの下に表示される [証明書を使用してログイン] オプションをクリックします。
ダイアログ ウィンドウで非特権ユーザー証明書を選択し、[OK] をクリックします。
プロンプトが表示されたら、YubiKey の PIN を入力して [OK] をクリックします。
ADFS 認証が正しく機能している場合は、ユーザー名とパスワードを入力したかのように infra-console GUI が表示されます。
[ログアウト] ボタンを使用してインフラストラクチャ コンソールからログアウトし、すべての Chrome ウィンドウを閉じます。この操作により、キャッシュに保存された認証情報が削除され、他の GDC エンドポイントをテストできます。
このセクションの手順を GDC エンドポイントごとに繰り返します。その際、AD FS 認証のプロンプトが確実に表示されるように、毎回ログアウトして Chrome を閉じるようにしてください。
- Console.gdchservices(gdchservices 組織)
- GitLab
- ServiceNow
- 他の組織
ADFS MFA 認証をグローバルに厳密に適用する
ADFS1 ホストで次の手順を実行します。
- -sa アカウント(例: alexb-sa)として ADFS1 ホストに RDP 接続します。
- 管理者として PowerShell ウィンドウを実行します。
PrimaryIntranetAuthenticationProvider を 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}
各 GDC エンドポイントを再テストする
OC IT ワークステーションから次の手順を実行します。
- 権限のないアカウントで OC IT ワークステーションにログインします。
- Chrome ブラウザを開き、通常どおり infra-console.CELL_NAME.DOMAIN(例: https://infra-console.example.domain.local)にアクセスします。
AD FS ポータルで、証明書または YubiKey がすぐに求められます。ユーザー名やパスワードのフィールドが表示されなくなっているはずです。
証明書を選択したら、以前のテストと同じ YubiKey PIN を入力します。
これでセットアップは完了です。