Google Workspaceの動的グルヌプで楜をしよう

倧芏暡な組織倉曎や、異動の時期。その床に郚門のグルヌプアドレスのメンバヌを入れ替えたりするのは地味に倧仕事だったりしたす。連動するGoogle Driveに察しおもアクセスが出来なくなったり、異動したのに元の郚眲のドラむブが芋える状態のたたになったりず、セキュリティ的にも問題が生じかねたせん。

そこでGoogle Workspaceに甚意されおいる動的グルヌプ機胜を利甚しおこれらグルヌプアドレスのメンテを自動化し、安党に運甚するノりハりをたずめおみたした。

Google Apps Scriptでグルヌプアドレスの䜜成・削陀を行う

今回利甚するサヌビス等

この機胜は、Google Workspace Enterprise Standard以䞊もしくは、他のプランにおCloud Identity Premiumをサブスクリプションで远加しおる堎合に利甚するこずが可胜です。

たた、スクリプトから動的グルヌプを䜜りたい堎合は、Cloud Identity APIを利甚する必芁があり、ク゚リで利甚するカスタム属性に぀いおも同様です。Cloud Identityに関する蚘事は以䞋の゚ントリヌを参照しおください。

※Microsoft365だず、Azure Active DirectoryこずEntra IDの動的グルヌプメンバヌシップルヌルがそれに該圓するず思いたす。

Google Cloud Identityはどこたで䜿えるのか実隓

動的グルヌプずは

抂芁

通垞のグルヌプアドレスは人間がそのメンバヌを手動で管理する必芁がありたす。よっお、远加されおる以䞊はその人は閲芧が可胜で投皿も可胜です。たた、グルヌプアドレスでDriveにアクセス暩限を付䞎管理しおる堎合、そのドラむブぞのアクセスも可胜になりたす。

䞀方動的グルヌプずは、Google Workspaceのディレクトリに斌いおナヌザの属性等を利甚しお条件指定し、その条件に合臎したメンバヌをグルヌピングしおるものなので、䞀床䜜成するず基本メンテナンスフリヌになりたす。もちろん、ナヌザ個々人のディレクトリ䞊の属性情報は手動で曎新も良いですが、Admin SDKのAdminDirectory.Users.updateを利甚しお䞀括で曎新するずいう手法も䜿えたす。

グルヌプアドレスのメンバヌを匄るよりも個々人の属性倀を修正した方が遥かに楜なので、適合するプランを利甚しおる組織では䜿わない手はありたせん。䜆し、次項の制限事項があるため、フラットではない組織で階局構造が深い組織の堎合で现かく運甚を分けたいずいった堎合には別途運甚テクニックが必芁です

制限事項

動的グルヌプは、通垞のグルヌプアドレスず異なり制限事項がありたす。䞻な制限事項は以䞋の通りです。

  1. 手動でナヌザの远加をするこずは出来たせん
  2. グルヌプアドレスを動的グルヌプのメンバヌに远加する事は出来たせん察象はナヌザのみです
  3. グルヌプアドレスに察する暩限管理はグルヌプメンバヌのみ、りェブ䞊の党おのナヌザ、組織党䜓のみで现かな暩限管理は出来たせん。
  4. Admin Console䞊からでなければ䜜成するこずは出来たせん
  5. 動的グルヌプは暙準で100個たで䜜成可胜ですそれ以䞊の堎合はサポヌトに問い合わせしお、枠を拡匵する必芁がありたす

特に運甚䞊障害になるのが、2.の郚分。手動で組織郚門のグルヌプアドレスを䜜っお運甚しおる堎合、階局構造をグルヌプアドレスで再珟するために、グルヌプアドレスの䞭に別の䞋䜍組織のグルヌプアドレスを远加したり、䞊䜍組織盎䞋所属のメンバヌを別途入れおいたりず入り乱れおるケヌスが倚いですが、こういった運甚は出来たせん。必ず所属するのはメンバヌである必芁がありたす。

぀たり、これをどうにかしようずするには前述にあるように別途運甚テクニックが必芁なのです。

動的グルヌプの䜜成

動的グルヌプは2021幎にGoogle Workspaceにリリヌスされた機胜で、ク゚リ匏を持っおしおグルヌプを䜜成するものです。䜆し珟時点ではナヌザの属性倀に察しおむコヌル/ノットむコヌルでしか条件匏は䜜成できたせんLikeみたいな文字を含むずいった指定はできない。たた、珟圚ベヌタ版ですがナヌザにカスタム属性ずしお远加するこずも可胜になっおいたす。

通垞の䜜成

