G-gen の三浦です。当記事では Google Apps Manager(以下、GAM)を使用し、Google Workspace の設定をコマンドライン(以下、CLI)で管理する方法を紹介します。 概要 Google Apps Manager(GAM) とは 注意事項 検証内容 GAM のセットアップ [Google Cloud] GAM をインストール [Google Workspace] GAM アプリから Google Workspace へのアクセス許可 [Google Cloud] OAuth クライアントの作成 [Google Workspace] OAuth クライアントから Google Workspace へのアクセス許可 [Google Cloud] 管理者アカウントで GAM の操作を許可 [Google Workspace] OAuth クライアントから API アクセスの許可 [Google Cloud] GAM のインストール確認 GAM の検証 ユーザー管理 ユーザーの一覧を出力 ユーザーの作成、削除 2段階認証のステータス確認 グループ管理 グループ一覧の出力 グループメンバーの追加 共有ドライブの作成 共有ドライブの作成 共有ドライブへメンバーの追加 概要 Google Apps Manager(GAM) とは Google Apps Manager (GAM)とは、 Google Workspace の管理を CLI で実行するためのツールです。 GAM を使用すると、次のような管理業務を効率化できます。 例 説明 ユーザー・グループ管理 ユーザー作成・更新・削除やグループメンバーの一括処理ができます。 2段階認証の確認 全ユーザーの2段階認証(2SV)の有効状況を一覧化し、リマインド通知に使用できます。 デバイスの一覧取得 組織内のモバイル端末や Chrome デバイス情報を取得し、不審端末を特定できます。 共有ドライブ管理 共有ドライブの作成やメンバー管理を CLI で実施できます。 参考 : サードパーティ製ツールを使用して大規模なプロビジョニングを短時間で行う 参考 : GAM 注意事項 以下の公式ドキュメントに記載されているとおり、 GAM はオープンソースのサードパーティ製ソリューションです。そのため、 Google 社のサポート対象外 となります。 参考 : サードパーティ製ツールを使用して大規模なプロビジョニングを短時間で行う 検証内容 検証手順は次のとおりです。 項番 内容 説明 1 GAM のセットアップ Cloud Shell を使い、GAM をセットアップします。 2 ユーザー管理 ユーザー情報の確認、新規作成、削除を行います。 3 グループ管理 グループの作成、メンバー追加を行います。 4 共有ドライブの作成 共有ドライブの作成、メンバー追加を行います。 GAM のセットアップ [Google Cloud] GAM をインストール Google Cloud (旧称 GCP )コンソール( https://console.cloud.google.com )にログインし、 Cloud Shell を有効化します。 参考 : Cloud Shell を使用する 以下のコマンドで GAM のインストーラーをダウンロードして実行します。 bash < ( curl -s -S -L https://git.io/gam-install ) 参考 : Downloads-Installs-GAM7 以下のプロンプトが順に表示されます。指示のとおりに入力して進めます。 # 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 にアクセスし、[開始] を選択します。 開始を選択 以下の情報を入力し、[次へ] を選択します。 アプリ名: 任意のアプリ名 ユーザーサポートメール: 管理者のメールアドレスを指定 アプリ情報を入力 参考 : Manage OAuth App Branding [内部] を選択し、[次へ] を選択します。 対象の選択 任意のメールアドレスを入力し、[次へ] を選択します。 連絡先情報の入力 ポリシーを確認の上で、[同意します] を選択し、[続行] > [作成] を選択します。 ポリシーへの同意とクライアントの作成 [クライアント] > [+ クライアントを作成] を選択します。 クライアントを作成を選択 デスクトップ アプリ を選択し、任意のアプリ名を入力し、[作成] を選択します。 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 のスコープ(アクセス範囲)を選択します。 s → c の順に入力すると、一般的な管理操作に必要な標準スコープが一括で選択され、認証が続行されます。 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, 参考 : Print user details 以下のように 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 参考 : Create a user ユーザーの新規作成確認 以下コマンドでユーザーの削除できます。 gam delete user taro.yamada@miurak-test.com # 出力例 User: taro.yamada@miurak-test.com, Deleted 参考 : Delete or suspend users 2段階認証のステータス確認 以下コマンドでユーザーの2段階認証の設定状況が確認できます。 isEnrolledIn2Sv が False の場合、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 参考 : Display information about selected groups 以下コマンドで全グループのメンバーを出力できます。 # すべてのグループのメンバーを一覧出力 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 参考 : Display group membership in CSV format グループメンバーの追加 以下コマンドでグループにメンバーを追加できます。 # グループにユーザーを追加 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 参考 : Add members to a group 共有ドライブの作成 共有ドライブの作成 以下コマンドで共有ドライブを作成できます。 # 共有ドライブの新規作成 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 参考 : Create a Shared Drive 共有ドライブへメンバーの追加 共有ドライブの 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 参考 : Display Shared Drives 以下コマンドで共有ドライブにユーザーを管理者( 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 参考 : Manage Shared Drive access 共有ドライブの確認 三浦 健斗 (記事一覧) クラウドソリューション部 2023年10月よりG-genにジョイン。元オンプレ中心のネットワークエンジニア。ネットワーク・セキュリティ・唐揚げ・辛いものが好き。