G-gen の杉村です。この記事にたどり着いた方は、もしかしたら自社の Google Cloud(旧称 GCP)の組織に My First Project
という名前のプロジェクトが大量発生していることに気がついた方かもしれません。当記事ではその原因と、対処法をご紹介します。
事象
自社の Google Cloud(旧称 GCP)の組織ツリーは、Google Cloud の Web コンソールを開いて、検索ボックスに「Manage Resources」と入力し、リソースの管理画面へ遷移することで確認することができます。
するとツリーの中に My First Project
という名称のプロジェクトが大量に存在している場合があります。クラウド管理者からすると作成した覚えがなく、何らかの対処をすべきなのか、またどう対処するべきかがわからないケースもあります。
原因
My First Project とは
My First Project とは、Google アカウントがはじめて Google Cloud の Web コンソール画面にアクセスしたときや、何らかのチュートリアルドキュメントから Web コンソールに遷移したときなどに、自動的に生成されてしまう Google Cloud プロジェクトです。
原因となる IAM 権限
Google Cloud ではデフォルトで「組織ドメインのメールアドレスを持っているアカウントであれば誰でもプロジェクト作成できる」権限設定になっています。そのため過去に明示的にその権限を削除したことがなければ、誰でもプロジェクトを作成できる状態になっています。
これが原因で、組織の Google アカウントを持つ人が初めて Google Cloud コンソールにアクセスしたときなどに、My First Project
が乱立してしまうことになります。
以下のスクリーンショットでは、組織ルートレベルで
プロジェクト作成者 (roles/resourcemanager.projectCreator)
請求先アカウント作成者 (roles/billing.creator)
の IAM ロールが xxx.com
(ドメイン全体を意味する。実際には自社のドメイン)に付与されています。これにより、xxx.com
ドメインに所属するすべての Google アカウントがプロジェクトと請求先アカウントを作成できるようになっているのです。
対処の方針
前述の「誰でもプロジェクトを作成できる」権限を削除することで、今後は My First Project
が作成されることがなくなります。
多くの場合で、会社や官公庁などの Google Cloud 組織では、プロジェクト作成権限を情報システム部門、あるいはそれ相当の部門のメンバーに限定することが望ましいといえます。乱立し放置された Google Cloud プロジェクトはセキュリティホールとなり得るためです。
そのためまず、新規プロジェクト払い出しの申請フローを整備したうえで、全員から権限を剥奪して My First Project
が新規に作成されなくなる状況を作ることが望ましいです。
その後、乱立してしまった My First Project
を、作成したユーザーに確認しつつ、削除していくことになります。
対処の手順
1. IAM ロールの削除
組織ルートレベルで xxx.com
から、プロジェクト作成者 (roles/resourcemanager.projectCreator)
請求先アカウント作成者 (roles/billing.creator)
の IAM ロールを削除します。
この手順を実施すると、以後は誰でもプロジェクト作成ができる状態ではなくなります。プロジェクトの払い出し業務を情報システム相当部門に集約できている前提だとお考えください。
まず Google Cloud の Web コンソールで、上部検索ボックスに「IAM」と入力し、「IAM と管理」の画面へ遷移します。
その後、プロジェクトセレクタで組織ルートを選択します。コンソール上部のプロジェクトセレクタをクリックし、組織ルートを選択します。
プロジェクト作成者
請求先アカウント作成者
と表示されている行の右端の鉛筆マークをクリックするとロール編集画面がポップアップされるので、両方のロールをゴミ箱アイコンを押下して削除し、保存します。
これで IAM ロールは削除できたので、誰でもプロジェクトを作成できる状態は解消しました。
2. 不要プロジェクトの利用有無確認
使われていない My First Project
が乱立したまま残っている状態は、セキュリティの観点から望ましくありません。
以下のいずれかの方法で、プロジェクトの作成者を確認し、削除が可能かどうかを確認します。
- Cloud Logging で
CreateProject
メソッドの実行履歴を確認する - プロジェクトレベルで
オーナー (roles/owner)
の IAM ロールを持っている人を確認する
上記のうち1.が最も正確な方法です。Cloud Logging のログエクスプローラーにおいて以下のクエリを実行することで、プロジェクト作成時のログを確認します。これにより、誰がいつ、プロジェクトを作成したかを確認することができます。
protoPayload.methodName="CreateProject"
ログエクスプローラーの期間設定を変更することを忘れないでください。デフォルト設定では、監査ログ(Cloud Audit Logs)は過去400日まで保存されています。
プロジェクトが作成されたのが400日以上前である場合、誰がいつプロジェクトを作成したのか、監査ログから知ることはできません。その際は2.の IAM ロールを確認します。プロジェクトレベルで オーナー (roles/owner)
のロールを持っている人は、そのプロジェクトを作成した人である可能性が高いです。なぜなら、プロジェクトを作成したアカウントには自動的に オーナー (roles/owner)
ロールが付与されるからです。
あとからオーナーを追加することもできるので確実にプロジェクト作成者を突き止められるわけではありませんが、いずれにせよオーナー権限を持っているアカウントは、そのプロジェクトの実態を知っている可能性が高いと言えます。
3. 不要プロジェクトの削除
プロジェクトが不要であることを確かめられたら、そのプロジェクトを削除します。
IAM と管理の画面の左ペインに「設定」メニューがあります。
ここに遷移すると、シャットダウンのボタンがあります。これがプロジェクトを削除するボタンです。
目的のプロジェクトが選択されていることを注意して確認してください。
なおシャットダウン(削除)したプロジェクトは、30日以内であれば復元できる可能性があります。復元については以下のドキュメントをご参照ください。
組織の運用
適切な組織運用を行うには、Google Cloud の組織(Organization)の機能を正確に理解することが重要です。
ぜひ以下の記事をお読みいただき、組織の機能を活用してセキュアに Google Cloud 環境をご利用ください。
杉村 勇馬 (記事一覧)
執行役員 CTO / クラウドソリューション部 部長
元警察官という経歴を持つ現 IT エンジニア。クラウド管理・運用やネットワークに知見。AWS 12資格、Google Cloud認定資格11資格。X (旧 Twitter) では Google Cloud や AWS のアップデート情報をつぶやいています。
Follow @y_sugi_it