URL フィルタリング セキュリティ プロファイルを作成して管理する

URL フィルタリング セキュリティ プロファイルは、URL フィルタを使用してファイアウォール エンドポイントのセキュリティ ポリシーを定義するレイヤ 7 ポリシー構造です。これらのプロファイルは、ネットワーク トラフィック内のドメイン名を評価し、特定のマッチャー文字列と優先度に基づいて許可または拒否のアクションを適用します。

このページでは、URL フィルタリング セキュリティ プロファイルを作成して管理する方法について説明します。

始める前に

  • プロジェクトで Network Security API有効にする必要があります。
  • このガイドの gcloud コマンドラインのサンプルを実行する場合は、Google Cloud CLI をインストールします。

ロール

セキュリティ プロファイルを作成、表示、更新、削除するために必要な権限を取得するには、組織に必要な Identity and Access Management(IAM)ロールの付与を管理者に依頼してください。ロールの付与の詳細については、アクセス権の管理をご覧ください。

URL フィルタリング セキュリティ プロファイルを作成する

url-filtering セキュリティ プロファイルを作成するには、名前を文字列または一意の URL 識別子として指定します。

コンソール

  1. Google Cloud コンソールで、[セキュリティ プロファイル] ページに移動します。

    [セキュリティ プロファイル] に移動

  2. プロジェクト セレクタのメニューで、セキュリティ プロファイルを作成する組織またはプロジェクトを選択します。

  3. [セキュリティ プロファイル] タブを選択します。

  4. [プロファイルを作成] をクリックします。

  5. 必要に応じて、[名前] フィールドに名前を入力します。

  6. 省略可: [説明] フィールドに説明を入力します。

  7. Cloud Next Generation Firewall Enterprise セキュリティ プロファイルを作成するには、[目的] セクションで [Cloud NGFW Enterprise] を選択します。

  8. URL フィルタリング セキュリティ プロファイルを作成するには、[タイプ] セクションで [URL フィルタリング] を選択します。

  9. [URL フィルタ] セクションで、[URL フィルタを作成] ボタンをクリックします。

  10. [URL フィルタを作成] ペインで、次の詳細を指定します。

    • 優先度: URL フィルタの優先度を指定します。
    • アクション: Cloud NGFW がトラフィックに対して実行するアクションを指定します。
      • 許可: URL に一致する接続を許可します。
      • 拒否: URL に一致する接続を拒否します。
    • URL リスト: URL またはマッチャー文字列のリストを指定します。各 URL またはマッチャー文字列エントリは、スペースや区切り文字を入れずに単独の行で記述する必要があります。各エントリはドメインのみで構成できます。マッチャー文字列の詳細については、URL のマッチャー文字列をご覧ください。
  11. [作成] をクリックします。

gcloud

  1. 次の内容で YAML ファイルを作成します。

    name: NAME
    type: url-filtering
    urlFilteringProfile:
      urlFilters:
        - filteringAction: ACTION
          priority: PRIORITY
          urls: [URL,URL,...]
    

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

    • NAME: URL フィルタリング セキュリティ プロファイルの名前。名前は文字列または一意の URL 識別子として指定できます。

    • ACTION: 次のいずれかのアクションを指定します。

      • ALLOW: URL と一致する接続を許可します。
      • DENY: URL と一致する接続を拒否します。
    • PRIORITY: 0 ~ 2147483647 の範囲の URL フィルタの優先度。

    • URLs: マッチャー文字列のカンマ区切りのリスト。たとえば www.example.comwww.examplepetstore.com として指定します。

  2. URL フィルタリング セキュリティ プロファイルを作成するには、gcloud network-security security-profiles import コマンドを実行します。

    gcloud network-security security-profiles import NAME \
      --source FILE_NAME \
      [ --organization ORGANIZATION_ID | --project PROJECT_ID ] \
      --location global
    

    または、gcloud network-security security-profiles url-filtering create コマンドを使用して、YAML ファイルなしで URL フィルタリング セキュリティ プロファイルを作成することもできます。

    gcloud network-security security-profiles url-filtering create NAME \
        [ --organization ORGANIZATION_ID | --project PROJECT_ID ] \
        --description DESCRIPTION \
        --location global
    

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

    • NAME: URL フィルタリング セキュリティ プロファイルの名前。

      名前に一意の URL 識別子形式を使用しない場合は、組織またはプロジェクトの名前とロケーションを指定する必要があります。

    • FILE_NAME: YAML ファイルの名前。例: url-filtering-sp.yaml

    • ORGANIZATION_ID: 組織 ID。このフラグを使用して、組織レベルのセキュリティ プロファイルを作成します。

    • PROJECT_ID: プロジェクト ID。このフラグを使用して、プロジェクト レベルのセキュリティ プロファイルを作成します。

    • DESCRIPTION: URL フィルタリング セキュリティ プロファイルの説明(省略可)。

    たとえば、次のコード スニペットは、www.example.comwww.examplepetstore.com へのリクエストは許可するが、他のすべてのドメインへのリクエストは拒否する URL フィルタリング セキュリティ プロファイルの例を示しています。

    urlFilteringProfile:
      urlFilters:
        - filteringAction: ALLOW
          priority: 1000
          urls: ['www.example.com', 'www.examplepetstore.com']
        # the following URL filter is implicit and will be processed last
        - filteringAction: DENY
          priority: 2147483647
          urls: ['*']
    

