Google Cloud Directory Sync(GCDS)でActive DirectoryとG Suiteを同期させたお話

概要/あらすじ

実務未経験から中小企業の情シスに転職。

従業員約350名規模、都内に3拠点、地方に4拠点の会社(非IT業種)で上司と後輩の3名体制。

2019年6月にActive Directoryを社内に導入し、そのメリットを最大限活かすため、もともと導入していたG SuiteにActive Directoryの情報を同期すべき、Google Cloud Directory Syncを活用を検討した。

こんばんは、ばーふぃんです。

今日は、Google Cloud Directory Syncについて、お話ししたいと思います。

私は、昨年に全社的にG Suiteの導入をし、社内に点在するメールをはじめとした業務ツールの各アカウントを一元化してきました。

〜G Suite導入関連の投稿一覧〜

今回はせっかくActive Directoryを導入してWindowsアカウントを一元管理出来る仕組みを構築出来たため、これとG Suiteを同期させることで、Active DierctoryとG Suiteのアカウントも一元管理しちゃえ!ということになりました。

そのために活用するのが、Google Cloud Directory Sync(GCDS)というツールです。

Google Cloud Directory Sync(GCDS)について

はい、冒頭申し上げた通り、AD(ADに限らずLDAPですね)とG Suiteを同期させるためのツールです。

要はADさえきちんと更新していればG Suite上の情報も勝手に上書かれるため、情報の更新をそれぞれ両方で行わなくてよくなる、一元管理出来るようになる、という大変便利なものです。

同期といっても、厳密にはADからG Suiteへの一方通行です。G Suiteで更新した情報がADに上書かれることはありません。

同期をさせることが可能なのは、以下の通りです。

  • アカウント(メールアドレス)
  • パスワード
  • OU(組織部門)
  • 姓名をはじめとしたユーザープロフィール
  • グループ(メーリングリスト)
  • 共有の連絡先
  • ライセンス

等々、他にも色々ありますが、今回同期の対象としたのは、アカウント、OU、プロフィール、グループの4つです。

設定次第ですが、上述の通りAD→G Suiteの一方通行となるため、基本的にはG Suite上に存在してADに存在しないアカウントやグループは、同期時にG Suite上から消えることになります。

そのため、一歩間違えると消えてはいけないG Suite上のアカウントが消えてしまったり、情報が誤って更新されてしまったりするので、同期時は十分に注意し、必ずテストを行ったうえで本同期を進めるようにしてください。

とはいえ、必ずしもADとG Suiteのアカウント情報が完全に一致していないケースも多々あるため、そういう場合は、このアカウント(あるいはこの条件に一致するもの)は削除されない、といったルール付け(除外ルール)をすることも出来るようになっています。

同期する項目については、AD上のどの属性をG Suiteのこの属性に同期させる(例えば、ADの「mail」属性をG Suiteのアカウント(メールアドレス)へ同期させる)、という指定をすることができます。

この辺は、後ほど詳しく説明していきます。

では、手順について説明していきましょう。

初期準備

設定ツールのダウンロードとインストール

Google Cloud Directory Sync(GCDS)の基本的な仕組みは、xml形式の設定ファイルをコマンドで実行することによって、同期処理が行われるようになっています。

まずは、そのxmlファイルを生成するための、設定ツールをADサーバにインストールします。

ダウンロードとインストールは、以下の公式ヘルプページから行うことが可能です。

公式ヘルプページの準備段階のページでは、サードパーティ製のLDAPブラウザもインストールしてください的なことが書いてありますが、ここはどちらでも大丈夫です。あれば情報を参照しやすくなりやすい程度に考えてもらって平気です。

無事インストールが完了すると、「Configuration Manager」というアプリがいるはずなので、それを立ち上げて設定ファイルを作成していきます。

Googleドメインへの接続設定(Google Domain Configuration)

接続設定(Connection Settings)

「Primary Doain Name」:G Suiteのプライマリドメイン

