Home > Windows にまつわる e.t.c.

google の G Suite アカウントをオンプレADアカウントと同期させる


google の G Suite を使っている場合のユーザーアカウントはどう管理していますか?
オンプレ AD アカウント、G Suite アカウントの二重管理していたりしませんか?

G Suite アカウントは、オンプレ AD アカウントに同期させる事が出来るので、オンプレ AD アカウントでの一元管理にする事が出来ます。

 

仕組み

google との同期は、アカウント同期とパスワード同期の2段階になります。

同期するアカウントは、セキュリティグループ(所属しているユーザー)、OU(配下に位置しているユーザー)を指定できます。

AD 管理に慣れた方であれば、セキュリティグループを指定した同期対象指定が真っ先に頭に浮かぶと思いますが、G Suite アカウント同期は LDAP Query で同期対象を指定するので、LDAP ツリー構造の方がスタンダードだったりします。

アカウント同期は、スケジュールタスクで同期タイミングを指定するので、任意のタイミングで同期させる事が出来ますが、パスワードはパスワード変更をトラップして変更する仕様です。(格納されたパスワードを取り出す術がないため)

アカウント同期はドメインメンバーであはれ処理可能なのですが、パスワード同期はドメインコントローラーでしか処理出来ません。
このため、パスワード同期は、全てのドメインコントローラーに実装する必要があります。(パスワード変更が実施されるドメインコントローラーが特定できない)

アカウント同期設定をすると、AD DS に存在しないアカウントは削除あるいは停止になるので、google にしか存在しないアカウントがある場合は、AD DS に追加登録する必要があります。(G Suite 管理アカウントの保護設定は可能)

 

同期できるものと同期でないもの

AD アカウントと同期できるのは、ユーザーIDとパスワードだけと思ってください。

G Suite のグループはメーリングリストなので、AD のセキュリティグループと役割が違うため同期対象と考えるわけにはいきません。

G Suite の「組織」は OU と役割が同じなので、LDAP ツリー構造として OU を同期することは可能ですが、AD DS のアカウントの中心はセキュリティグループがメインで、OU は補助的に使っているケースが多いでしょう

ただし、G Suite で作成した組織に対し、このセキュリティグループのメンバーを入れるとか、この OU 配下のユーザーを入れるといった設定は可能です。

(余談ですが、SAML 認証が可能なので、パスワード同期は必須ではありません。この記事では解説しないので興味がある方はご自分で調べてくださいね)

 

想定環境

今回作成する環境は以下環境を想定します。

・ AD DS

ドメイン名: corp.contoso.com

・ メールアドレス

xxxx@contoso.com

・ G Suite

G Suite そのものの設定は完了している

・ 同期対象

ユーザー ID
パスワード

 

アカウント同期設定

google に書いてある手順はこちら

ユーザーデータを Active Directory または LDAP サーバーと同期する - G Suite 管理者 ヘルプ
https://support.google.com/a/topic/2679497?hl=ja

 

■ 同期処理に使用するサービスアカウント

アカウント同期をするためには、AD DS をアクセスするアカウントと、google をアクセスするアカウントが必要です。

人が使っているアカウントを使ってしまうと、パスワード変更や退職で困ったことになるので、サービス用のアカウントを作成する事をお勧めします。

AD アカウント AD 全体 RO
G Suite アカウント 特権管理者

 

サービスアカウントは、十分に強力なパスワードを設定しパスワードを変更しない運用にします。

 

■ AD DS 用サービスアカウント作成

AD DS 運用でのアカウント管理セオリーは、ユーザーアカウントに直接 ACL を割り当てるのではなく、セキュリティグループに ACL を割り当てて、そのメンバーにユーザーアカウントを所属させるので、まずはセキュリティグループを作成し、セキュリティグループに ACL を設定します。

作成したセキュリティグループ

 

ルートを右クリックして権限の委任

セキュリティグループの指定

「すべてのユーザー情報の読み取り」権限付与

 

ユーザー作成時に忘れずに

 

サービス用に作成したユーザーを ACL を設定したセキュリティグループのメンバーにします。

 

■ G Suite 用サービスアカウント作成

G Suite の特権管理者アカウントを作成します。

 

同期処理設定

■ LDAP ブラウザー

LDAP ブラウザーの導入は必須ではありませんが、G Suite アカウントの同期指定は、LDAP 情報を使用するので、通常のドメイン管理ツールではなく、LDAP ブラウザーで名前を確認するのがお勧めです、Windows Server 標準の ldp.exe でも LDAP 情報を確認する事は出来ますが、使い勝手があまりよくないので、サードパーティー製品を使うことをお勧めします。

ちなみに、僕は Apache Directory Studio を使っています。

Welcome to Apache Directory Studio - Apache Directory
http://directory.apache.org/studio/

 

他にも LDAP ブラウザーは色々あるので、使いやすいものを探してください。

 