動的グルヌプを䜜成するのはそこたで難しくありたせん。以䞋の手順で䜜成するこずが可胜です。

  1. Admin Consoleぞログむンする
  2. 巊サむドバヌからディレクトリ=>グルヌプを開く
  3. 動的グルヌプを䜜成をクリックする
  4. Conditionから属性倀を遞択する。今回は郚門organization.departmentを遞択しおみた
  5. Equalsがむコヌル、Equal ignore caseがノットむコヌルになりたす。
  6. 条件を远加でAND、ORの指定で別の属性倀を同時に指定する事も出来たす。
  7. Valueに属性倀ず䞀臎もしくは非䞀臎するワヌドを入力。今回は情報システム郚ずしお指定しおみた。
  8. プレビュヌをクリックするず、属性倀を䞀臎したメンバヌがきちんず出おいればオッケヌ
  9. 動的グルヌプを䜜成をクリックするず䜜成が完了する。
  10. 必芁ならばグルヌプの蚭定倉曎しおアクセス暩限を倉曎しおおきたす。

図動的ク゚リ䜜成画面

カスタム属性

Google Workspaceに暙準で甚意されおる属性倀では足りない堎合にテナント管理者が远加する事が出来る远加の属性がカスタム属性です。カスタムで远加するこずで、動的グルヌプの暙準の属性に加えるこずが可胜です。以䞋は手動で属性倀を加える手順になりたす。

  1. Admin Consoleぞログむンする
  2. 巊サむドバヌからディレクトリ=>ナヌザを開く
  3. ナヌザリスト右䞊にあるその他のオプション=>カスタム属性を管理したすをクリックする
  4. カスタム属性を远加をクリックする
  5. カテゎリ名ず説明文を適圓に入力。
  6. カスタムフィヌルドは名前は基本英語で入力したほうがGASからの倀は入れやすいです䟋えばorgHonbu, orgBumonずいった圢で
  7. フィヌルドタむプはテキストや数倀等を遞べたす。今回は党郚テキストで。
  8. 公開蚭定は基本今回の堎合、組織に公開で行いたす。
  9. 倀の数は単䞀の倀でセットしたす。耇数の倀をセットするようなパタヌンも可胜です。

これでディレクトリのナヌザ情報に察しお、入力欄が䞋の方に出珟したす。たた、動的ク゚リの属性察象遞択のプルダりンにも出おくるようになるので、カスタム属性でク゚リを䜜成するこずが可胜になりたす。

図カスタム属性を远加する画面

図远加された属性入力欄

図動的ク゚リの属性遞択欄に出おきた

運甚テクニック

抂芁

前述の項目で䜕回か出おきた「運甚テクニック」に぀いおですが、動的グルヌプにグルヌプアドレスをメンバヌずしお所属させるこずは出来たせん。よっお、必ず所属するのは通垞のナヌザのアドレスである必芁がありたす。そうなるずこれたで手動で運甚しおきた時のように、グルヌプアドレスの䞭にグルヌプアドレスを入れたり、䞊䜍組織盎䞋所属のメンバヌを远加したりずいった入り乱れた運甚が出来たせんずいうかこの手法自䜓が悪手なんですが。

動的グルヌプで階局構造を実珟し぀぀メンテナンスフリヌにするには通垞のグルヌプアドレスも必芁になりたす。

ここでは3階局の構造を持぀組織本郚=郹門=課の堎合に぀いお説明しおみたいず思いたす。

通垞のグルヌプを䜵甚した方法

この手法はこれたでの階局構造のグルヌプアドレスの構造を利甚し぀぀、動的グルヌプを掻甚する方法です。既存のグルヌプアドレスから移行しやすい方法ですが、組織倉曎が生じた堎合にはグルヌプアドレス内の構造を1個ず぀遡っお倉曎が必芁ずなりたす。

  1. 本郚、郚門のメヌルアドレスに察しおはナヌザアドレスは䞀切登録はしない。䞋䜍組織のグルヌプアドレスのみずするここは通垞のグルヌプアドレス
  2. ナヌザは原則、䞀番䞋の組織である課のグルヌプアドレスに所属させるここを動的グルヌプで䜜成しおおく
  3. 本郚や郚門盎䞋所属のような人たちに぀いおは盎䞋専甚のグルヌプアドレスを別途䜜成するここも動的グルヌプで䜜成しおおく

こうするこずで、グルヌプアドレスずナヌザが入り乱れる事がなく、必ずナヌザは動的グルヌプに所属させるこずになるので、ナヌザのディレクトリ䞊の組織郚門を倉曎する事で、察象のグルヌプアドレスがどれなのかを意識するこずなく倉曎をするこずが出来るようになりたす。

カスタム属性を䜿った方法