暗黙的な拒否 URL フィルタ

URL フィルタリング セキュリティ プロファイルには、優先度が最も低い(2147483647)デフォルトの URL フィルタが常に含まれています。このフィルタは、優先度の高い URL フィルタに一致しないすべての接続を拒否します。次のコード スニペットは、暗黙的な拒否 URL フィルタの例を示しています。

  urlFilteringProfile:
    urlFilters:
      # user-specified URL filters
      - filteringAction: DENY
        priority: 1000
        urls: ['www.example.com','www.examplepetstore.com']
      - filteringAction: ALLOW
        priority: 2000
        urls: ['www.example.org','www.example.net']
      # implicit deny URL filter that will be processed last
      - filteringAction: DENY
        priority: 2147483647
        urls: ['*']
  

URL フィルタリング セキュリティ プロファイルを表示またはエクスポートすると、暗黙的な拒否 URL フィルタが表示されます。暗黙的なフィルタを変更または削除することはできません。たとえば、プロファイルのデフォルト アクションを DENY(暗黙的なフィルタによって適用)から ALLOW に変更する場合は、暗黙的なフィルタの前に Cloud NGFW が処理する明示的なフィルタを追加する必要があります。

  urlFilteringProfile:
    urlFilters:
      # user-specified filters
      - filteringAction: DENY
        priority: 1000
        urls: ['www.example.com','www.examplepetstore.com']
      # explicit allow URL filter that you can add
      - filteringAction: ALLOW
        priority: 2000
        urls: ['*']
      # implicit deny URL filter that will be processed last
      - filteringAction: DENY
        priority: 2147483647
        urls: ['*']
  

URL のマッチャー文字列

マッチャー文字列は、URL フィルタの urls フィールドで指定する値です。URL フィルタ内には 1 つ以上のマッチャー文字列を指定できます。

ワイルドカード