■ G Suite の API アクセスを有効にする

Google 管理コンソール(https://admin.google.com)に特権管理者でログインし、[セキュリティ] - [API リファレンス] で「API アクセスを有効にする」にチェックを付けます。

 

■ Google Cloud Directory Sync のダウンロードとインストール

Google Cloud Directory Sync は、以下のページからダウンロードします。

Google Cloud Directory Sync
https://tools.google.com/dlpage/dirsync

 

ダウンロードしたインストーラーを、ドメインコントローラーのうちどれか1台にインストールします。

Google Cloud Directory Sync 自身は、ドメインメンバーであればどのサーバーにインストールしても良いのですが、パスワード同期はドメインコントローラーへのインストールが必須なので、別のメンバーサーバーではなく、インストール先を分散させないようにドメインコントローラーにインストールするのがおすすめです。

インストール自体は、普通のインストーラーなので説明は省きます。

 

■ google の認証

Google Cloud Directory Sync を起動し、先ほど作成した google 用サービスアカウントで google の認証します。

G Suite のドメイン名を入力

Sign-in

許可

 

■ AD 認証

AD DS 用サービスアカウントで AD の認証をします。

 

■ 同期対象を指定

ユーザーアカウントと OU を同期対象に指定します。
Organizational Units を指定しないと、G Suite の組織が指定できないので、Organizational Units を指定します。

 

■ Organizational Units の指定

G Suite で手動作成した組織を使う場合は、ここをチェックします。

 

■ User Accounts の指定

以下の LDAP 属性を指定します。

● User Attributes

Email address attribute Gmail で使用するメールアドレス mail
Unique identifier attribute ユーザーをユニークに識別する属性 objectSid

 

Google domain users deletion/suspension policy で同期動作を指定します。

Delete only active Google Domain users not found in LDAP (suspended users are retained) Google ドメインのアクティブなユーザーのうち、AD に存在しないユーザーは削除されますが、停止中のユーザーは変更されません。これはデフォルトの設定です。
Delete active and suspended users not found in LDAP AD に存在しない Google ドメインのユーザーは、停止中のユーザーも含めてすべて削除されます。
Suspend Google users not found in LDAP, instead of deleting them Google ドメインのアクティブなユーザーのうち、AD に存在しないユーザーは停止されますが、停止中のユーザーは変更されません。
Don’t suspend or delete Google admins not found in LDAP G Suite 管理アカウントが AD 上に存在しなくてもアカウントは停止または削除されません。(G Suite 管理アカウントの保護)

 

 

● Additional User Attributes

Given name attribute(s) givenName
Family name attribute(s) sn
Synchronize passwords パスワード同期タイミング Only for new users (これ以外の選択禁止)

 

Gmail で使用するメールアドレス で mail を指定した場合、ドメインアカウントのここがメールアドレスになります。

 

● Search Rules

Search Rules で、同期対象を指定します。

Place users in the following Google domain Org Unit 同期したアカウントを、どの G Suite 組織に所属させるか
Org Unit Name : 所属させる G Suite 組織名
Org Unit name defined by this LDAP attribute : AD 上の属性に指定した名前を持つ組織にユーザーを追加する
Suspend these users in Google domain この同期ルールに一致するすべてのユーザーを停止する
Scope Sub-tree: 検索条件の下位に位置するオブジェクト
One-level: 検索条件と同じレベルにあるオブジェクト
Object: 検索条件に一致するオブジェクトのみ
Rule 検索条件の LDAP Query
Base DN 検索を開始する Base DN

 

google の説明はこちら

設定マネージャのオプションに関する詳細情報 - G Suite 管理者 ヘルプ
https://support.google.com/a/answer/6258071

設定マネージャのオプションに関する詳細情報 - G Suite 管理者 ヘルプ
https://support.google.com/a/answer/6258071

 

 

セキュリティグループを指定する場合は、Rule と Base DN で以下のように指定します。

Rules
(&(objectclass=user)(objectcategory=person)(memberof=CN=セキュリティグループ名,セキュリティグループがあるところ))

Base DN
ドメインルート

例)

Rules
(&(objectclass=user)(objectcategory=person)(memberof=CN=GoogleUsers,CN=Users,DC=corp,DC=contoso,DC=internal))

Base DN
DC=corp,DC=contoso,DC=internal

ネスト セキュリティグループがサポートされているので、うまくセキュリティグループを設計するとメンテナンスから楽になります。

 

OU を指定する場合は、以下のように指定します。

 

Rules
(&(objectclass=user)(objectcategory=person))

Base DN
OU のあるところ

例)

Rules
(&(objectclass=user)(objectcategory=person))

Base DN
OU=OUSync,DC=corp,DC=contoso,DC=internal

 

■ Notifications

Notifications で実行結果通知メールの設定をします。

一般的なメール設定なので、迷う事は無いでしょう。テストメールを送信してメールが受信できることを確認します。

 