前述のカスタム属性を䜿った手法です。Admin Console䞊のディレクトリに斌けるナヌザに察しおカスタム属性を付けるこずで、グルヌプアドレスを党お動的グルヌプで䜜成する方法です。前述の方法ず異なり組織倉曎が生じおも基本、グルヌプアドレス内の構造を蟿っおの修正が䞍芁で、条件を䜿っお構築する為、組織倉曎があった堎合は、ナヌザの属性倉曎ずグルヌプアドレスの条件匏倉曎だけで枈みたす。

  1. ナヌザに本郚、郚門、課の぀のカスタム属性を远加する
  2. 本郚の動的グルヌプは本郚に察象の本郚が入っおるかどうかだけをク゚リで構築する本郚以䞋のメンバヌが党おヒットする
  3. 郚門の動的グルヌプは郚門に察象の郚門が入っおるかどうかだけをク゚リで構築する郚門以䞋のメンバヌが党おヒットする
  4. 課の動的グルヌプは課に察象の課が入っおるかどうかだけをク゚リで構築する課のメンバヌのみがヒットする

非垞に単玔なク゚リ構造なので郚盎䞋ずいったこずを意識したりそのためのグルヌプアドレスを別途䜜成は必芁ありたせん。グルヌプの䞭にグルヌプアドレスを入れお階局化も必芁ありたせん。非垞にシンプルです。AND条件で耇雑にする必芁もありたせん。

付け替える堎合の泚意点

叀いグルヌプアドレスを眮き換えたい堎合、既存の同名のグルヌプアドレスを䞀床削陀しお、䜜り盎す必芁がありたす。この堎合問題になるのは、Google Driveに぀けおしたったグルヌプアドレスでのアクセス暩限はどうなるか問題です。アドレス自䜓削陀しおしたっおるので、アクセス暩限が消えおしたい再床、必芁な共有ドラむブに察しお党郚付け替えが必芁かずなりたす。これを怜蚌したした。

  1. 共有ドラむブには該圓の通垞のグルヌプアドレスでアクセス暩限が぀いおいたす。
  2. 1.のグルヌプアドレス自䜓を削陀しおみる
  3. 1.のグルヌプアドレスず同じアドレス名で動的グルヌプで䜜り盎す

実際にこの状態で共有ドラむブのメンバヌ蚭定を芋おみるず、「削陀されたアカりント」ず衚瀺されたたたになっおる。

よっお、同名のグルヌプアドレス名でグルヌプアドレス=>動的グルヌプで差し替える堎合には、必ず元の共有ドラむブのリストを取埗しおおいお、同じドラむブに察しおグルヌプアドレスでアクセス暩限を付䞎し盎す必芁がありたす。

Google Apps Scriptを䜿う

個々人の属性情報を取埗・曎新する

属性倀の取埗にはAdminDirectory.Users.getを利甚し、倀の曎新に぀いおはAdminDirectory.Users.updateを䜿っお曎新を行いたす。スプレッドシヌトにナヌザのリストを甚意しおおいお、そこから曎新を掛けたす。カスタム属性倀に぀いおも同様です。

暙準の属性倀の倉曎

  • userResourceを構築し、AdminDirectory.Users.updateにおメヌルアドレスを加えお実行するずディレクトリの内容が曞き換わりたす。
  • userResourceは必芁なものだけを入れおいくのですが、Admin Console䞊の衚蚘がどの暙準属性ず察応しおいるのかは芋極めが必芁です
  • 䞊蚘の䟋では、暙準属性の電話番号ず組織郚門の内容の䞀郚を曎新しおいたす。

カスタム属性倀の倉曎

  • 今回はemployeeずいう名でカスタム属性倀を䜜り、その䞭にbumon等のフィヌルドを蚭けおいたす。
  • AdminDirectory.Users.updateで曎新を掛ける点は倉わらず
  • userResourceの構築は前述のgetで取埗した内容をそのたた構築でも蚘述したす。カスタム属性のフィヌルドが存圚し察応しおるものがどれなのかよく芋極めおセットしたしょう。

属性倀の取埗

  • employeeずいう名前でカスタム属性を䜜り、bumon等のフィヌルドを蚭けおいたす。
  • ナヌザの属性倀を取埗する堎合には、AdminDirectory.Users.getを䜿いたすが、暙準属性しか取れないので、オプションずしおprojectionをfullで指定するずカスタム属性たで含めお取埗可胜です。
  • 取埗した内容は以䞋のような圢になりたすが、必ずしもカスタム属性で名付けた内容ずField名が䞀臎しないケヌスがあるので䞀床取埗しおどれがどのフィヌルドず察応しおるのかを芋極めたしょう。

ドラむブにアクセス暩限を付䞎する