URL リストに指定するマッチャー文字列 1 つにつき、ワイルドカード文字(*)を 1 つ、限定的に使用できます。

  • アスタリスク(*)は、マッチャー文字列ごとに 1 つのみ使用可能です。アスタリスクは先頭の文字として使用するか、アスタリスクだけを指定する必要があります。
  • アスタリスク(*)は、次のように解釈できます。

    • アスタリスク(*)の後にピリオド(.)を指定すると、ドメインのすべてのサブドメインを表します。

      たとえば、マッチャー文字列 *.example.com は、a.example.com および a.b.c.example.com と一致しますが、example.com とは一致しません。

      urlFilteringProfile:
        urlFilters:
          # user-specified filters
          - filteringAction: ALLOW
            priority: 1000
            urls: ['*.example.com']
          # implicit deny URL filter that will be processed last
          - filteringAction: DENY
            priority: 2147483647
            urls: ['*']
      

      上記の例では、Cloud NGFW は example.com のサブドメインへのトラフィックを許可しますが、残りのアウトバウンド トラフィックは拒否します。

    • アスタリスク(*)の後にラベルを指定すると、ドメインとすべてのサブドメインを表します。

      たとえば、マッチャー文字列 *example.com は、a.example.coma.b.c.example.comexample.com と一致します。

      urlFilteringProfile:
        urlFilters:
          # user-specified filters
          - filteringAction: ALLOW
            priority: 1000
            urls: ['*example.com']
          # implicit deny URL filter that will be processed last
          - filteringAction: DENY
            priority: 2147483647
            urls: ['*']
      

      上記の例では、Cloud NGFW は example.comexample.com のサブドメインへのトラフィックを許可しますが、残りのアウトバウンド トラフィックは拒否します。

    • ドメイン拡張子(.com など)の前にアスタリスク(*)を指定すると、そのドメイン拡張子を使用するすべてのドメイン(およびサブドメイン)を表します。

      たとえば、マッチャー文字列 *.com は、example.comexamplepetstore.com、およびそれらのすべてのサブドメインと一致します。

      次のコード スニペットは、.com で終わるすべてのドメイン(およびサブドメイン)を許可し、残りのトラフィックを拒否する方法を示しています。

      urlFilteringProfile:
        urlFilters:
          # Allow all domains (and their subdomains) that end in '.com'
          - filteringAction: ALLOW
            priority: 2000
            urls: ['*.com']
          # implicit deny URL filter that will be processed last
          - filteringAction: DENY
            priority: 2147483647
            urls: ['*']
      

      次のコード スニペットは、example.comexamplepetstore.com のすべてのサブドメインを拒否し、これらのドメインと .com で終わる他のすべてのドメイン(およびそのサブドメイン)を許可する方法を示しています。

      urlFilteringProfile:
        urlFilters:
          # Deny all subdomains of example.com
          - filteringAction: DENY
            priority: 1000
            urls: ['*.example.com']
          # Deny all subdomains of examplepetstore.com
          - filteringAction: DENY
            priority: 1500
            urls: ['*.examplepetstore.com']
          # Allow all domains (and their subdomains) that end in '.com'
          - filteringAction: ALLOW
            priority: 2000
            urls: ['*.com']
          # implicit deny URL filter that will be processed last
          - filteringAction: DENY
            priority: 2147483647
            urls: ['*']
      
    • Cloud NGFW では、アスタリスク(*)は正規表現のワイルドカードとして解釈されません。

      たとえば、*example.testnewexample.test または a.newexample.test と一致しません。一致するのは、example.testexample.test のサブドメインのみです。

    • アスタリスク 1 個(*)のみで他の文字を指定しない場合は、すべてのリクエストに一致することを表します。

      たとえば、優先度が最も低い明示的な許可 URL フィルタのマッチャー文字列にはアスタリスク(*)のみが含まれており、DENY のデフォルト アクションをオーバーライドする ALLOW アクションがあります。これは、暗黙的な拒否 URL フィルタが、優先度の高い URL フィルタに一致しないリクエストにデフォルトの DENY を適用するためです。

      最も優先度の高い URL フィルタ(明示的な ALLOW または暗黙的な DENY)は、Cloud NGFW が SNI またはドメイン情報がない場合に接続を許可するか拒否するかを決定します。これは、暗号化されていない HTTP トラフィックの場合や、暗号化されたメッセージ ヘッダーで TLS インスペクションが無効になっている場合に発生する可能性があります。

      urlFilteringProfile:
        urlFilters:
          # user-specified filters
          - filteringAction: DENY
            priority: 1000
            urls: ['www.example.com','www.examplepetstore.com']
          # explicit allow URL filter that you can add
          - filteringAction: ALLOW
            priority: 2000
            urls: ['*']
          # implicit deny URL filter that will be processed last
          - filteringAction: DENY
            priority: 2147483647
            urls: ['*']
      

制限事項

  • マッチャー文字列は、ドメインまたはサブドメインを表します。
  • マッチャー文字列はスラッシュ文字(/)をサポートしていません(例: www.example.com/images)。
  • マッチャー文字列は、スキームやプロトコル名をサポートしていません。例: http://www.example.com
  • マッチャー文字列はポート番号をサポートしていません。例: www.example.com:80
  • マッチャー文字列でサポートされているのは、ASCII 文字、数字、特殊文字(ハイフン(-)、ドット(.)、アスタリスク(*))のみです。

ASCII 文字、数字、ハイフン(-)、ピリオド(.)、アスタリスク(*)以外の文字を含むドメイン名を変換するには、Punycode を使用する必要があります。Punycode は、Unicode ドメイン名を ASCII 互換形式に変換するエンコード規格です。

  • ラベルが複数ある場合は、ピリオド(.)で区切ります。ラベルには 1 つ以上のハイフン(-)を含めることができますが、先頭または末尾をハイフンにすることはできません。各ラベルは最大 63 文字です。

  • URL フィルタでは、ドメイン名の先頭にピリオドを使用したり、マッチャー文字列内に連続するピリオドを使用したりすることはできません。URL フィルタでは末尾のピリオドを使用できますが、Cloud NGFW は、URL フィルタを保存する前に末尾のピリオドを削除します。

  • Cloud NGFW は、URL フィルタを保存する前に、マッチャー文字列を小文字に変換します。Cloud NGFW は他の正規化を行いません。

  • 各ドメイン名は、最大 255 文字です。