「Authorize Now」:特権管理者アカウントでログインを求めるため、ログイン実行します
→うまくいくと、緑の文字でAuthorizedと表示されます

除外ルール(Exclusion Rules)

除外ルールは、上述で触れていますが、G Suite上に存在してAD上に存在しないけどG Suite上から消したくないアカウントやグループのルールを指定をすることで、削除されることを防ぐことが出来る設定です。

まず、「Exclusion Rules」タブを選択した状態で、「Add Exclusion Rule」をクリック。

除外ルールを作成していきます。

完全一致(EXACT Macth):指定した文字列と完全一致したアカウントやグループメールアドレスを削除対象外とします。ピンポイントで同期削除対象外としたいグループやアカウントがある場合は、こちらを使うといいでしょう。

部分一致(Substring Macth):指定した文字列と部分的に一致したアカウントやグループを削除対象外とします。例えば、特定のドメインに一致するアカウントやグループを同期で削除したくない場合は、こちらを使うといいでしょう。

の、「Google ドメインの設定を定義する」に詳細が書いてあります。

LDAPの接続設定(LDAP Configuration)

ここでは、ADの基本情報を入れて、GCDSとADが疎通を取れるようにしていきます。

設定項目は、環境や構成によってきますが、基本的には特別なことをしていなければ以下の内容で問題ないかと思います。ご自身の環境に合わせて設定してあげてください。

「Server Type」:「MS Active Directory」
「Connection Type」:「Standard LDAP」
「HostName」:ADサーバのホスト名
「Port」:「389」
「Authentication Type」:「Simple」
「Authorized User」:AD管理者アカウント
「Password」:AD管理者パスワード
「Base DN」:ドメインの検索開始位置を指定する。DNは、ADの属性エディタから確認出来ます。

ADの場合は、検索開始位置として指定したいオブジェクトを右クリックをして、属性エディターの「Distinguished Name」で確認することが出来ます。

「Test connection」を押し、うまくいくと、緑文字で「Connection Succeeded!」と表示されます。

の、「LDAP の設定を定義する」に詳細が書いてありますので、参考にしてください。

同期項目の指定(General Settings)

ここでは、ADからG Suiteへ同期させる項目を指定していきます。

の、「同期するカテゴリを決定する」を参照しているため、細かい点で不明点があればこちらを参考にしてみてください。

今回は冒頭の通り、アカウント、OU(組織部門)、グループ、プロフィール情報を同期させます。

以下のように、チェックを付けた項目のみが、左側に表示されるようになります。

ここで指定した項目は、G Suiteへ同期されるため、設定は十分にテストを行いながら進めましょう。逆に言えば、ここで指定していない項目は、同期されることがないため、ちょっとでも不安がある場合は、指定しなければ安心です。

組織部門(Org Units)

ADのOUと、G Suiteの組織部門を同期させていきます。

以下の公式ヘルプページの、「組織部門」の部分を参照していますため、細かい点で不明点があれば、参考にしてください。

LDAP Org Unit Mappings

今回は、特に特別な設定をしないため、割愛します。

検索ルール(Search Rules)

今回は、特に特別な設定はしません。しかし、何も入れていないと同期が行えないため、デフォルトルールでもいいから入れておく必要があります。

「Use Defaults」をクリックし、そのまま「OK」と進めます。

「Scope」は、「Sub-tree」、「One-level」、「Object」の3つから選択可能で、

「Sub-tree」:BASE DN(検索開始位置)のオブジェクトから見て、配下のオブジェクト全てまでを含む組織部門が同期対象

「One-level」:BASE DN(検索開始位置)のオブジェクトから見て、1階層下のオブジェクトまでの組織部門が同期対象

「Object」:指定したオブジェクトのみを同期対象とする。

詳細は、

の「LDAP 検索ルールを追加する方法」に記載してあります。

