Takuya Kadowak2
ServiceNow Employee

概要

ServiceNowのIntegrationHubに用意されている「Google Directory spoke」を使用して、Google Workspace (旧称 G Suite) のメーリングリスト管理を自動化する方法を説明しています。

Docs (Setup the Google Directory spoke - Rome) にセットアップ手順の記載があるのですが、外部のクラウドサービスに依存することもあり最新の手順は多少異なります。

本記事の記載内容は執筆時点でのものなので、将来的に変更になる可能性があります。

使用したシステム環境

ServiceNow Quebec インスタンス
Rome以降のバージョンでも同様の手順が利用できる可能性がありますが、各バージョンで詳細な内容が異なる可能性があります

Google Directory spokeバージョン 1.1.2

1. 事前準備 (ServiceNow)

  • Google Directory spokeを利用できるIntegrationHubの有効なサブスクリプション (対象のサブスクリプションについては、Legal Schedulesの「IntegrationHub Overview」をご確認ください)
  • Google Directory spokeの有効化
  • ServiceNowインスタンスのadminロールを持ったユーザーが必要
  • Flow Designerの基本的な知識

2. 事前準備 (Google)

  • Google Workspaceで使用可能なドメインの登録が完了している
  • Google Developer Consoleでの必要な権限を持ったユーザー
  • GoogleのDirectory APIの基本的な知識
  • Googleの管理コンソール (admin.google.com) の基本的な知識

3. Google Developers ConsoleでGoogle Directory spoke用のプロジェクトを作成する

Docsに記載の通り、 Google Developers Console のリンクを開いて「新しいプロジェクト」をクリックします。

find_real_file.png

この新しいプロジェクトでGoogleのDirectory APIだけを利用できるように設定するため、今回はプロジェクト名にはそれと分かるように(API名)と接続元のServiceNowインスタンスを識別できるような名前を設定します。「作成」をクリックして新しいプロジェクトを作成します。

find_real_file.png

コンソール画面に戻ったら、画面の上のプロジェクト選択メニューから先ほど作成した新しいプロジェクトを選択します。

find_real_file.png

4. 新しいプロジェクトで「OAuth 同意画面」を設定する

メニューから「OAuth同意画面」を選択します。広く一般に開放するアプリケーションではないので、User Typeの選択肢では「内部」を選択して「作成」をクリックします。

find_real_file.png

アプリ情報の必要項目を入力します。

find_real_file.png

承認済みドメインの項目には「service-now.com」を入力して、「保存して次へ」をクリックします。

find_real_file.png

次の画面で「スコープを追加または削除」をクリックします。

find_real_file.png

開いたページの下部にある「スコープの手動追加」 の項目に次の5つの値を入力して、「テーブルに追加」をクリックします。

https://www.googleapis.com/auth/admin.directory.group
https://www.googleapis.com/auth/admin.directory.user.readonly
https://www.googleapis.com/auth/admin.directory.user.security
https://www.googleapis.com/auth/admin.directory.userschema
https://www.googleapis.com/auth/admin.directory.user

find_real_file.png

スコープが追加された状態になったら、ページ下部の「更新」をクリックします。

find_real_file.png

スコープが追加されたら、ページ下部の「保存して次へ」をクリックします。

find_real_file.png

OAuth同意画面の概要を確認して、「ダッシュボードに戻る」をクリックします。

find_real_file.png

 

5. OAuthクライアントIDの作成

ダッシュボードに戻ったら「認証情報」のメニューをクリックした後、「認証情報を作成」ボタンをクリックします。

find_real_file.png

メニューから「OAuth クライアントID」を選択します。

find_real_file.png

アプリケーションの種類では「ウェブアプリケーション」を選択して、クライアントを識別できる名前を入力します。

find_real_file.png

ページをスクロールダウンして、「承認済みのリダイレクトURI」を入力します。
この時のURIは、「https://<instance>.service-now.com/oauth_redirect.do」の形式にします。
最後にページ下部の「作成」をクリックします。

find_real_file.png

OAuth クライアントが作成されました。
ここで表示されるクライアントIDとクライアントシークレットが、ServiceNowインスタンスの設定に必要となります。
後で使用するので、JSONファイルをダウンロードしておきます。

find_real_file.png

次に、Google Adminの画面でドメイン全体の委任を設定します。

6. GoogleでOAuthクライアントにドメインの委任を作成する

この設定をしないとOAuth Tokeを取得しようとした際に、エラー 400: admin_policy_enforced が表示されます。

こちらのURLからドメイン全体の委任の画面に移動します。「新しく追加」をクリックします。

find_real_file.png

