URL リストを使用してポリシーを作成する

このガイドでは、URL リストを使用して、ユーザーがアクセスできる URL を定義する方法について説明します。

準備

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

  • 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 コンソールで、[SWP ポリシー] ページに移動します。

    SWP ポリシーに移動

  2. [ポリシーを作成] をクリックします。

  3. [名前] フィールドに、ポリシーの名前(myswppolicy など)を入力します。

  4. [説明] フィールドに、ポリシーの説明(My new swp policy など)を入力します。

  5. [リージョン] で、ポリシーを作成するリージョン(us-central1 など)を選択します。

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

Cloud Shell

  1. 任意のテキスト エディタを使用して、policy.yaml ファイルを作成します。

  2. 作成した policy.yaml ファイルに次の内容を追加します。

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

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

    • PROJECT_NAME: プロジェクトの名前

    • REGION: ポリシーが作成されるリージョン(us-central1 など)

    • POLICY_NAME: ポリシーの名前

    • POLICY_DESCRIPTION: ポリシーの説明

  3. gcloud network-security gateway-security-policies import コマンドを使用して、セキュリティ ポリシーをインポートします。

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

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

コンソール

  1. Google Cloud コンソールで、[ウェブ プロキシ] ページに移動します。

    [ウェブ プロキシ] に移動

  2. [セキュア ウェブプロキシを作成] をクリックします。

  3. [名前] フィールドに、ウェブ プロキシの名前(例: myswp)を入力します。

  4. [説明] フィールドに、ウェブプロキシの説明(My new swp など)を入力します。

  5. [ルーティング モード] で、[明示的] オプションを選択します。

  6. [リージョン] で、ウェブプロキシを作成するリージョン(us-central1 など)を選択します。

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

  8. [サブネットワーク] で、初期設定の手順の一部として以前に作成した VPC サブネットを選択します。

  9. 省略可: [ウェブプロキシの IP アドレス] フィールドに、Secure Web Proxy の IP アドレスを入力します。

    前の手順で作成したサブネットワークに存在する Secure Web Proxy IP アドレスの範囲から IP アドレスを入力できます。IP アドレスを入力しない場合、Secure Web Proxy インスタンスは選択したサブネットワークから IP アドレスを自動的に選択します。

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

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

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