尚、「BASE DN」は、特に指定しなければLDAP Configurationで設定した検索開始位置が設定されるはずです。

除外ルール(Exclusion Rules)

ここでは、AD上に存在してG Suiteに存在しないけど、G Suiteへ追加同期させたくない、させる必要がないOUを指定します。

ここで設定したルールに一致するOUは、G Suiteへ同期されなくなります。

今回は、特に指定しないため割愛しますが、基本的なルールは「Googleドメインへの接続設定(Google Domain Configuration)」の「除外ルール(Exclusion Rules)」で説明している内容と一緒です。

ユーザーアカウント(User Accounts)

ここでは、ユーザーアカウントをはじめとした、基本的なユーザー情報の同期設定をしていきます。

以下の公式ヘルプページの、「ユーザー」を参照していますため、細かい点で不明点があれば、参考にしてください。

User Attributes

「Email Attribute」は、G Suiteのアカウントになります。つまり、ここにADのメールアドレスを格納した属性名を指定してあげることで、ADのメールアドレスがG Suiteのアカウントへ同期されるようになる。今回は、ADの「mail」属性が該当のため、入力します。

「Google Domain Users Deletion/Suspension Policy」では、同期に関する基本的な設定を指定します。

今回は、デフォルト設定である、「Delete only active Google domain users not found in LDAP」を指定します。

AD上に存在せず、G Suiteにしか存在していないアカウントを、同期時にG Suiteから削除するというもので、冒頭書いた通りの内容です。

ただし、停止中のアカウントは削除対象として含まれないため、停止中のアカウントも削除対象としたい場合は、「Delete active and suspended users not found in LDAP」を選択するようにしましょう。

また、「Don’t suspend or delete Google domain super admins not found in LDAP」にチェックを入れておくと、G Suite特権管理者アカウントは、AD上に存在していなくても、同期時に削除させなくすることができるため、ここはチェックを入れておくといいでしょう。

Additional User Attributes

ここでは姓名等といった、付属する情報を入力します。

「Given Name Attribute(s)」は、姓名の名にあたる部分です。今回は、ADの「givenName」属性が該当するため、入力します。

「Family Name Attribute(s)」は、姓名の姓にあたる部分です。今回は、ADの「sn」属性が該当するため、入力します。

「User Password Sync」で、パスワードも同期設定することが可能ですが、告知が大変なため、今回は同期せず設定をスルーしました。

そのため、ここでは「Only for new users」を選択します。これ以外にすると、G SuiteのユーザーアカウントのパスワードがADのパスワードに上書きされることがあるため、注意してください。

検索ルール(Search Rules)

今回は特別な設定は行いませんが、組織部門同様、何も入れていないと同期が行えないため、デフォルトルールを入れます。

組織部門と同じように、「Use Defaults」をクリックして、そのまま「OK」します。

 

グループ(Groups)

ここでは、AD上のグループ(メーリングリスト)をGoogleグループに同期するための設定を行います。グループ配下のメンバーも同期されますし、グループ配下にグループをネストしている場合でも、その状態を同期することが可能です。

もちろん、メールアドレスが設定されていないグループは、同期されません。

「Scope」は、「組織部門(Org Units)」の「検索ルール(Search Rules)」で説明した通り。

今回は、GroupsというOUにグループオブジェクトを作っているため、検索開始位置(BASE DN)が「OU=Gropus,DC=example,DC=com」として、配下の全てのグループオブジェクトを同期するために、「Sub-tree」を選択。

「Groups」、「Members」はADのグループオブジェクトのどの属性をGoogleグループ及びそのメンバーへ同期させるかを設定していく。

以下の公式ヘルプページの、「グループ」を参照していますため、細かい点で不明点があれば、参考にしてください。

ユーザープロフィール(User Profiles)

以下の公式ヘルプページの、「ユーザープロフィール属性」を参照していますため、細かい点で不明点があれば、参考にしてください。