マルチレベル サブドメインの URL フィルタ

優先度とアクションが異なる URL フィルタを使用して、マルチレベル サブドメインへのネットワーク トラフィックを制御できます。マッチャー文字列でワイルドカード文字(*)を使用して、ドメインとサブドメインを指定することもできます。

たとえば、次のような動作を実装するシナリオについて考えてみましょう。

  • a.b.c.example.com を許可
  • *.b.c.example.com を拒否(b.c.example.com の他のすべてのサブドメインを拒否)
  • *.c.example.com を許可する(c.example.com の他のすべてのサブドメインを許可する)
  • *.example.com を拒否(example.com の他のすべてのサブドメインを拒否)
  • example.com を許可
  • その他はすべて許可する

次のコード スニペットは、このシナリオを実装しています。

  urlFilteringProfile:
    urlFilters:
      # Allow 'a.b.c.example.com'
      - filteringAction: ALLOW
        priority: 1000
        urls: ['a.b.c.example.com']
      # Deny all subdomains of 'b.c.example.com'
      - filteringAction: DENY
        priority: 2000
        urls: ['*.b.c.example.com']
      # Allow all subdomains of 'c.example.com'
      - filteringAction: ALLOW
        priority: 3000
        urls: ['*.c.example.com']
      # Deny all subdomains of 'example.com'
      - filteringAction: DENY
        priority: 4000
        urls: ['*.example.com']
      # explicit allow URL filter
      - filteringAction: ALLOW
        priority: 5000
        urls: ['*']
      # implicit deny URL filter that will be processed last
      - filteringAction: DENY
        priority: 2147483647
        urls: ['*']
  

URL フィルタリング セキュリティ プロファイルの一覧を取得して詳細を表示する

組織またはプロジェクトで作成された URL フィルタリング セキュリティ プロファイルを一覧表示できます。タイプ、目的、説明などのプロファイルの詳細を表示することもできます。

コンソール

  1. Google Cloud コンソールで、[セキュリティ プロファイル] ページに移動します。

    [セキュリティ プロファイル] に移動

  2. [セキュリティ プロファイル] タブを選択して、構成済みのセキュリティ プロファイルのリストを表示します。

  3. URL フィルタリング セキュリティ プロファイルをフィルタするには、[フィルタ] フィールドで、[プロファイル タイプ] を [URL フィルタリング] に指定します。

    このタブには、URL フィルタリング セキュリティ プロファイルのリストが表示されます。

  4. プロファイルの詳細を表示するには、[URL フィルタリング] セキュリティ プロファイルをクリックします。

gcloud

すべての URL フィルタリング セキュリティ プロファイルを一覧表示するには、gcloud network-security security-profiles url-filtering list コマンドを使用します。

gcloud network-security security-profiles url-filtering list \
    [ --organization ORGANIZATION_ID | --project PROJECT_ID ] \
    [--billing-project QUOTA_PROJECT_ID]
    --location global

URL フィルタリング セキュリティ プロファイルの詳細を表示するには、gcloud network-security security-profiles url-filtering describe コマンドを実行します。

gcloud network-security security-profiles url-filtering describe NAME \
    [ --organization ORGANIZATION_ID | --project PROJECT_ID ] \
    [--billing-project QUOTA_PROJECT_ID]
    --location global

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

  • NAME: セキュリティ プロファイルの名前。

    名前に一意の URL 識別子形式を使用しない場合は、組織またはプロジェクトの名前とロケーションを指定する必要があります。

  • ORGANIZATION_ID: セキュリティ プロファイルが存在する組織 ID。

  • PROJECT_ID: セキュリティ プロファイルが存在するプロジェクト ID。

  • QUOTA_PROJECT_ID: 割り当てプロジェクト ID。このフラグは、組織レベルのセキュリティ プロファイルでのみ使用します。

URL フィルタリング セキュリティ プロファイルを削除する

URL フィルタリングのセキュリティ プロファイルは、名前、ロケーション、組織またはプロジェクトを指定して削除できます。セキュリティ プロファイルがセキュリティ プロファイル グループによって参照されている場合、そのセキュリティ プロファイルは削除できません。

