サービス アカウントを使用してポリシーを作成する

サービス アカウントは、ユーザーではなく、アプリケーションや Compute Engine インスタンスなどのコンピューティング ワークロードで通常使用される特別なアカウントです。サービス アカウントは、アカウント固有のメールアドレスで識別されます。

アプリケーションはサービス アカウントを使用して、承認された API 呼び出しを行います。これは、サービス アカウント自体として承認されるか、ドメイン全体の委任により Google Workspace または Cloud Identity ユーザーとして承認されます。 アプリケーションがサービス アカウントとして認証されると、アプリケーションはサービス アカウントにアクセス権が付与されているすべてのリソースにアクセスできます。

サービス アカウントを使用してトラフィック ソースを特定し、必要に応じて Secure Web Proxy のポリシーを構成できます。

このガイドでは、次の方法について説明します。

  • 空のポリシーを使用して Secure Web Proxy インスタンスを作成します。
  • サービス アカウントを作成してリソースに接続します。
  • サービス アカウントを使用して、Secure Web Proxy ポリシーを作成します。
  • Secure Web Proxy インスタンスを作成します。
  • VM からの接続をテストします。

Cloud SQL で

Secure Web Proxy は、VM インスタンスと GKE ノードに対するトラフィックのサービス アカウント ベースのフィルタリングをサポートしています(GKE コンテナはサポートしていません)。サポートされている各リソースは、プロジェクト間(共有 VPC)、Virtual Private Cloud(VPC)の境界(Network Connectivity Center、VPC ネットワーク ピアリング)、Private Service Connect のホップを横断して可視化することもできます。サーバーレス VPC アクセスの場合、サービス アカウントはダイレクト ピアリングや VPC 接続アプリケーションでは使用できません。これらのアプリケーションでは、サーバーレス環境からのみ使用されるため、VPC コネクタの送信元 IP アドレスを使用できます。

始める前に

  • 初期設定手順を完了します。

  • 組織管理者にサービス アカウントへのアクセスの許可を依頼します。

  • Google Cloud CLI バージョン 406.0.0 以降がインストールされていることを確認します。

    gcloud version | head -n1
    

    以前の gcloud CLI バージョンがインストールされている場合は、バージョンを更新します。

    gcloud components update --version=406.0.0
    

空のポリシーを使用して Secure Web Proxy インスタンスを作成する

Secure Web Proxy インスタンスを作成するには、まず空のセキュリティ ポリシーを作成してから、ウェブプロキシを作成します。

空のセキュリティ ポリシーを作成する

コンソール

  1. Google Cloud コンソールで [ネットワーク セキュリティ] ページに移動します。

    [ネットワーク セキュリティ] に移動

  2. [Secure Web Proxy] をクリックします。

  3. [ポリシー] タブをクリックします。

  4. [Create a policy] をクリックします。

  5. 作成するポリシーの名前を入力します(例: myswppolicy)。

  6. ポリシーの説明(My new swp policy など)を入力します。

  7. [リージョン] リストで、ポリシーを作成するリージョンを選択します。

  8. [作成] をクリックします。

Cloud Shell

  1. 任意のテキスト エディタを使用して、POLICY_FILE.yaml ファイルを作成します。POLICY_FILE は、ポリシー ファイルのファイル名に置き換えます。

  2. 作成した YAML ファイルに以下を追加します。

    name: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME
    description: POLICY_DESCRIPTION
    

    以下を置き換えます。

    • PROJECT_NAME: プロジェクトの名前
    • REGION: このポリシーが適用されるリージョン
    • POLICY_NAME: 作成するポリシーの名前
    • POLICY_DESCRIPTION: 作成するポリシーの説明
  3. セキュリティ ポリシーをインポートします。

    gcloud network-security gateway-security-policies import POLICY_NAME \
        --source=POLICY_FILE.yaml \
        --location=REGION
    

ウェブプロキシを作成する

コンソール

  1. Google Cloud コンソールで [ネットワーク セキュリティ] ページに移動します。

    [ネットワーク セキュリティ] に移動

  2. [Secure Web Proxy] をクリックします。

  3. [ウェブプロキシを設定] をクリックします。

  4. 作成するウェブプロキシの名前を入力します(例: myswp)。

  5. My new swp など、ウェブプロキシの説明を入力します。

  6. [リージョン] リストで、ウェブプロキシを作成するリージョンを選択します。

  7. [ネットワーク] リストで、ウェブプロキシを作成するネットワークを選択します。

  8. [サブネットワーク] リストで、ウェブ プロキシを作成するサブネットワークを選択します。

  9. ウェブプロキシの IP アドレスを入力します。

  10. [証明書] リストで、ウェブプロキシの作成に使用する証明書を選択します。

  11. [ポリシー] リストで、ウェブプロキシに関連付けるために作成したポリシーを選択します。

  12. [作成] をクリックします。

