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


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

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

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

目標

  • VPC Service Controls の基本を理解する。
  • サービス境界を作成する。
  • VPC Service Controls を使用してプロジェクトを保護する。
  • VPC Service Controls の上り(内向き)違反のトラブルシューティングを行う。

料金

このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。 新しい 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. すべての監査ログを表示するには、クエリエディタ フィールドに次のクエリを入力します。

      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. Exercise フォルダ スコープで作成したアクセスレベルを MyFirstPerimeter 境界に追加します。

アクセスをテストする

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

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

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

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

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

クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。

プロジェクトを削除する

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

リソースを個別に削除する

VM インスタンスを削除する

  1. In the Google Cloud console, go to the VM instances page.

    Go to VM instances

  2. Select the checkbox for the instance that you want to delete.
  3. To delete the instance, click More actions, click Delete, and then follow the instructions.

VPC Service Controls リソースを削除する

  1. サービス境界を削除します

  2. Exercise フォルダ スコープで作成したアクセスレベルを削除します。

次のステップ