URL フィルタリング セキュリティ プロファイルを削除するには、 Google Cloud コンソールまたは gcloud CLI を使用します。ただし、セキュリティ プロファイルがセキュリティ プロファイル グループによって参照されている場合、そのセキュリティ プロファイルは削除できません。

コンソール

  1. Google Cloud コンソールで、[セキュリティ プロファイル] ページに移動します。

    [セキュリティ プロファイル] に移動

  2. [セキュリティ プロファイル] タブを選択します。このタブには、構成済みのセキュリティ プロファイルのリストが表示されます。

  3. 削除するセキュリティ プロファイルを選択して、[削除] をクリックします。

  4. もう一度 [削除] をクリックして確定します。

gcloud

URL フィルタリング セキュリティ プロファイルを削除するには、gcloud network-security security-profiles url-filtering delete コマンドを使用します。

gcloud network-security security-profiles url-filtering delete NAME \
    [ --organization ORGANIZATION_ID | --project PROJECT_ID ] \
    --location global

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

  • NAME: セキュリティ プロファイルの名前。

    一意の URL 識別子形式で名前を指定しない場合は、組織またはプロジェクトの名前とロケーションを指定する必要があります。

  • ORGANIZATION_ID: 組織 ID。このフラグは、組織レベルのセキュリティ プロファイルに使用します。

  • PROJECT_ID: プロジェクト ID。このフラグは、プロジェクト レベルのセキュリティ プロファイルに使用します。

  • QUOTA_PROJECT_ID: 割り当てプロジェクト ID。このフラグは、組織レベルのセキュリティ プロファイルでのみ使用します。

URL フィルタリング セキュリティ プロファイルをインポートする

YAML ファイルから URL フィルタリング セキュリティ プロファイル(カスタム作成または以前にエクスポートされたもの)をインポートできます。URL フィルタリング セキュリティ プロファイルをインポートするときに、同じ名前のプロファイルがすでに存在する場合、Cloud NGFW は既存のプロファイルを更新します。

URL フィルタリング セキュリティ プロファイルを YAML ファイルからインポートするには、gcloud CLI を使用します。インポート時に同じ名前のプロファイルがすでに存在する場合、Cloud NGFW はそのプロファイルを更新します。

gcloud

YAML ファイルから URL フィルタリング セキュリティ プロファイルをインポートするには、gcloud network-security security-profiles import コマンドを使用します。

gcloud network-security security-profiles import NAME \
    [ --organization ORGANIZATION_ID | --project PROJECT_ID ] \
    --location global \
    --source FILE_NAME

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

  • NAME: インポートする url-filtering タイプのセキュリティ プロファイルの名前。名前は文字列または一意の URL 識別子として指定できます。

  • ORGANIZATION_ID: 組織 ID。このフラグは、組織レベルのセキュリティ プロファイルに使用します。

  • PROJECT_ID: プロジェクト ID。このフラグは、プロジェクト レベルのセキュリティ プロファイルに使用します。

  • FILE_NAME: 構成エクスポート データを含む YAML ファイルのパス。

URL フィルタリング セキュリティ プロファイルをエクスポートする

URL フィルタリング セキュリティ プロファイルを YAML ファイルにエクスポートできます。たとえば、大規模なセキュリティ プロファイルをユーザー インターフェースで変更する代わりに、この機能を使用してセキュリティ プロファイルをエクスポートし、すばやく変更して、インポートし直すことができます。

URL フィルタリング セキュリティ プロファイルを YAML ファイルにエクスポートするには、gcloud CLI を使用します。

gcloud

URL フィルタリング セキュリティ プロファイルを YAML ファイルにエクスポートするには、gcloud network-security security-profiles export コマンドを使用します。

gcloud network-security security-profiles export NAME \
    [ --organization ORGANIZATION_ID | --project PROJECT_ID ] \
    --location global \
    --destination FILE_NAME

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

  • NAME: エクスポートする url-filtering タイプのセキュリティ プロファイルの名前。名前は文字列または一意の URL 識別子として指定できます。

  • ORGANIZATION_ID: 組織 ID。このフラグは、組織レベルのセキュリティ プロファイルに使用します。

  • PROJECT_ID: プロジェクト ID。このフラグは、プロジェクト レベルのセキュリティ プロファイルに使用します。

  • FILE_NAME: Cloud NGFW が構成をエクスポートする YAML ファイルのパス。

次のステップ