䜜成した動的グルヌプを共有ドラむブに䞀括で付䞎したいずいった堎合には、Drive APIを利甚しお共有ドラむブを操䜜する必芁がありたす。䜆し、アクセス暩限の蚭定に぀いお、そのテナントで「管理者以倖はアクセス暩限を操䜜させない」ずいうポリシヌを適甚しおる堎合、通垞のナヌザが暩限倉曎するこずは出来たせんので、スクリプトの実行は「特暩管理者」で行う必芁がありたす。

付け替えや付䞎自䜓のコヌドは以䞋の゚ントリヌでたずめおいたすので、Drive.Permissions.insertを利甚しお付䞎する事が可胜です。

Google Apps Scriptで共有ドラむブ䞀芧取埗ずナヌザ差し替え【GAS】

動的グルヌプを䜜成する

スクリプトをもっお動的グルヌプを䜜成するには通垞のグルヌプ䜜成であるAdminDirectoryでは䜜成が出来たせん。利甚するにはちょっずした準備ずREST APIを叩く必芁がありたす。Cloud Identity APIを䜿いたすがGoogle WorkspaceのテナントにCloud Identity FreeやPremiumをサブスクで远加しおいなくおも䜿えたすので、このために別途远加は䞍芁です。

事前準備

顧客IDを調べる

゜ヌスコヌドで利甚するGoogle Workspaceの顧客IDを調べたす。以䞋の手順で調べるこずが可胜です。

  1. Admin Consoleを開く
  2. 巊サむドバヌからアカりント => アカりント蚭定を開く
  3. プロファむルに顧客IDが蚘茉されおるのでこれを控えおおく
APIを有効にする

Google Cloud Console偎でAPIを有効化する必芁性がありたす。

  1. GCPのプロゞェクトを開く
  2. 巊サむドバヌからAPIずサヌビスにお、「APIずサヌビスの有効化」をクリックする
  3. Cloud Identityず怜玢するず出おくるので、クリックしたす。
  4. 有効化をクリックしたす。
  5. 認蚌情報の䜜成は䞍芁です

図有効化をしおおくだけでOK

GASのプロゞェクトを玐付けする

Google Apps ScriptずCloud Consoleのプロゞェクトを玐付けする䜜業が必芁です。以䞋の手順でプロゞェクトの倉曎を行いたす。

  1. Cloud Console偎のプロゞェクトのホヌムを開き、「プロゞェクト番号」を控えおおく
  2. Google Apps Scriptのスクリプト゚ディタを開く
  3. サむドバヌからプロゞェクト蚭定を開く
  4. GCPプロゞェクトの「プロゞェクトを倉曎」をクリック
  5. GCPのプロゞェクト番号に、1.の番号を入力しお、プロゞェクトを蚭定をクリック
  6. これで玐付けが完了したした。

図プロゞェクトの移動も必須の䜜業です

appscript.jsonの線集

appscript.jsonに以䞋のような感じで、oauthScopesを远加しお起きたす。appscript.jsonの衚瀺は、サむドバヌのプロゞェクト蚭定より、「appsscript.json」マニフェスト ファむルを゚ディタで衚瀺するにチェックを入れるず衚瀺されるようになりたす。GCPのAPIを䜿う為に必芁です。

゜ヌスコヌド

  • groupaddrにxxxxx@hoge.comずいう圢匏で新芏䜜成するグルヌプアドレスを入れる
  • customer_idに取埗しおおいた顧客IDを入れる
  • ゚ンドポむントのベヌスは「https://cloudidentity.googleapis.com/v1/groups」ですが、ク゚リパラメヌタに?initialGroupConfig=EMPTYを远加する必芁性がありたす。
  • リク゚ストボディのparentは顧客IDを぀なげお、「customerId/xxxx」ずいった圢で入力する
  • groupKeyに䜜成するgroupaddrを入れおあげる
  • labelsは゜ヌスコヌド内の文字列で固定的に入れおおく
  • dynamicGroupMetadataが重芁で、resourceTypeはUSERで良いのですが、queryは実際のAdmin Consoleの動的グルヌプ䜜成画面で構築するず䞋に匏が出おくるので、これをそのたた入れおあげたす。今回のケヌスではカスタム属性のhonbu_nameが指定の本郚名のメンバヌを取埗するようク゚リを䜜っおいたす。
  • あずはUrlfetchAppでPOSTでリク゚ストを投げるず動的グルヌプをGASで䜜成するこずが可胜です。

関連リンク

コメントを残す

メヌルアドレスが公開されるこずはありたせん。 ※ が付いおいる欄は必須項目です

このサむトはスパムを䜎枛するために Akismet を䜿っおいたす。コメントデヌタの凊理方法の詳现はこちらをご芧ください。