
基盤エンジニアの佐藤(大)です。
今回は、Google CloudでIP制限をする方法を紹介します。
対象読者
Google CloudのVPC Service Controls(以降、一部VPC SCと略します)を利用して、特定のGoogle Cloudサービスへのアクセス制限を設定したい方
前提
- アクセス制限を設定したいGoogle Cloudが組織に紐づいていること
- 作業を実施する、組織に紐づくユーザーに後述する権限が付与されていること
VPC SCの設定には、組織が必要になります。
組織がない場合は、Cloud Identity Free等を利用して事前に組織を作成する必要があります。
組織の作り方については、弊社の以前公開した記事
「Google Cloud導入で最初に迷う「アカウント・組織・ドメイン」整理ガイド」
を参照ください。
公式ドキュメント
ご不明な点は公式ドキュメントを参照ください。
大まかな作業の流れ
Access Context Managerで、アクセス元IPのリストを作成します。これをアクセスレベルと呼びます。
↓
VPC Service Controlsで、以下4つの項目を入力してアクセス制御の仮設定をします。
- 対象のプロジェクト
- 対象のGoogle Cloudサービス
- 対象のユーザー
- Access Context Managerで作成したアクセスレベル
↓
仮設定の内容に問題がないか、ログを確認します。
↓
問題なければ、アクセス制御を本適用します。
作業に必要な権限
組織レベルで、以下の権限が必要になります。
- 組織ポリシー管理者(
roles/accesscontextmanager.policyAdmin) - Access Context Manager 編集者(
roles/accesscontextmanager.policyEditor) - 閲覧者(roles/viewer)
具体的な手順
1. Google Cloudコンソールから、設定をしたいGoogle Cloudプロジェクトが含まれる組織 / フォルダを選択します。

Access Context Managerの設定
2. 検索窓から「Access Context Manager」のサービス画面に移動します。
3. 「アクセスレベルを作成」を押下します。

4. 下記のような画面が表示されますので、順に必要な項目を入力します。

5. 「アクセスレベルのタイトル」に任意のタイトルを入力します。次に、「条件を作成」欄で『基本モード』か『詳細モード』を選択します。条件欄でアクセスさせたいIPアドレス等の条件を入力をし、「保存」を押下します。

6. 保存できていれば、以下のような画面が表示されます。

VPC Service Controlsの設定(ドライランモード)
7. 次に、検索窓から「VPC Service Controls」のサービス画面に移動します。

8. 「ポリシーを管理する」を選択します。

9. 下記のような画面が表示されますので、必要な項目を入力・選択します。

10. 「アクセスポリシーのタイトル」に任意のタイトルを入力し、ポリシーに含めるリソースを選択します。「プリンシパルの管理」で、プリンシパルの追加が完了したら「アクセスポリシーを作成」を押下します。

- 作成したアクセスポリシーを選択します。

12. 「ドライランモード」を選択します。 なおそれぞれのモードの違いは、以下の通りです。
ドライランモード:「仮適用モード」であり、実際に制限はされませんが、制限された場合を想定したアクセスログが出力されます。
自動適用モード:実際の本適用に相当します。

13. 「+ 新しい境界」を押下します。

14. ボタンを押すと以下のような画面が表示されます。ここからサービス境界の設定をします。

15. 左のメニューから「制限付きサービス」を選択。見出しの横にある「+ サービスの追加」を押下します。

16. 左のメニューから「制限付きサービス」を選択。見出しの横にある「+ サービスの追加」を押下します。

17. 表示された一覧の中から、保護するサービスにチェックをいれます。

18. 左のメニューから「VPCのアクセス可能なサービス」を選択。こちらでGoogle Cloud内でのサービス同士のアクセスをどうするかを選択します。
基本的には「すべてのサービス」を選んでおけば問題ないです。

19. 左のメニューから「アクセスレベル」を選択すると以下画面表示されます。見出しの横にある「+ アクセスレベルを追加」を押下するとアクセスレベルを設定できます。
※次の内向きポリシーでより詳細な設定ができるため、このステップでは設定をおこなわなくても問題ありません。

20. (このステップでアクセスレベルを設定する場合)
任意のアクセスレベルを追加します。

21. 左のメニューで「内向きポリシー」を選択。以下の画面が表示されるので、画面中央にある「内向きルールを追加」を押下します。

22. 誰に対して、どの操作を許可するかを設定します。

23. FromのIDは、ユーザー、サービスアカウントなどを指定します。

24. Fromのソースはアクセスレベルやプロジェクト等を指定します。

25. ユーザーに対してIP制限をしたい場合は、Access Context Managerで作成したアクセスレベルをここで設定します。

26. Toのリソースにはプロジェクトを指定します。

27. ToのオペレーションまたはIAMロールでは、許可する特定の操作や特定の権限を指定します。

28. オペレーションで、特定のGoogle Cloudサービスを指定します。

29. 左のメニューから「外向きポリシー」を選択。以下の画面が表示されるので、画面中央にある「外向きルールを追加」を押下します。
不要であれば、設定をおこなわなくても問題ありません。

30. 「内向きルール」同様に、「外向きルール」についても個別に設定します。

31. 「作成」を押下すると、境界が作成されます。
Access Context ManagerやVPC Service Controlsの設定が適切か確認
ドライランモードでは、実際には制限されませんが、制限された場合を想定したアクセスログが出力されます。
32. この設定で問題ないかを一定期間(1週間程度)様子を見るため、通常の作業を行います。
33. 一定期間経過後、Cloud Loggingのログエクスプローラを開きます。

34. クエリに以下のテキストを入力して、設定後からの期間を指定して、「クエリを実行」を押下します。
log_id("cloudaudit.googleapis.com/policy") AND severity="error" AND protoPayload.metadata.dryRun="true”

35. 本適用した際に、予期せずアクセス拒否されるログが表示されていないか確認します。

36. ログを確認して、必要に応じて、アクセスレベルや内向きルール等を見直します。
設定の本適用
37. 問題なければ、VPC SCのサービス境界を編集し、適用モードを「適用済み」に切り替えます。

38. アクセスレベルで許可されていないアクセスができないかを確認します。
アクセスができない場合は、以下のようなエラーが表示されます。

39. 以上で、設定は完了になります。
まとめ
今回はGoogle CloudでIP制限をする方法を紹介しました。
そもそもIP制限をおこなうのに組織が必要なことが盲点になりがちですし、Access Context ManagerとVPC SCを跨いだ設定が必要ですので、その辺りを上手く整理できたかなと思っています。
本記事が皆様の役に立っていれば幸いです。