詳細は、上記ページの表の通りですが、様々なAD上のユーザープロフィールをG Suiteへ同期することが出来ます。

今回は、従業員コード(employeeID)と部署名(department)と役職(title)を同期させます。

例えば、上記設定であればADの役職(title)属性に「課長」と入っていれば、G Suiteの役職にも「課長」と入ることになリマス。

通知設定(Notifications)

ここでは、同期実行した際のメール通知設定を行います。

基本的には通知をするための送信メールサーバと通知先のメールアドレスの設定を行うだけです。

「Test Notification」を押せば、メール送信テストを行うことが出来ます。

の、「通知属性」に詳細が書いてありますので、詳細はこちらを参照してください。

ログ設定(Logging)

ここでは、同期のログファイルに関する設定を行います。

ログファイルの格納先、ファイル名の規則等を設定していきます。

「File name」は、ファイル名と格納先のパスを指定します。「Browse」を押せば、選択することが出来ます。

「Log level」は、基本的に「INFO」で十分でしょう。

トラブル時にGoogleサポートにログファイルの提出を求められるため、その時だけ「TRACE」にすればいいと思います。

の、「ロギングの設定」に詳細が書いてありますので、詳細はこちらを参照してください。

同期(Sync)

ここまで設定を行ったら、ついに同期を実行します。

とはいえ、いきなり本同期というのは恐ろしすぎるため、「Simulate Sync」からテスト同期を行うと、同期の結果が出力されるため、自分が望んだ通りの挙動になるかをチェックをすることが出来ます。

各種設定に抜けがなければ、以下のように全ての項目にチェックが付いた状態となるため、「Simulate Sync」を押してテストします。

何かしらの抜けがあると、以下のようにチェックマークが外れた項目が出てきます。最初ありがちなのは、検索ルールの入れ忘れとかだと思います。

「Sync & apply changes」を押すと、本同期が実行されるため、消されてはいけないアカウントやグループが消されないか、誤って書き換わってはいけない情報が上書かれないか、「Simulate Sync」 の結果をよくよく確認をしてから進めるようにしてください。

詳細は、以下のページ参照。

同期のスケジューリング設定

さて、ここまでで一通りの設定が出来ましたが、まさか同期を毎回手動で行うなんてごめんですよね?

そのため、上述で行った同期作業を、自動化していきます。

仕組みは非常にシンプルで、ここまでで作成した設定ファイルの内容で同期するというコマンドを記述したバッチファイルを、Windowsのタスクスケジューラでスケジューリングして実行するだけです。

バッチファイルといっても、1行で終わるレベルです。

「sync-cmd」というコマンドを記述して、オプションと設定ファイルのパスを指定するだけです。

↓↓記入例↓↓

sync-cmd -c C:\Users\user\gds-config.xml

指定するオプションや、設定ファイルのファイル名やファイルパスによって書き換えてあげてください。

オプションに関する詳細やコマンド記入例は、以下の公式ヘルプページに記載されています。

あとは、タスクスケジューラで、自分が好きなスケジュールでこのバッチファイルを実行するよう設定してあげてください。タスクスケジューラの設定方法は、他の方のサイトですが、以下のページとかに書いてありますので、参考にしてください。

まとめ

長くなりましたが、以上がGoogle Cloud Directory Sync(GCDS)の大まかな設定方法です。

もちろん、冒頭申し上げた通り、ライセンス情報や共有連絡先等、色々と同期をすることが出来るので、必要に応じて設定をしてあげると、便利になりますよ。

私も最初設定したときはサポートに問い合わせたりヘルプページと睨めっこしたりと、かなり大変でしたが、この環境を構築した後はかなりアカウント管理が楽になりました。

大企業だと、ADも既に構築されるでしょうし、かなり複雑な構成になっていることでしょうからハードルも高くメリットがあまりないかもしれませんが、中小規模でADとG Suiteの両方がある、あるいは揃う予定がある、という企業は是非検討してみては如何でしょうか。