今回は、企業で使用しているGoogle グループのメンバー一覧を出力する方法を説明します!
Cloud IdentityやGoogle WorkspaceでGoogle グループを管理している場合、社員の入退社でGoogle グループメンバーの棚卸しを行う必要があります。理由は、退職しているユーザーがグループメンバーにいることでセキュリティリスクが上がってしまうからです。
Google Cloud 運用において、定期的にGoogle グループにおける、メンバー一覧の棚卸しを行うことは重要です。今回は、Google グループのメンバー一覧を出力する方法を説明します。組織を管理するインフラ担当者や情報システム担当者必見の内容です。
是非、最後までご覧いただけると嬉しいです。
事前準備
まずは、事前準備です。今回は、Google スプレッドシートを使用する方法説明します。事前に準備するのは、下記2点です。
- ユーザーにグループ閲覧者 ロールを付与する
- Google Cloud Platform でプロジェクトを作成する
1.ユーザーにグループ閲覧者 ロールを付与する
グループメンバーの一覧を出力するユーザーにCloud Identity/Google Workspaceの「グループの閲覧者」ロールが必要になります。管理者であれば、別途付与する必要はありません。グループメンバーの一覧を出力するユーザーに何もロールが付与されていない場合、「グループの閲覧者ロール」を付与します。作業手順を説明します。
1.Cloud Identity/Google Workspaceの管理画面を開く
ロール付与を行うため、Cloud Identity/Google Workspaceの管理画面(admin.google.com)を開きます。
2.「管理者ロール」を開く
サイドバーの「アカウント」→「管理者ロール」を開きます。
3.管理者を割り当て
グループ閲覧者にカーソルを合わせ、「管理者を割り当て」を選択します。
4.メンバーを割り当てる
「メンバーを割り当てる」を選択します。
5.メンバーを追加
検索フィールドでユーザー又はセキュリティ グループを検索し、「ロールを割り当て」を選択します。
6.完了
正常にメンバー追加が完了すると、管理者の一覧に表示されます。
2.Google Cloud Platform でプロジェクトを作成する
今回作成する方法では、予め組織にGoogle Cloud Platformのプロジェクトが必要です。ない場合は作成します。
作業手順
次は、作業手順です。作業は全6ステップです。
- スプレッドシートの作成
- Apps Scriptを選択
- AdminDirectoryの追加
- コードの入力
- 実行
- 完了
それでは、1つずつ説明します。
1.スプレッドシートの作成
まずは、スプレッドシートの作成を行います。1点注意点ですが、Cloud Identity Freeの場合、Google スプレッドシートを使用することはできません。理由は、Google スプレッドシート等のGoogle ドキュメントは、Google ドライブにデータを保存します。しかし、Cloud Identityt Freeの場合、Google ドライブのマイドライブを使用することができないためです。よって、今回は、一時的にGoogle Workspaceのデモ版ライセンスを使用しています。
右上のメニューアイコンからスプレッドシートを開きます。その後、「空白」を選択します。
2.Apps Scriptを選択
「拡張機能」メニューより「Apps Script」を選択します。
3.AdminDirectoryの追加
サイドバーから「サービス」右の+マーク(プラスマーク)を選択します。その後、「Admin SDK API ドキュメント」を選択し、「追加」を選択します。
4.コードの入力
「コード.gs」に下記Apps Scriptのコードを入力します。example.comの部分は、Google Cloudを使用しているドメイン名に変更してください。
function listGroupsAndMembers() {
// スプレッドシートの取得
var sheet = SpreadsheetApp.getActiveSheet();
// ヘッダー行の追加
sheet.appendRow(['グループID', 'グループEmail', '説明', 'メンバータイプ', 'メンバーEmail']);
// nextPageTokenの初期化
var nextPageToken = null;
// ページ単位で処理
do {
// ページの取得
var groups = AdminDirectory.Groups.list({
domain: 'example.com', // example.comには実際のドメイン名を入れてください
maxResults: 100, // 1ページあたりの最大取得件数
pageToken: nextPageToken
});
// グループ情報の取得
var groupList = groups.groups;
// グループ情報とプリンシパル情報の取得
for (var i = 0; i < groupList.length; i++) {
var group = groupList[i];
// グループ情報の行追加
sheet.appendRow([group.id, group.email, group.description]);
// メンバー情報の取得
var members = AdminDirectory.Members.list(group.email);
if (members.members && members.members.length > 0) {
for (var j = 0; j < members.members.length; j++) {
var member = members.members[j];
// プリンシパル情報の行追加
sheet.appendRow(['', '', '', member.type, member.email]);
}
}
}
// nextPageTokenの更新
nextPageToken = groups.nextPageToken;
} while (nextPageToken);
}
5.実行
最後に、コードを実行します。画面上部の「実行」を選択します。
権限を確認するウィンドウが表示されますので、「権限を確認」を選択します。
アカウント許可を促す画面が表示されますので、「許可」を選択します。
6.完了
正常に完了すると、スプレッドシートにGoogle グループのメンバー一覧が出力されます。※一部情報を変更しています。
このように、Google スプレッドシートとApps Scriptを使用することで、組織で使用しているGoogle グループの一覧を出力することができます。
まとめ
本日は下記2点について説明しました。
- 事前準備
- 作業手順
Google Cloudで使用しているグループのメンバー一覧を定期的に出力し不要なユーザーを削除することで、組織で使用しているGoogle Cloudのセキュリティを向上させることができます。企業がクラウドを使用する上で、セキュリティリスクを考えることはとても重要です。今回のブログを参考にし、定期的にグループメンバーの棚卸しをすることをオススメします。
これからも、Macのシステムエンジニアとして、日々、習得した知識や経験を発信していきますので、是非、ブックマーク登録してくれると嬉しいです!
それでは、次回のブログで!