このチュートリアルでは、サービス境界を使用して Compute Engine を保護し、上り(内向き)違反のトラブルシューティングを行い、Compute Engine への承認済みアクセスを許可する方法について説明します。
VPC Service Controls を使用すると、Google マネージド サービスのリソースにサービス境界を定義して、それらのサービスとの通信やサービス間の通信を管理できます。機密性の高いリソースの周囲にゼロトラスト境界を確立し、承認済みの IP アドレス、ユーザー、デバイスへのアクセスを制限できます。この機能により、信頼できる境界の外部にある Google マネージド サービスへのアクセスを禁止して、信頼できない場所からのデータへのアクセスをブロックし、データ漏洩のリスクを軽減するセキュリティ ポリシーを定義できます。
このチュートリアルは、VPC Service Controls の基本コンセプトを学習する Google Cloud 組織管理者を対象としています。
サービス境界を作成する
My-Project-2
プロジェクトで Compute Engine API を保護するサービス境界を作成します。
Google Cloud コンソールで、[VPC Service Controls] ページに移動します。
組織スコープの範囲内にいることを確認します。
[ポリシーを管理する] をクリックします。
Exercise
フォルダをスコープにした新しいアクセス ポリシーを作成します。次の詳細を使用して新しい境界を作成します。
タイトル:
MyFirstPerimeter
境界のタイプ: 標準
適用モード: 適用
保護するリソース:
My-Project-2
プロジェクト制限付きサービス: Compute Engine API
境界を確認する
このセクションでは、プロジェクト内のリソースへのアクセス リクエストを行い、境界が目的のリソースを保護しているかどうかを確認します。
My-Project-1
プロジェクトにアクセスし、[VM インスタンス] ページにアクセスして、Compute Engine にアクセスできるかどうか確認します。My-Project-1
は、前に作成した境界で保護されていないため、アクセスできるはずです。My-Project-2
プロジェクトにアクセスし、[VM インスタンス] ページにアクセスして、Compute Engine にアクセスできるかどうか確認します。MyFirstPerimeter
境界がMy-Project-2
と Compute Engine API を保護しているため、VPC Service Controls が Compute Engine へのアクセス リクエストを拒否していることを確認できます。
違反のトラブルシューティング
VPC Service Controls 監査ログには、保護されたリソースへのリクエストの詳細と、VPC Service Controls がリクエストを拒否された理由が含まれます。この情報は、My-Project-2
プロジェクトの違反を特定してトラブルシューティングを行うために必要です。
監査ログの表示
My-Project-2
プロジェクトの監査ログで、VPC Service Controls 違反の一意の ID を見つけます。-
Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Logging] の結果を選択します。
My-Project-2
プロジェクトを選択します。すべての監査ログを表示するには、query-editor フィールドに次のクエリを入力します。
resource.type="audited_resource" protoPayload.metadata."@type"="type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata"
[クエリを実行] をクリックします。
このクエリは、すべての VPC Service Controls 監査ログを表示します。
My-Project-2
プロジェクトで Compute Engine API に対するアクセス違反の詳細を確認するには、最後のエラーログを確認します。詳細については、ログの表示をご覧ください。
-
[クエリ結果] ペインで、トラブルシューティングする拒否の横にある [VPC Service Controls] をクリックし、[拒否のトラブルシューティング] をクリックします。
[VPC Service Controls 違反アナライザー] ページが開きます。このページには、違反の理由や、違反が上り(内向き)か下り(外向き)かなどの情報が表示されます。
このチュートリアルでは、次の情報を確認します。
"principalEmail": "USER@DOMAIN" "callerIp": "PUBLIC_IP_ADDRESS" "serviceName": "compute.googleapis.com" "servicePerimeterName": "accessPolicies/POLICY_NUMBER/servicePerimeters/MyFirstPerimeter "ingressViolations": [ { "targetResource": "projects/PROJECT_NUMBER", "servicePerimeter": "accessPolicies/POLICY_NUMBER/servicePerimeters/MyFirstPerimeter" } ], "violationReason": "NO_MATCHING_ACCESS_LEVEL", "resourceNames": "PROJECT_ID"
違反の理由は
"NO_MATCHING_ACCESS_LEVEL"
です。"NO_MATCHING_ACCESS_LEVEL"
違反は、IP アドレス、デバイスタイプ、またはユーザー ID が境界に関連付けられている上り(内向き)ルールまたはアクセスレベルと一致しない場合に発生します。呼び出し元の IP アドレスがないか、ログに内部 IP アドレスとして表示されている場合、この違反は、VPC Service Controls でサポートされていない Google Cloud サービスが原因で発生している可能性があります。
My-Project-2
プロジェクトでこの拒否を修正するには、次の 2 つの方法があります。
システム IP アドレス経由で境界内のプロジェクトへのアクセスを許可するアクセスレベルを作成します。
境界外の API クライアントから境界内のリソースへのアクセスを許可する上り(内向き)ルールを作成します。
次のセクションでは、アクセスレベルを作成してこの拒否のトラブルシューティングを行う方法について説明します。
アクセスレベルを作成する
Google Cloud コンソールで、
Exercise
フォルダ スコープの [Access Context Manager] ページに移動します。次の詳細を使用してアクセスレベルを作成します。
[条件の作成] で、[基本モード] を選択します。
[条件を満たしている場合に返される値:] で [True] を選択します。
[IP サブネットワーク] 属性を選択し、システムのパブリック IP アドレスを指定します。
[地域] 属性を選択し、地域を指定します。
このアクセスレベルでは、IP アドレスと地域が一致する場合にのみアクセスが許可されます。
組織スコープの [VPC Service Controls] ページに移動します。
このチュートリアルの前半で作成したアクセス ポリシーを選択します。
MyFirstPerimeter
境界に、Exercise
フォルダ スコープで作成したアクセスレベル追加します。
アクセスをテストする
アクセスレベルを追加したら、My-Project-2
プロジェクトで Compute Engine にアクセスして VM インスタンスを作成できることを確認します。
Google Cloud コンソールで、[VM インスタンス] ページに移動します。
約 1 分後に、Compute Engine によって VM インスタンスが作成されます。このアクションにより、境界内で保護されている Compute Engine への完全アクセス権があることを確認できます。