Google Apps Managerを使ってGoogle Workspaceをコマンドラインで管理してみた

記事タイトルとURLをコピーする

G-gen の三浦です。当記事では Google Apps Manager(以下、GAM)を使用し、Google Workspace の設定をコマンドライン(以下、CLI)で管理する方法を紹介します。

概要

Google Apps Manager(GAM) とは

Google Apps Manager(GAM)とは、 Google Workspace の管理を CLI で実行するためのツールです。

GAM を使用すると、次のような管理業務を効率化できます。

説明
ユーザー・グループ管理 ユーザー作成・更新・削除やグループメンバーの一括処理ができます。
2段階認証の確認 全ユーザーの2段階認証(2SV)の有効状況を一覧化し、リマインド通知に使用できます。
デバイスの一覧取得 組織内のモバイル端末や Chrome デバイス情報を取得し、不審端末を特定できます。
共有ドライブ管理 共有ドライブの作成やメンバー管理を CLI で実施できます。

注意事項

以下の公式ドキュメントに記載されているとおり、 GAM はオープンソースのサードパーティ製ソリューションです。そのため、Google 社のサポート対象外となります。

検証内容

検証手順は次のとおりです。

項番 内容 説明
1 GAM のセットアップ Cloud Shell を使い、GAM をセットアップします。
2 ユーザー管理 ユーザー情報の確認、新規作成、削除を行います。
3 グループ管理 グループの作成、メンバー追加を行います。
4 共有ドライブの作成 共有ドライブの作成、メンバー追加を行います。

GAM のセットアップ

[Google Cloud] GAM をインストール