Cloud Shell

  1. 任意のテキスト エディタを使用して、gateway.yaml ファイルを作成します。

  2. gateway.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/SUBNETWORK
    addresses: [GATEWAY_IP_ADDRESS]
    scope: samplescope
    

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

    • GATEWAY_NAME: この Secure Web Proxy インスタンスの名前

    • GATEWAY_PORT_NUMBERS: このゲートウェイのポート番号のリスト(例: [80,443]

    • CERTIFICATE_URLS: SSL 証明書の URL のリスト

    • SUBNETWORK: 初期設定の手順の一部として以前に作成した VPC サブネット

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

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

  3. gcloud network-services gateways import コマンドを使用して、Secure Web Proxy インスタンスを作成します。

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

接続をテストする

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

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

すべてが正しく機能している場合、Secure Web Proxy インスタンスは 403 Forbidden ステータス コードを返します。このエラーは、次のことを確認します。

  • Secure Web Proxy インスタンスが正常にデプロイされ、トラフィックをアクティブに受信しています。

  • Secure Web Proxy ポリシーは、次のセクションで特定の allow ルールを定義するまで、すべてのトラフィックを拒否するというデフォルトのセキュリティ ポスチャーを正しく適用しています。

URL リストを作成する

URL リストを作成してルールを追加するには、次のセクションのタスクを完了します。

URL リストを作成して構成する

コンソール

  1. Google Cloud コンソールで、[URL リスト] ページに移動します。

    URL リストに移動

  2. [URL リストを作成] をクリックします。

  3. 作成する URL リストの名前を入力します(例: myurllist)。

  4. URL リストの説明を入力します(例: My new URL list)。

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

  6. [リストをアップロード] をクリックして、照合するホスト、URL、パターンのリストをアップロードします。詳細については、UrlList 構文リファレンスをご覧ください。

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

Cloud Shell

  1. 任意のテキスト エディタを使用して、任意のファイル名で URL_LIST_FILE.yaml. ReplaceURL_LIST_FILE` というファイルを作成します。

      name: projects/PROJECT_ID/locations/REGION/urlLists/URL_LIST_NAME
      values: URL_LIST
    

    以下を置き換えます。

    • PROJECT_ID: プロジェクトの番号
    • REGION: この URL リストが適用されるリージョン
    • URL_LIST_NAME: 作成する URL リストの名前
    • URL_LIST: 照合するホスト、URL、パターンのリスト

    詳細については、UrlList 構文リファレンスをご覧ください。

    URL リストのルールファイルの例を次に示します。

    name: projects/PROJECT_ID/locations/REGION/urlLists/example-org-allowed-list
    values:
      - www.example.com
      - about.example.com
      - "*.google.com"
      - "github.com/example-org/*"
    

    アスタリスク(*)文字は、YAML で特別な意味を持ちます。そのため、* の文字を含む URL は引用符で囲む必要があります。

  2. Secure Web Proxy ルールで参照できるように、URL リストを追加します。

    gcloud network-security url-lists import URL_LIST_NAME \
        --location=REGION \
        --project=PROJECT_ID \
        --source=URL_LIST_FILE.yaml
    

ルールの追加

コンソール

  1. Google Cloud コンソールで、[SWP ポリシー] ページに移動します。

    SWP ポリシーに移動

  2. プロジェクト セレクタのメニューで、組織 ID またはポリシーを含むフォルダを選択します。

  3. ポリシーの名前をクリックします。

  4. [ルールを追加] をクリックします。

  5. ルール フィールドに、次の内容を入力します。

    1. 名前
    2. 説明
    3. ステータス
    4. 優先度: ルールの数値評価順序。ルールは、最も高い優先度から順番に評価されます(最も高い優先度は 0)。
    5. [アクション] セクションで、ルールに一致する接続を許可する(許可)か、拒否する(拒否)かを指定します。
    6. [Session Match] セクションで、以前に作成した URL リストの名前を指定します。次に例を示します。

        sessionMatcher: "inUrlList(host(), 'projects/PROJECT_ID/locations/REGION/urlLists/URL_LIST_NAME')"
      
    7. TLS インスペクションを有効にするには、[TLS インスペクションを有効にする] を選択します。

    8. [アプリケーションの一致] セクションで、リクエストの一致条件を指定します。

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

  6. [ルールを追加] をクリックして別のルールを追加します。

  7. [Create] をクリックしてポリシーを作成します。

Cloud Shell

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

    name: projects/PROJECT_ID/locations/REGION/gatewaySecurityPolicies/POLICY_NAME/rules/RULE_NAME
    basicProfile: ALLOW
    enabled: true
    priority: PRIORITY_VALUE
    description: RULE_DESCRIPTION
    sessionMatcher: SESSION_CEL_EXPRESSION
    applicationMatcher: APPLICATION_CEL_EXPRESSION
    

    以下を置き換えます。

    • PROJECT_ID: プロジェクトの番号
    • REGION: このルールが適用されるリージョン
    • POLICY_NAME: Secure Web Proxy インスタンスで使用される既存の GatewaySecurityPolicy の名前
    • RULE_NAME: 作成する GatewaySecurityPolicyRule の名前
    • PRIORITY_VALUE: このルールの優先度値です。数字が小さいほど優先度が高くなります
    • RULE_DESCRIPTION: 作成するポリシーの説明
    • SESSION_CEL_EXPRESSION: セッションの Common Expression Language(CEL)
    • APPLICATION_CEL_EXPRESSION: アプリケーションの CEL 式

    ルールファイルの例を次に示します。

    name: projects/PROJECT_ID/locations/REGION/urlLists/allow-repos
    basicProfile: ALLOW
    enabled: true
    priority: 100
    description: Allow access to our list of known code repos.
    sessionMatcher: "inUrlList(host(), 'projects/PROJECT_ID/locations/REGION/urlLists/URL_LIST_NAME')"
    

  2. 先ほど作成した URL リストを使用して、Secure Web Proxy のルールを追加します。

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

接続をテストする

接続をテストするには、次の curl コマンドを使用します。

curl -x https://SWP_IP_ADDRESS:SWP_PORT_NUMBER HTTP_TEST_ADDRESS
--proxy-insecure

以下を置き換えます。

  • SWP_IP_ADDRESS: ウェブプロキシの IP アドレス

  • SWP_PORT_NUMBER: ウェブプロキシのポート番号(例: 443

  • HTTP_TEST_ADDRESS: URL_LIST のホストまたは URL エントリに一致するテスト対象のアドレス(例: https://www.example.com

リクエストは成功レスポンスを返します。

次のステップ