Cloud Shell

  1. 任意のテキスト エディタを使用して、GATEWAY_FILE.yaml ファイルを作成します。GATEWAY_FILE は、ウェブ プロキシ ファイルのファイル名に置き換えます。

  2. 作成した YAML ファイルに以下を追加します。

    name: projects/PROJECT_NAME/locations/REGION/gateways/GATEWAY_NAME
    type: SECURE_WEB_GATEWAY
    ports: [GATEWAY_PORT_NUMBERS]
    certificateUrls: [CERTIFICATE_URLS]
    gatewaySecurityPolicy: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME
    network: projects/PROJECT_NAME/global/networks/NETWORK_NAME
    subnetwork: projects/PROJECT_NAME/regions/REGION/subnetworks/SUBNET_NAME
    addresses: [GATEWAY_IP_ADDRESS]
    scope: samplescope
    

    以下を置き換えます。

    • GATEWAY_NAME: このインスタンスの名前。
    • GATEWAY_PORT_NUMBERS: このゲートウェイのポート番号のリスト(例: [80,443]
    • CERTIFICATE_URLS: SSL 証明書の URL のリスト
    • SUBNET_NAME: GATEWAY_IP_ADDRESS を含むサブネットの名前

    • GATEWAY_IP_ADDRESS: 初期設定手順で以前に作成したプロキシ サブネット内の Secure Web Proxy インスタンスの IP アドレスのオプションのリスト

      IP アドレスを一覧表示しない場合、フィールドを省略して、ウェブプロキシによって IP アドレスが選択されるようにします。

  3. Secure Web Proxy インスタンスを作成します。

    gcloud network-services gateways import GATEWAY_NAME \
        --source=GATEWAY_FILE.yaml \
        --location=REGION
    

接続をテストする

接続をテストするには、Virtual Private Cloud(VPC)ネットワーク内の任意の VM から curl コマンドを使用します。

  curl -x https://GATEWAY_IP_ADDRESS:PORT_NUMBER https://www.example.com --proxy-insecure

403 Forbidden エラーが想定されます。

サービス アカウントを作成してリソースに接続する

サービス アカウントを作成して接続するには、次の手順を行います。

  1. サービス アカウントを作成する

  2. サービス アカウントをリソースに関連付ける

Secure Web Proxy ルールを作成する

Secure Web Proxy ルールを作成するには、次の手順を行います。

  1. 任意のテキスト エディタを使用して RULE_FILE.yaml ファイルを作成します。RULE_FILE は、選択したファイル名に置き換えます。

  2. 選択したサービス アカウントから URL へのアクセスを許可するには、YAML ファイルに次の行を追加します。

    name: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME/rules/RULE_NAME
    description: RULE_DESCRIPTION
    enabled: true
    priority: RULE_PRIORITY
    sessionMatcher: CEL_EXPRESSION
    basicProfile: ALLOW
    

    次のように置き換えます。

    • RULE_NAME: このルールの名前
    • RULE_DESCRIPTION: 作成するルールの説明
    • RULE_PRIORITY: このルールの優先度。数字が小さいほど優先度が高くなります。
    • CEL_EXPRESSION: Common Expression Language(CEL)式

      詳細については、CEL マッチャーの言語リファレンスをご覧ください。

      たとえば、目的のサービス アカウントが接続されているリソースから example.com へのアクセスを許可するには、sessionMatcher 用に作成した YAML ファイルに以下を追加します。

      sessionMatcher: "source.matchServiceAccount('SERVICE_ACCOUNT') && host() == 'example.com'"
      

      SERVICE_ACCOUNT は、許可するサービス アカウントに置き換えます。これは、サービス アカウントのメールアドレスにする必要があります。

  3. 作成したルールをインポートします。

    gcloud network-security gateway-security-policies rules import RULE_NAME \
       --source=RULE_FILE.yaml \
       --location=REGION \
       --gateway-security-policy=POLICY_NAME
    

接続をテストする

接続をテストするには、SERVICE_ACCOUNT が接続されたリソースから curl コマンドを使用します。

curl -x https://IPv4_ADDRESS:443 http://example.com 
--proxy-insecure

IPv4_ADDRESS は、Secure Web Proxy インスタンスの IPv4 アドレスに置き換えます。

次のステップ