Google Cloud (旧称 GCP )コンソール(https://console.cloud.google.com)にログインし、 Cloud Shell を有効化します。

以下のコマンドで GAM のインストーラーをダウンロードして実行します。

bash <(curl -s -S -L https://git.io/gam-install)

以下のプロンプトが順に表示されます。指示のとおりに入力して進めます。

# Linux 環境のため "N" を入力
Can you run a full browser on this machine? (usually Y for MacOS, N for Linux if you SSH into this machine) N

# セットアップを続けるために "yes" を入力
GAM is now installed. Are you ready to set up a Google API project for GAM? (yes or no) yes

# Google Workspace の管理者のメールアドレスを入力
Please enter your Google Workspace admin email address: admin@mail.com

[Google Workspace] GAM アプリから Google Workspace へのアクセス許可

以下の手順が表示されます。指示のとおりに入力して進めます。この間、ターミナルは操作せず、そのままにします。

手順の表示

1. の上部に表示されている URL にアクセスし、[新しいアプリを設定] を選択します。

新しいアプリを設定を選択

手順2.に表示されている ID を入力し、[検索] を選択します。GAM Project Creation が表示されるので、選択します。

検索を実施

GAM Project Creation を選択

GAM 経由で操作する範囲を選択し、[続行] を選択します。特定の組織部門のみを管理する場合は、対象の組織部門を選択します。

操作範囲を選択

[信頼できる] を選択し、[続行] を選択します。

信頼できるを選択

内容を確認し、[完了] を選択します。

内容の確認

設定が完了したら、 Cloud Shell のターミナルに戻ります。 Enter キーを押下すると、以下が表示されます。

手順の表示

表示された URL にアクセスし、GAM に対して管理者アカウントへのアクセスを許可します。

GAM へのアクセス許可

前手順で [許可] を選択すると、以下エラーが表示されるので、URL をコピーします。

エラーの表示とURLのコピー

Cloud Shell のターミナルに戻ります。Enter verification code or pasteの項目にコピーした URL を貼り付け、 Enter キーを押下します。

URL を貼り付け

[Google Cloud] OAuth クライアントの作成

以下が表示されます。手順に従って実行します。ターミナルは操作せず、このままにします。

手順の表示

1.の上部に表示されている URL にアクセスし、[開始] を選択します。

開始を選択

以下の情報を入力し、[次へ] を選択します。

  • アプリ名:任意のアプリ名
  • ユーザーサポートメール:管理者のメールアドレスを指定

アプリ情報を入力

[内部] を選択し、[次へ] を選択します。

対象の選択

任意のメールアドレスを入力し、[次へ] を選択します。

連絡先情報の入力

ポリシーを確認の上で、[同意します] を選択し、[続行] > [作成] を選択します。

ポリシーへの同意とクライアントの作成

[クライアント] > [+ クライアントを作成] を選択します。

クライアントを作成を選択

デスクトップ アプリを選択し、任意のアプリ名を入力し、[作成] を選択します。

OAuth クライアント ID の作成

作成後に表示されるクライアント IDクライアント シークレットをコピーします。

クライアント情報の確認

Cloud Shell のターミナルに戻り、コピーしたクライアント IDクライアント シークレットをペーストし、Enter キーを入力します。

# クライアント ID をペースト
Enter your Client ID: 
# クライアント シークレットをペースト
Enter your Client Secret: 

[Google Workspace] OAuth クライアントから Google Workspace へのアクセス許可

以下が表示されるので、手順に従って実行します。ターミナルは操作せずに、このままにします。

手順の表示

1.の上部の URL(https://admin.google.com/ac/owl/list?tab=configuredApps)へアクセスし、[新しいアプリを設定] を選択します。

新しいアプリを設定を選択

2. で表示されている ID を入力し、[検索] を選択し、前手順で作成したアプリ名が表示されていることを確認し、選択します。

作成したアプリの選択

GAM 経由で操作する範囲を選択し、[続行] を選択します。特定の組織部門のみ操作したい場合、対象の組織部門を選択します。

範囲の選択

[信頼できる] を選択し、[続行] を選択します。

信頼できるを選択

内容を確認し、[完了] を選択します。

内容の確認

[Google Cloud] 管理者アカウントで GAM の操作を許可

Cloud Shell のターミナルに戻り、Enter キーを入力すると、以下が表示されるので、yes と入力し、Enter キーを押下します。

# `yes`と入力し、GAM に管理者アカウントとして Google Workspace を操作する権限を与えるための OAuth 認証を開始します。
Are you ready to authorize GAM to perform Google Workspace management operations as your admin account? (yes or no) yes

以下が表示されるので、GAM に許可する API のスコープ(アクセス範囲)を選択します。

sc の順に入力すると、一般的な管理操作に必要な標準スコープが一括で選択され、認証が続行されます。

GAMの権限を選択

以下が表示されます。表示されている URL へアクセスし、管理者アカウントを選択して、前の手順で作成した OAuth クライアントにログインします。

手順の表示
ログインを実施

各種 Google Workspace リソースへのアクセスを許可します。

アプリへ Google Workspace へのアクセスを許可

前手順で [許可] を選択すると、以下エラーが表示されるので、URL をコピーします。

エラーの表示とURLのコピー

Cloud Shell のターミナルに戻り、Enter verification code or pasteの項目にコピーした URL をペーストし、Enter キーを押下します。

URLをペースト

以下のプロンプトが順に表示されるので、指定の通りに入力して進めます。

# `yes` と入力し、GAM に Google Workspace のユーザーデータや設定へのアクセスを許可します
Are you ready to authorize GAM to manage Google Workspace user data and settings? (yes or no) yes
# Google Workspace の管理者のメールアドレスを入力
Please enter the email address of a regular Google Workspace user: admin@mail.com

[Google Workspace] OAuth クライアントから API アクセスの許可

以下が表示されるので、表示されている URL へアクセスします。

※ この時点では、まだ Google Workspace API を利用する権限を付与していないため、FAILとなります。

手順の表示

[承認] を選択し、OAuth クライアントに対して、各種 Google Workspace 関連 API へのアクセスを許可します。

Google Workspace API の利用を許可

Cloud Shell のターミナルに戻り、yesと入力して、 Enter キーを入力します。

# `yes`を入力し、GAM に Google Workspace のユーザーデータや設定へのアクセスを許可します。
Are you ready to authorize GAM to manage Google Workspace user data and settings? (yes or no) yes

セットアップが完了したことを確認します。

セットアップ完了

[Google Cloud] GAM のインストール確認

前手順で表示されていたコマンドで、GAM コマンド用のエイリアスを設定します。

コマンドの確認

以下コマンドで GAM のバージョンが表示されることを確認します。

gam version

GAM コマンドの結果確認

GAM の検証

ユーザー管理

ユーザーの一覧を出力

以下コマンドでユーザー基本情報を一覧で取得(メールアドレス、氏名、ステータス)できます。

gam print users fields primaryEmail name suspended
 
# 出力例
Getting all Users, may take some time on a large Google Workspace Account...
Got 1 User: admin@miurak-test.com - admin@miurak-test.com
primaryEmail,name.givenName,name.familyName,name.fullName,name.displayName,suspended,suspensionReason
admin@miurak-test.com,健斗,三浦,三浦健斗,,False,

以下のようにtodriveを指定することで、実行結果をスプレッドシートに保存できます。

gam print users fields primaryEmail name suspended todrive
 
# 出力例
Getting all Users, may take some time on a large Google Workspace Account...
Got 1 User: admin@miurak-test.com - admin@miurak-test.com
Data uploaded to Drive File:
https://docs.google.com/spreadsheets/d/XXXXX/edit?usp=drivesdk
Recipient: admin@miurak-test.com, Message: miurak-test.com - Users, Email Sent: 195fa4bb292959b7
https://docs.google.com/spreadsheets/d/XXXXX/edit?usp=drivesdk

実行結果

ユーザーの作成、削除

以下コマンドで新規ユーザーの作成できます。この場合、作成したユーザーはtestという組織部門に所属します。

gam create user taro.yamada@miurak-test.com firstname Taro lastname Yamada password "Password123" org /test
 
# 出力例
User: taro.yamada@miurak-test.com, Created

ユーザーの新規作成確認

以下コマンドでユーザーの削除できます。

gam delete user taro.yamada@miurak-test.com
 
# 出力例
User: taro.yamada@miurak-test.com, Deleted

2段階認証のステータス確認

以下コマンドでユーザーの2段階認証の設定状況が確認できます。isEnrolledIn2SvFalseの場合、2段階認証が無効となります。

# 全ユーザーの 2SV(2段階認証)設定状況を確認
gam print users fields primaryEmail isEnrolledIn2Sv
 
# 出力例
Getting all Users, may take some time on a large Google Workspace Account...
Got 2 Users: admin@miurak-test.com - taro.yamada@miurak-test.com
primaryEmail,isEnrolledIn2Sv
admin@miurak-test.com,True
taro.yamada@miurak-test.com,False # False のため、本ユーザーは2段階認証が無効です

本コマンドも同様にtodriveを指定することで、実行結果をスプレッドシートに保存できます。

グループ管理

グループ一覧の出力

以下コマンドで全グループの一覧とメンバー数を出力できます。

# 全グループの情報を一覧で出力
gam print groups fields email name directMembersCount
 
# 出力例
Getting all Groups, may take some time on a large Google Workspace Account..
email,name,directMembersCount
test-security@miurak-test.com,test-security,,False,1
test123@miurak-test.com,test,,True,2

以下コマンドで全グループのメンバーを出力できます。

# すべてのグループのメンバーを一覧出力
gam print group-members
 
# 出力結果
Getting all Members, Managers, Owners for test-security@miurak-test.com (1/1)
Got 1 Member, Manager, Owner for test-security@miurak-test.com...
group,type,role,id,status,email
test-security@miurak-test.com,USER,MEMBER,101148376274234144710,ACTIVE,admin@miurak-test.com

グループメンバーの追加

以下コマンドでグループにメンバーを追加できます。

# グループにユーザーを追加
gam update group test-security@miurak-test.com add member user taro.yamada@miurak-test.com
 
# 出力例
Group: test-security@miurak-test.com, Add 1 Member
  Group: test-security@miurak-test.com, Member: taro.yamada@miurak-test.com, Added: Role: MEMBER

共有ドライブの作成

共有ドライブの作成

以下コマンドで共有ドライブを作成できます。

# 共有ドライブの新規作成
gam create shareddrive "営業部共有ドライブ"
 
# 出力例
User: admin@miurak-test.com, Shared Drive Name: 営業部共有ドライブ, Shared Drive ID: XXXXX, Created
Waiting for Shared Drive creation to complete. Sleeping 10 seconds

共有ドライブへメンバーの追加

共有ドライブの ID を特定する必要があります。以下コマンドで前手順で作成した共有ドライブの ID(id)を確認します。

gam print shareddrives | grep "営業部共有ドライブ"
 
# 出力結果
Getting all Organizational Units, may take some time on a large Google Workspace Account...
Got 2 Organizational Units
Getting all Shared Drives, may take some time on a large Google Workspace Account...
Got 1 Shared Drive...
User,id,name,backgroundImageLink,capabilities.canAddChildren,capabilities.canChangeCopyRequiresWriterPermissionRestriction,capabilities.canChangeDomainUsersOnlyRestriction,capabilities.canChangeDriveBackground,capabilities.canChangeDriveMembersOnlyRestriction,capabilities.canChangeSharingFoldersRequiresOrganizerPermissionRestriction,capabilities.canComment,capabilities.canCopy,capabilities.canDeleteChildren,capabilities.canDeleteDrive,capabilities.canDownload,capabilities.canEdit,capabilities.canListChildren,capabilities.canManageMembers,capabilities.canReadRevisions,capabilities.canRename,capabilities.canRenameDrive,capabilities.canResetDriveRestrictions,capabilities.canShare,capabilities.canTrashChildren,colorRgb,createdTime,hidden,orgUnit,orgUnitId,restrictions.adminManagedRestrictions,restrictions.copyRequiresWriterPermission,restrictions.domainUsersOnly,restrictions.driveMembersOnly,restrictions.sharingFoldersRequiresOrganizerPermission
admin@miurak-test.com,XXXXXXX,営業部共有ドライブ,https://ssl.gstatic.com/team_drive_themes/donut_coffee_background.jpg,True,False,False,True,False,False,True,True,True,True,True,True,True,True,True,True,True,True,True,True,#f06292,2025-04-03T08:43:13Z,False,/,03ph8a2z1cgdtbo,False,False,False,False,False

以下コマンドで共有ドライブにユーザーを管理者(organizer)として追加します。

# 構文
gam user "管理者のメールアドレス" add drivefileacl id "ドライブの ID" user "追加するユーザーのメールアドレス" role "権限"
 
# 例
gam user miura@dev.g-gen.co.jp add drivefileacl id XXXXXX user miuratest12345@dev.g-gen.co.jp role organizer
 
# 出力結果
User: miura@dev.g-gen.co.jp, Add 1 Drive File/Folder ACL
  User: miura@dev.g-gen.co.jp, Drive File/Folder ID: XXXXXX, Permission ID: miuratest12345@dev.g-gen.co.jp, Added
  三浦はな子
    id: XXXXXX
    type: user
    emailAddress: miuratest12345@dev.g-gen.co.jp
    domain: dev.g-gen.co.jp
    role: organizer
    permissionDetails:
      role: organizer
        type: member
        inherited: False
    photoLink: https://lh3.googleusercontent.com/a/XXXXXX=s64
    deleted: False

共有ドライブの確認

三浦 健斗(記事一覧)

クラウドソリューション部

2023年10月よりG-genにジョイン。元オンプレ中心のネットワークエンジニア。ネットワーク・セキュリティ・唐揚げ・辛いものが好き。