Googleグループを使って権限管理工数を削減した話
Photo by Andrew Moca on Unsplash
【記事移行のおしらせ】
こちらの記事はバンダイナムコネクサスのTechBlogへ移行しました。
下記Linkよりご覧ください。
https://zenn.dev/bnx_techblog/articles/ff96630abf0a9e
こんにちは。バンダイナムコネクサス データ戦略部の藤井です。
今回は題目のとおり、Google Workspaceの1つの機能であるGoogleグループを使った権限管理を最適化した取り組みについて紹介します。
課題
バンダイナムコネクサスでは業務ツールとしてGoogle Workspaceを導入していることに加えて、バンダイナムコグループでグループ共通の業務システム(業務システム)としてMicrosoft 365を導入しています。
この2つのツールを併用して利用している背景としては、前回の記事で紹介したとおりデータレイクとしてGoogle Cloudを利用していたり、バンダイナムコネクサスの前身となるBXDは当時ドリコムとの合弁会社だったため両社にて別々のツールを利用していたことが挙げられるのですが、この似た役割を持つ2つのツールを使うことはそこまで珍しいことではないことではないと思います。
課題だったのは業務システム2つを手なりで導入してしまった結果、アカウント管理が煩雑になった点です。例えば、私がネクサスに入社した頃以下のような課題がありました。
課題①: 手動管理のため工数がかかっていた
Google ドライブおよびGoogle Cloudへのアクセス制御は手動かつ、by nameで行われていました。そのため、入社および退職者毎に管理者がアクセス制御するオペレーションが行われていました。
課題②: 非統制な管理
by nameで権限管理が行われていたことに加え、統制的な権限管理が行われておらず人によって権限が異なる状態でした。
権限基準表が存在せず、権限付与作業者が都度判断して毎回異なる権限を付与していたり、依頼者が「直近使うか分からないけどついでにもらっておこう」くらいの気持ちで複雑な依頼をしていたりした結果、複雑な権限付与状態になってしまっている、など潜在的なリスクが高い状態でした。
課題③: 権限付与までのリードタイムが長い
Google Cloudのプロジェクトは複数あり、バンダイナムコネクサスが管理するプロジェクトと外部の委託会社が管理しているプロジェクトの2パターンがありました。
特に委託会社へ依頼する場合、窓口へ起票し対応してもらうまで待機する必要がありました。入退場者の多い月や年度変わりの4月は管理者のタスクがスタックしてしまい付与完了までに2,3日かかることもしばし発生していました。
課題解決の取り組み
実行体制
課題解決に向けて以下のような体制で実行し、現在もこの体制で運用を行っています。
後述しますが、結果的にこの実行体制を取ったことでスムーズかつスピード感持って課題解決することができました。
Googleグループの活用
GoogleグループはGoogleが提供するメーリングリスト、会話フォーラム機能などを持つ情報共有やコミュニケーションを効率化を目的としたサービスです。(詳細は公式やその他サイトをご参照ください)
このGoolgeグループのメーリングリストを用いることで、by nameではなくグループ単位で権限付与することができるようになります。これはGCPだけでなく、Google ドライブやGoogleスプレッドシートも同様にメーリングリストで管理することができるようになるため非常に便利です。
このグループをさらに有効的に活用するために情シスの方と連携しバンダイナムコグループの基幹システムであるAzure Active DirectoryとGoogle Workspaceのアカウントを同期させる取り組みも同時に行いました。
これにより、入退場時に何もしなくてもGCPやGドライブのアクセス制御ができるようになりました。
図にすると以下のような状態になりましたです。
※ 厳密にはグループは入れ子構造で、グループへのユーザ割り振りも一部同期、一部手動で行っています。
権限の統制管理
上記のような仕組みを社内のいろんな方々と連携し整えつつ、まず始めに課題②非統制な管理の改善に取り組みました。この課題は重大なセキュリティインシデントを引き起こしかねないリスクであったため早急に取り掛かりました。
始めに現状把握から始まり以下のステップで権限統制を行いました。
1. 現状の把握
- 委託会社や情シスに協力を仰ぎ、閲覧権限および管理者権限を取得する
- ネクサスメンバーが関係する全GCPの権限の付与状況を把握する
2. 社内メンバーの大まかな業務の把握(ヒアリング)
- 社内メンバーの多くは分析者であり、不要と思われる権限が付与されているメンバーが多く存在していたため各チームのリーダやメンバーに直接ヒアリングなど実施した
- スピーディーにセキュリティ対策をするため大まかに把握するに留めた
3. 権限統制表の作成
- 現状とヒアリングを通して権限統制表を作成し、各メンバーの業務に合った権限レベルを設定した
- 例えば、大半の分析官はデータレイクであるBigQueryの閲覧権限と作業環境の権限があれば十分
4. Google グループの作成
- 3で作成した統制表に合うようメンバーのグループ分けを実施
5. アカウントの整理作業
- 権限の変更期間を設けて業務に影響がないように実施
整理の結果、簡単な図にすると以下のような状態になりました。アカウント管理をterraform化したのもこの頃からです。
また、図に表現しているように外部の委託会社や管理者アカウントをはじめとする例外的なアカウントは引き続きby nameで管理しています。
これらのアカウントもグループ管理、自動化することは可能なのですが、例外アカウントはアカウントが無効か有効かがバンダイナムコグループで管理できないためや、強い権限の付与にはワンステップ多く踏んでもらう必要があるようにしたかったためです。
具体的にはslackの依頼窓で必ず目的を書いてもらうようにしています。
これによりログがslack上とgithub上に残り棚卸しの際にも円滑に作業を行うことができます。
例えばこのような感じです。(伏せている箇所が多いですがご了承下さい)
結果どうなったか?
これらの活動によって得られたメリットを以下箇条書きします。
- 管理の一元化による作業効率の向上
- 通常グループのみで権限が十分な大多数のアカウントはAzure ADから自動で振り分けられるためグループの操作も不要になった
- 追加で権限付与が必要なケースも管理者はGoogleグループへのメンバー追加・削除の作業のみで済む
- 統一性と柔軟性のあるアクセス制御
- 権限レベルとアクセス制御方法を統一することで管理の効率化とセキュリティの強化を実現した
- 権限レベルとアクセス制御方法を統一することで管理の効率化とセキュリティの強化を実現した
- 権限付与までのリードタイム
- これまで外部にby nameで依頼する作業が発生していたが、入退場時に半自動で追加・削除ができるため委託会社の作業工数およびリードタイムはほぼゼロに
- 例外アカウントは手動対応しているものもterraform化したことで権限管理、承認をインフラ運用メンバーに委譲でき、即日対応に
最後に
データエンジニアリングとは少し距離が離れているように思えますが、データエンジニアは何かとAdmin権限と縁が深いためこの内容の記事としてまとめました。
最後にこの取り組みが実現し実運用できている成功要因をまとめて終わりにしたいと思います。
データエンジニア、権限管理者の参考になれば幸いです。
- バックオフィス部門とのコラボレーション
- Admin権限がなければ何も始められませんし、実現するためには上長の理解はもちろん情シス、経営推進部をはじめとする基幹システム管理者や既存オペレーションを担うメンバーの協力が必要です
- 他部署にモチベーション高く協力してくれる方の存在がかなり大きいです。一緒に手を動かしてくれる仲間を探しましょう
2. ヒアリング
- 現状のメンバーの業務を可能な限り阻害しない利便性を確保しつつも権限統制やアクセス制御が必要でこのバランスを保つために現状把握のヒアリングも非常に重要です
以上です。
最後まで読んで頂きありがとうございました!