VPC Service Controls 境界を使用して Compute Engine を保護する

このチュートリアルでは、サービス境界を使用して Compute Engine を保護し、上り(内向き)違反のトラブルシューティングを行い、Compute Engine への承認済みアクセスを許可する方法について説明します。

VPC Service Controls を使用すると、Google マネージド サービスのリソースにサービス境界を定義して、それらのサービスとの通信やサービス間の通信を管理できます。機密性の高いリソースの周囲にゼロトラスト境界を確立し、承認済みの IP アドレス、ユーザー、デバイスへのアクセスを制限できます。この機能により、信頼できる境界の外部にある Google マネージド サービスへのアクセスを禁止して、信頼できない場所からのデータへのアクセスをブロックし、データ漏洩のリスクを軽減するセキュリティ ポリシーを定義できます。

このチュートリアルは、VPC Service Controls の基本コンセプトを学習する Google Cloud 組織管理者を対象としています。

サービス境界を作成する

My-Project-2 プロジェクトで Compute Engine API を保護するサービス境界を作成します。

  1. Google Cloud コンソールで、[VPC Service Controls] ページに移動します。

    [VPC Service Controls] に移動

    組織スコープの範囲内にいることを確認します。

  2. [ポリシーを管理する] をクリックします。

  3. Exercise フォルダをスコープにした新しいアクセス ポリシーを作成します。

  4. 次の詳細を使用して新しい境界を作成します。

    • タイトル: MyFirstPerimeter

    • 境界のタイプ: 標準

    • 適用モード: 適用

    • 保護するリソース: My-Project-2 プロジェクト

    • 制限付きサービス: Compute Engine API

境界を確認する

このセクションでは、プロジェクト内のリソースへのアクセス リクエストを行い、境界が目的のリソースを保護しているかどうかを確認します。

  1. My-Project-1 プロジェクトにアクセスし、[VM インスタンス] ページにアクセスして、Compute Engine にアクセスできるかどうか確認します。

    [VM インスタンス] に移動

    My-Project-1 は、前に作成した境界で保護されていないため、アクセスできるはずです。

  2. 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 プロジェクトの違反を特定してトラブルシューティングを行うために必要です。

監査ログの表示

  1. My-Project-2 プロジェクトの監査ログで、VPC Service Controls 違反の一意の ID を見つけます。

    1. Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。

      [ログ エクスプローラ] に移動

      検索バーを使用してこのページを検索する場合は、小見出しが [Logging] の結果を選択します。

    2. My-Project-2 プロジェクトを選択します。

    3. すべての監査ログを表示するには、query-editor フィールドに次のクエリを入力します。

      resource.type="audited_resource"
      protoPayload.metadata."@type"="type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata"
      
    4. [クエリを実行] をクリックします。

    このクエリは、すべての VPC Service Controls 監査ログを表示します。My-Project-2 プロジェクトで Compute Engine API に対するアクセス違反の詳細を確認するには、最後のエラーログを確認します。

    詳細については、ログの表示をご覧ください。

  2. [クエリ結果] ペインで、トラブルシューティングする拒否の横にある [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 クライアントから境界内のリソースへのアクセスを許可する上り(内向き)ルールを作成します。

次のセクションでは、アクセスレベルを作成してこの拒否のトラブルシューティングを行う方法について説明します。

アクセスレベルを作成する

  1. Google Cloud コンソールで、Exercise フォルダ スコープの [Access Context Manager] ページに移動します。

    Access Context Manager に移動

  2. 次の詳細を使用してアクセスレベルを作成します。

    • [条件の作成] で、[基本モード] を選択します。

    • [条件を満たしている場合に返される値:] で [True] を選択します。

    • [IP サブネットワーク] 属性を選択し、システムのパブリック IP アドレスを指定します。

    • [地域] 属性を選択し、地域を指定します。

    このアクセスレベルでは、IP アドレスと地域が一致する場合にのみアクセスが許可されます。

  3. 組織スコープの [VPC Service Controls] ページに移動します。

    [VPC Service Controls] に移動

  4. このチュートリアルの前半で作成したアクセス ポリシーを選択します。

  5. MyFirstPerimeter 境界に、Exercise フォルダ スコープで作成したアクセスレベル追加します。

アクセスをテストする

アクセスレベルを追加したら、My-Project-2 プロジェクトで Compute Engine にアクセスして VM インスタンスを作成できることを確認します。

  1. Google Cloud コンソールで、[VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. VM インスタンスを作成します

約 1 分後に、Compute Engine によって VM インスタンスが作成されます。このアクションにより、境界内で保護されている Compute Engine への完全アクセス権があることを確認できます。