Google Workspaceグループの作成を自動化

Google Workspaceグループの作成を自動化

はじめに

わたしたちのチームでは、メールアドレス/グループを一括で作成する必要がありました。しかし Google Workspace の管理コンソールで1件ずつ操作するのは端的にめんどくさいです。そこで GCP + Workspace API を活用し、自動化したのが今回の記事の背景です。

フェーズの全体像

  1. "管理用" Google Cloud プロジェクトを作る
  2. 必要な Workspace API を有効化 & サービスアカウント発行
  3. Workspace 側で "ドメインワイド委任" を許可
  4. CLI/スクリプトを書いて実行する

1. 管理用 GCP プロジェクトを作成

gcloud projects create admin-automation \
  --name="Admin Automation"
 
gcloud config set project admin-automation

2. API 有効化 & サービスアカウント準備

2-1. API を ON

gcloud services enable \
  cloudidentity.googleapis.com \  # Groups API
  admin.googleapis.com \          # Admin SDK Directory API
  groupssettings.googleapis.com   # Group Settings API

2-2. サービスアカウント作成

gcloud iam service-accounts create gw-admin-bot \
  --display-name="GW Admin Bot"
 
# 鍵を JSON で発行(CI に置く or Secret Manager へ)
gcloud iam service-accounts keys create sa-key.json \
  --iam-account gw-admin-bot@admin-automation.iam.gserviceaccount.com

2-3. 最低限付ける IAM ロール

目的ロール
API 呼び出し許可roles/iam.serviceAccountTokenCreator(本人に対して)
プロジェクトの閲覧roles/viewer など最低限で OK

3. Workspace 側でドメインワイド委任

  1. 管理コンソール → [セキュリティ] → [API 制御] → [ドメインワイド委任]
  2. [新しい委任を追加]Client ID に先ほどのサービスアカウントの ユニーク ID を入力(メールアドレスではない)。
  3. OAuth スコープ に下記をカンマ区切りで登録:
https://www.googleapis.com/auth/cloud-identity.groups,
https://www.googleapis.com/auth/cloud-identity.groups.readonly,
https://www.googleapis.com/auth/admin.directory.group,
https://www.googleapis.com/auth/admin.directory.group.member,
https://www.googleapis.com/auth/apps.groups.settings

💡 ポイント

  • Cloud Identity API 用スコープと Admin SDK 用スコープの 両方 が必要。
  • さらに「グループ管理者」の 管理者ロール をサービスアカウントに付与しておくと UI 上でも権限が分かりやすい。

4. スクリプト実装

4-1. gcloud CLI をサービスアカウントで実行

gcloud auth activate-service-account \
  --key-file sa-key.json \
  --impersonate-service-account \
      gw-admin-bot@admin-automation.iam.gserviceaccount.com

これで gcloud identity groups … コマンドがドメインワイド権限で動作します。

4-2. 作成したスクリプト

#!/usr/bin/env bash
# 作成したいグループ
GROUP_EMAILS=(
"CVAUG006@example.com"
"CZMPC007@example.com"
)
 
## 追加するメンバー
MEMBERS=(
"alice@example.com"
"bob@example.com"
)
 
# すべてのグループを作成し、メンバーを追加する
for group_email in "${GROUP_EMAILS[@]}"; do
  # グループ名のプレフィックスを抽出(例:CVAUG006)
  prefix=$(echo "$group_email" | cut -d '@' -f 1)
  # デバッグ出力
  echo "デバッグ - グループ: $group_email, プレフィックス: $prefix"
  
  display_name="prefix: $prefix"
  
  echo "グループ作成: $group_email ($display_name)"
  gcloud identity groups create "$group_email" \
    --display-name="$display_name" --organization="example.com"
  
  # エラーが発生した場合は処理を続行
  if [ $? -ne 0 ]; then
    echo "警告: グループ $group_email の作成に失敗しました。次のグループに進みます。"
    continue
  fi
  
  # メンバーを追加
  for member in "${MEMBERS[@]}"; do
    echo "メンバー追加: $member$group_email"
    gcloud identity groups memberships add \
      --group-email="$group_email" \
      --member-email="$member" \
      --roles=MEMBER
  done
  
  echo "========================================"
 done

まとめ

ステップ主な作業
1. GCP プロジェクトgcloud projects create で管理用プロジェクトを作成
2. API & SAgcloud services enable ... → サービスアカウント発行
3. Workspace 連携管理コンソールでドメインワイド委任 + 管理者ロール付与
4. グループ自動化gcloud / Curl / GAM でグループを一括作成

Latest Articles