G-gen の杉村です。 Google Cloud (旧称 GCP) には 組織のポリシー 機能があり、企業や官公庁など、組織における Google Cloud 利用に統制を効かせることができます。当記事では組織のポリシーを徹底解説します。
組織のポリシーとは
Google Cloud (旧称 GCP) には 組織 (Organization) の機能があり、複数のプロジェクトを統合管理することができます。会社や官公庁などで組織的に Google Cloud を利用するに当たり必須の機能です。
組織では フォルダ (Folder) を使って階層構造を作り、個別のテナントにあたる Google Cloud プロジェクト を格納することができます。
このように組織で管理されたプロジェクトに対し一定のルールを課し、統制を効かせるための機能が 組織のポリシー (Organization Policy) 機能です。
例として、組織のポリシーでは以下のようなことが実現できます。
- 特定のリージョン (ロケーション) 以外は使わせないようにする
- 特定のサービス (Compute Engine 等) 以外は使わせないようにする
- 組織外部との IAM 紐づけを禁止する
仕組み
制約 (constraints)
組織のポリシーの個々のルールは 制約 (constraints) と呼ばれます。「組織のポリシーの制約 (Organization policy constraints) 」という用語がドキュメントに現れることもあります。
例として Google Cloud Platform - リソース ロケーションの制限 (Resource Location Restriction)
という制約は Google Cloud リソースを作成できるロケーション (リージョンやマルチリージョン) を制限できます。
制約は リスト か ブール の2タイプに分けられます。
リスト型制約は「許可する値」または「拒否する値」をリストとして持つことができます。先ほど例に挙げた リソース ロケーションの制限 (Resource Location Restriction)
はリスト型であり、許可対象あるいは拒否対象のロケーションのリストを持たせることができます。
ブール型制約は True か False で指定する制約です。例として サービス アカウント キーの作成を無効化 (Disable service account key creation)
があります。
なお、制約には 表示名 と 名前 (または ID) があります。先ほど例に上げた リソース ロケーションの制限 (Resource Location Restriction)
は表示名であり正式名称 (ID) は constraints/gcp.resourceLocations
です。
制約の一覧は以下のドキュメントにあるので、ご参照ください。
- 参考 : 組織のポリシーの制約
継承
組織のポリシーには 継承 という特性があります。
組織のポリシーの制約は「組織 (ルート)」「フォルダ」「プロジェクト」のレベルでそれぞれ設定することができます。
階層の上位に設定した制約は、下位のリソースに継承させることができます。
制約を設定する際に 親のポリシーを継承する (inheritFromParent)
を有効化すると、上位リソースに設定された制約を引き継ぎます。
リスト型制約では、制約を上位から継承したうえで 親と結合する
を選択することもできます。これを選択した場合、リストに値を追加することができます。
- 参考 : 階層評価について

よく使われる制約
以下に、よく使われる代表的な制約をいくつかリストします。
なお、日本語版ドキュメントに示されている表示名と日本語版コンソールに示される表示名は異なる場合があります。設定時や設計ドキュメントでは正式名称 (ID) を用いる方が良いでしょう。
- 参考 : 組織のポリシーの制約
表示名 | ID | 意味 |
---|---|---|
Google Cloud Platform - リソース ロケーションの制限 | constraints/gcp. resourceLocations |
リスト型。リソースを作成可能なロケーション (リージョンやマルチリージョン) を制限 |
リソース サービスの使用を制限する | constraints/gcp. restrictServiceUsage |
リスト型。利用可能な Google Cloud サービスを制限 |
公開アクセスの防止を適用する | constraints/storage. publicAccess Prevention |
ブール型。 Cloud Storage でインターネットへの公開アクセスを防止する |
デフォルト ネットワークの作成をスキップ | constraints/compute. skipDefaultNetwork Creation |
ブール型。VPC のデフォルトネットワークは本番利用上好ましくない場合があるため、自動作成されないようにする |
ドメインで制限された共有 | constraints/iam. allowedPolicy MemberDomains |
リスト型。誤ってまたは悪意を持って自組織以外の Google アカウントが IAM 権限を持てないようにする |
サービス アカウント キーの作成を無効化 | constraints/iam. disableService AccountKeyCreation |
ブール型。サービスアカウントのキー作成ができなくなる |
デフォルトのサービス アカウントに対する IAM ロールの自動付与の無効化 | constraints/iam. automaticIamGrants ForDefaultService Accounts |
ブール型。デフォルトの App Engine / Compute Engine サービスアカウントに Editor 権限が付与されることを防ぐ |
Cloud SQL インスタンスに対するパブリック IP のアクセスを制限する | constraints/ sql.restrictPublicIp |
ブール型。Cloud SQL インスタンスにパブリック IP を付与できなくする |
組織のポリシーの管理
組織のポリシーを管理するには、管理者の Google アカウントが 組織レベル で 組織ポリシー管理者 (roles/orgpolicy.policyAdmin)
ロールを持っている必要があります。
なおポリシーを作成・変更できるのは事前定義ロールの中では 組織ポリシー管理者
ロール だけ です。オーナー (roles/owner)
や 組織の管理者 (roles/resourcemanager.organizationAdmin)
でさえも、ポリシーをリスト表示することはできますが、作成や変更はできません。
また 組織ポリシー管理者
ロールを付与できる最下位のリソースは組織レベルです。フォルダやプロジェクトレベルに付与することでフォルダ・プロジェクトの管理者に管理を委任することはできません。これは、管理を委任できてしまうと、下位リソースでポリシーを上書き・置換できてしまうため、統制が効かなくなってしまうためです。
カスタム制約
カスタム制約 を作成することで、独自の制約を作成することができます。
YAML ファイルで制約を定義し、条件の詳細は Common Expression Language (CEL)の文法で定義します。
当機能は2023年5月現在で プレビュー ですので、ご注意ください。
- 参考 : カスタム制約の作成と管理
関連記事
Google Cloud の「組織」機能については以下の記事で詳細に解説しています。
組織のポリシーを含む、Google Cloud の推奨セキュリティ設定を提供する G-gen のサービスである「セキュリティスイート for Google Cloud」についても、以下の記事をぜひご参照ください。
杉村 勇馬 (記事一覧)
執行役員 CTO / クラウドソリューション部 部長
元警察官という経歴を持つ現 IT エンジニア。クラウド管理・運用やネットワークに知見。AWS 12資格、Google Cloud認定資格11資格。X (旧 Twitter) では Google Cloud や AWS のアップデート情報をつぶやいています。
Follow @y_sugi_it