■ Logging

実行ログの出力設定をします。

 

■ Sync

「Simulate sync」で同期シミュレーションができるので、意図した同期になるように調整します。

「Sync & apply changes」で実同期させます。

必要に応じて「Clear cache」でキャッシュをクリアする事もできます。

 

■ Exclusion Rules

削除試験をする際に、ここの意図しない削除を防止する設定を一時的に変更しないとエラーになって削除試験ができないことがあります。

 

■ 設定の保存

Google Cloud Directory Sync は XML ファイルに設定を保存するので、意図した同期ができるようになったら、Save As で XML ファイルに設定を保存します。

 

■ sync-cmd.exe

実運用では GUI ではなく、コマンドラインツールである sync-cmd.exe をスケジュールタスクに登録して自動同期させます。

C:\Program Files\Google Cloud Directory Sync\sync-cmd.exe

 

-c オプションで GUI で作成した XML ファイルを指定し、-a オプションで同期実行します。

sync-cmd -a -c C:\GoogleSync\SyncSetting.xml

 

コマンドラインを使用した同期の実行 - G Suite 管理者 ヘルプ
https://support.google.com/a/answer/6152425?hl=ja

 

 

パスワード同期

パスワード同期は、AD 上でのパスワードへ変更をトラップし、同期済みのアカウントにパスワード同期します。

つまり、事前にアカウント同期がされている必要があるので、初期パスワードを同期させる事ができません。

このため、新規に作成した AD アカウントに「ユーザーは次回ログオン時にパスワード変更が必要」をオンにして、よーざー利用開始時にパスワード設定してもらうようにします。

 

G Suite に作成済みのアカウントはパスワード更新されませんので、そのまま継続使用する事ができます。

厄介なのが、既存の AD アカウントが存在し、G Suite に新規アカウントを作る場合です。
G Suite に作成された新規アカウントのパスワードは、AD アカウントのパスワードと異なるので、G Suite アカウントのパスワード設定をするか、AD アカウントのパスワード変更をしてもらう必要があります。

G Suite アカウント AD アカウント パスワード
新規 新規 次回ログオン時にパスワード変更
既存 既存 そのまま
新規 既存 G Suite アカウントのパスワード設定をするか、AD アカウントのパスワード変更

 

■ GSPS サービス アカウントの作成

Google Developers Console にアクセスし、G Suite 特権管理者としてログインしプロジェクトを作成します。

https://console.developers.google.com/project

 

 

Admin SDK を有効にします。

 

サービス アカウントを作成し、JSON ファイルをダウンロードします。
ダウンロードした JSON ファイルは、G Suite Password Sync に食わせるので、全てのドメインコントローラーにコピーしておきます。

 

生成されたクライアント ID を控えます。

 

■ クライアント ID を承認する

Google 管理コンソールに特権管理者としてログインし、詳細設定を開きます。
[詳細設定] が表示されていない場合は、[もっと見る] をクリックします。

https://admin.google.com/

 

[認証] セクションで [API クライアント アクセスを管理する] をクリックし、クライアント IDと、以下を[1 つ以上の API の範囲] ボックスに貼り付け承認します。

https://www.googleapis.com/auth/admin.directory.user

 

 

Developers Console に戻り、[保存] をクリックします。

 

■ G Suite Password Sync のインストール

パスワード同期は、パスワード変更をトラップするので、全てのドメインコントローラーにパスワード同期ツールである G Suite Password Sync をインストールします。

G Suite Password Sync は以下のページからダウンロードします。

G Suite Password Sync について - G Suite 管理者 ヘルプ
https://support.google.com/a/answer/2611859?hl=ja&ref_topic=4497963

 

G Suite Password Sync をインストールしたら、ドメインコントローラーを再起動します。

G Suite Password Sync を起動し、G Suite ドメインと、google 用サービスアカウントを入力し、JSON ファイルを食わせます。
認証に成功すると、[Status] の値が [Authorized] に変わります。

 

Application's Security Context(Recommended)を選択し、Base DN にドメインルートを指定し、Mail Attribute を設定します。

 

 

G Suite でユーザーがパスワードを 変更できないようにする

以上の設定でドメインアカウントとパスワード同期設定は完了ですが、ユーザー G Suite のパスワード変更をできないように設定する事も可能です。

その場合は、パスワード変更ができない旨のページを作成し、パスワード変更ページと差し替えます。

設定個所は、セキュリティ]-[シングル サインオン(SSO)の設定]-[パスワード変更 URL] に作成したページの URL を設定します。

 

使用プロトコル

アカウント同期、パスワード同期に使用するプロトコルは、https/http アウトバウンド通信しか使いません。

プロトコル ポート 方向
(ADDS : google/CRL)
https tcp/443
http tcp/80

 

back.gif (1980 バイト)

home.gif (1907 バイト)

Copyright © MURA All rights reserved.