クライアントIDには先ほど作成したOAuthクライアントのクライアントIDを入力して、スコープには先ほどと同じ5つのスコープをカンマ区切りでペーストして入力します。最後に「承認」をクリックします。

find_real_file.png

新しいOAuth APIクライアントがドメイン全体の委任先として追加されました。

find_real_file.png

最後に、このプロジェクトでAdmin SDK APIを有効化します。

7. Googleで作成したプロジェクトでAdmin SDK APIを有効化

ここをクリックすると下記の画面が開くので、「有効にする」をクリックしてAdmin SDK APIを有効化します。画面上部のプロジェクト選択メニューが新しいプロジェクトになっていることを確認してください。

find_real_file.png

有効化されると、画面が下記のように変わります。

find_real_file.png

ここまでで、Google Developer Consoleでの作業は完了です。

8. ServiceNowでの接続設定の作成

ServiceNowのUI16を開きます。

これ以降の手順は英語UIで作成していますが、日本語UIでも同じ操作で実施することができます。

アプリケーションナビゲーターの検索窓に「connection」と入力して、[Connections & Credentials]アプリケーションの[Connections & Credential Aliases]モジュールをクリックします。

リストの中から「Google Directory」のレコードを開きます。
以下の形式のURIで同じレコードを直接開くことも可能です。

https://<インスタンス名>.service-now.com/sys_alias.do?sys_id=d5b2998387720010aec3819b88cb0b24

find_real_file.png

関連リンクの「Create New Connection & Credential」を選択します。

find_real_file.png

設定画面が開いたら、*必要項目を入力します。

find_real_file.png

JSONに記入済みのOAuthクライアントIDとクライアントシークレットを入力します。OAuth Authorization URLにはJSONに記載されている「auth_uri」の項目をコピーします。
最後に右下の「Create & Get OAuth Token」をクリックして設定を完了します。

find_real_file.png

別ウインドウでGoogleアカウントを選択するメニューが表示されるので、このOAuthクライアントアプリケーションを作成したGoogleアカウントをクリックします。

find_real_file.png

認証が正しく通れば、Googleアカウントの選択ウィンドウが自動的に閉じて元の画面に戻ります。Connections関連リストに作成されたレコードの[Active]フィールドがtrueになっていることを確認します。

find_real_file.png

これで初回の設定作業は完了しました。おつかれさまでした。
今後Google Directory spokeを利用する際は、今回作成した接続設定を使い回すことができますので、改めてこの作業を実施する必要はありません。

9. Flow Designerで動作を確認してみる

アクションタブでGoogle Directory spokeのアクションを開きます。この中からList All Groups Streamを試してみます。

find_real_file.png

「Test」ボタンで動作を確認します。

find_real_file.png

Customer IDかDomainのどちらかに値を入れて「Run Test」をクリックします。

find_real_file.png

アクションのテストが終わると結果のリンクが表示されるのでクリックします。

find_real_file.png

Execution Details (実行の詳細)タブで、テストが成功したことが確認できます。ACTIONのList All Groups Streamの行をクリックすると詳細な内容が展開されて表示されます。

find_real_file.png

Output DataのカテゴリーにOutputItemsというアイテムが表示されています。リンクになっているのでクリックすることができます。

find_real_file.png

クリックすると、このディレクトリーで管理しているグループの一覧が配列として入っていることが確認できます。

find_real_file.png

まとめ

IntegrationHubのGoogle Directory spokeには、以下のアクションがout-of-the-box (OOTB)で用意されています。

  • グループ管理 (情報取得・メンバー追加・メンバー削除・更新)
  • メンバー管理 (情報取得・メンバー追加・メンバー削除・更新)
  • ユーザー管理 (情報取得・作成・削除・更新・Admin付与・無効化・再有効化・パスワードリセット)

これらのアクションを使うことで、Flow Designerからno codeで管理の作業を自動化することが可能です。またOOTBのアクションで不足する場合は拡張することも可能です。

Flow Designerでのフローの作成は簡単です。メーリングリストの作成を承認制にする場合のフローは、以下のように可読性が高い状態でシンプルに作成することができます。

下記の例では、申請がレコードとして作成されたら承認されるのを待って、承認されたらIntegrationHubのアクションでGoogle Workspaceにグループを作成して、申請者に通知されるようになっています。

find_real_file.png

Flowの編集はAdmin権限がなくても実施できるので、利用者の要望に応じて使いやすいFlowに作り替えたり、複製して状況に応じた別パターンのFlowを作成することもできます。

最後までお読みいただきありがとうございます。皆さまの参考になれば幸いです。