このページでは、 Google Cloud コンソールと Google Cloud CLI を使用して、タイプ url-filtering のセキュリティ プロファイルを作成して管理する方法について説明します。
始める前に
- プロジェクトで Network Security API を有効にする必要があります。
- このガイドの
gcloudコマンドラインのサンプルを実行する場合は、gcloud CLI をインストールします。
ロール
セキュリティ プロファイルを作成、表示、更新、削除するために必要な権限を取得するには、組織に必要な IAM ロールの付与を管理者に依頼してください。ロールの付与の詳細については、アクセス権の管理をご覧ください。
URL フィルタリング セキュリティ プロファイルを作成する
URL フィルタリング セキュリティ プロファイル(タイプ url-filtering のセキュリティ プロファイル)を作成するときに、セキュリティ プロファイルの名前を文字列または一意の URL 識別子として指定できます。組織スコープのセキュリティ プロファイルの一意の URL は、次の形式で構成できます。
organization/ORGANIZATION_ID/locations/LOCATION/securityProfiles/SECURITY_PROFILE_NAME
セキュリティ プロファイル名に一意の URL 識別子を使用している場合、セキュリティ プロファイルの組織とロケーションは URL 識別子にすでに含まれています。ただし、セキュリティ プロファイル名のみを使用する場合は、組織とロケーションを別々に指定する必要があります。一意の URL 識別子の詳細については、セキュリティ プロファイルの仕様をご覧ください。
コンソール
Google Cloud コンソールで、[セキュリティ プロファイル] ページに移動します。
プロジェクト セレクタのメニューで、組織を選択します。
[セキュリティ プロファイル] タブを選択します。
[プロファイルを作成] をクリックします。
必要に応じて、[名前] フィールドに名前を入力します。
省略可: [説明] フィールドに説明を入力します。
Cloud Next Generation Firewall Enterprise セキュリティ プロファイルを作成するには、[目的] セクションで [Cloud NGFW Enterprise] を選択します。
URL フィルタリング セキュリティ プロファイルを作成するには、[タイプ] セクションで [URL フィルタリング] を選択します。
[URL フィルタ] セクションで、[URL フィルタを作成] ボタンをクリックします。
[URL フィルタを作成] ペインで、次の詳細を指定します。
- 優先度: URL フィルタの優先度を指定します。
- アクション: Cloud NGFW がトラフィックに対して実行するアクションを指定します。
- 許可: URL に一致する接続を許可します。
- 拒否: URL に一致する接続を拒否します。
- URL リスト: URL またはマッチャー文字列のリストを指定します。各 URL またはマッチャー文字列エントリは、スペースや区切り文字を入れずに単独の行で記述する必要があります。各エントリはドメインのみで構成できます。マッチャー文字列の詳細については、URL のマッチャー文字列をご覧ください。
[作成] をクリックします。
gcloud
次の内容の YAML ファイルを作成します。
name: NAME type: PROFILE_TYPE urlFilteringProfile: urlFilters: - filteringAction: ACTION priority: PRIORITY urls: URL[,URL,...]次のように置き換えます。
NAME: URL フィルタリング セキュリティ プロファイルの名前。名前は文字列または一意の URL 識別子として指定できます。PROFILE_TYPE: セキュリティ プロファイル タイプをurl-filteringとして指定します。ACTION: 次のいずれかのアクションを指定します。allow: URL と一致する接続を許可します。deny: URL と一致する接続を拒否します。
PRIORITY: 0 ~ 2147483647 の範囲の URL フィルタの優先度。URLs: マッチャー文字列のカンマ区切りリスト。たとえばwww.example.com、www.examplepetstore.comとして指定します。
URL フィルタリング セキュリティ プロファイルを作成するには、
gcloud network-security security-profiles importコマンドを実行します。gcloud network-security security-profiles import NAME \ --location LOCATION \ --source FILE_NAME \ --organization ORGANIZATION_IDまたは、
gcloud network-security security-profiles url-filtering createコマンドを使用して、YAML ファイルなしで URL フィルタリング セキュリティ プロファイルを作成することもできます。gcloud network-security security-profiles url-filtering create NAME \ --location LOCATION \ --organization ORGANIZATION_ID \ --description DESCRIPTION次のように置き換えます。
NAME: URL フィルタリング セキュリティ プロファイルの名前。名前は文字列または一意の URL 識別子として指定できます。NAMEフラグに一意の URL 識別子を使用する場合、LOCATIONフラグとORGANIZATIONフラグは省略できます。LOCATION: URL フィルタリング セキュリティ プロファイルのロケーション。ロケーションは常に
globalに設定されます。NAMEフラグに一意の URL 識別子を使用する場合、LOCATIONフラグは省略できます。FILE_NAME: YAML ファイルの名前。例:url-filtering-sp.yamlORGANIZATION_ID: URL フィルタリング セキュリティ プロファイルが作成される組織。nameフラグに一意の URL 識別子を使用する場合、ORGANIZATION_IDフラグは省略できます。DESCRIPTION: URL フィルタリング セキュリティ プロファイルの説明(省略可)。
たとえば、次のコード スニペットは、
www.example.comとwww.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.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のサブドメインへのトラフィックを許可しますが、残りのアウトバウンド トラフィックは拒否します。ドメイン拡張子(
.comなど)の前にアスタリスク(*)を指定すると、そのドメイン拡張子を使用するすべてのドメイン(およびサブドメイン)を表します。たとえば、マッチャー文字列
*.comは、example.com、examplepetstore.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.comとexamplepetstore.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.testはnewexample.testまたはa.newexample.testと一致しません。一致するのは、example.testとexample.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 フィルタリング セキュリティ プロファイルの詳細を表示できます。
コンソール
Google Cloud コンソールで、[セキュリティ プロファイル] ページに移動します。
[セキュリティ プロファイル] タブを選択します。このタブには、構成済みのセキュリティ プロファイルのリストが表示されます。
[URL フィルタリング] タイプのセキュリティ プロファイルをクリックして、プロファイルの詳細を表示します。
gcloud
URL フィルタリング セキュリティ プロファイルの詳細を表示するには、gcloud network-security security-profiles url-filtering describe コマンドを使用します。
gcloud network-security security-profiles url-filtering describe NAME \
--organization ORGANIZATION_ID \
--location LOCATION \
次のように置き換えます。
NAME: 説明を取得するurl-filteringタイプのセキュリティ プロファイルの名前。名前は文字列または一意の URL 識別子として指定できます。ORGANIZATION_ID: URL フィルタリング セキュリティ プロファイルが作成される組織。NAMEフラグに一意の URL 識別子を使用する場合、ORGANIZATION_IDフラグは省略できます。LOCATION: URL フィルタリング セキュリティ プロファイルのロケーション。ロケーションは常にglobalに設定されます。NAMEフラグに一意の URL 識別子を使用する場合、LOCATIONフラグは省略できます。
URL フィルタリング セキュリティ プロファイルを一覧表示する
組織内のすべての URL フィルタリング セキュリティ プロファイルを一覧表示できます。
コンソール
Google Cloud コンソールで、[セキュリティ プロファイル] ページに移動します。
[セキュリティ プロファイル] タブを選択します。このタブには、構成済みのセキュリティ プロファイルのリストが表示されます。
gcloud
すべての URL フィルタリング セキュリティ プロファイルを一覧表示するには、gcloud network-security security-profiles url-filtering list コマンドを使用します。
gcloud network-security security-profiles url-filtering list \
--organization ORGANIZATION_ID \
--location LOCATION
次のように置き換えます。
ORGANIZATION_ID: URL フィルタリング セキュリティ プロファイルが作成される組織。LOCATION: URL フィルタリング セキュリティ プロファイルのロケーション。ロケーションは常にglobalに設定されます。
URL フィルタリング セキュリティ プロファイルを削除する
URL フィルタリングのセキュリティ プロファイルは、名前、ロケーション、組織を指定して削除できます。ただし、セキュリティ プロファイルがセキュリティ プロファイル グループによって参照されている場合、そのセキュリティ プロファイルは削除できません。
コンソール
Google Cloud コンソールで、[セキュリティ プロファイル] ページに移動します。
[セキュリティ プロファイル] タブを選択します。このタブには、構成済みのセキュリティ プロファイルのリストが表示されます。
削除するセキュリティ プロファイルを選択して、[削除] をクリックします。
もう一度 [削除] をクリックして確定します。
gcloud
URL フィルタリング セキュリティ プロファイルを削除するには、gcloud network-security security-profiles url-filtering delete コマンドを使用します。
gcloud network-security security-profiles url-filtering delete NAME \
--organization ORGANIZATION_ID \
--location LOCATION
次のように置き換えます。
NAME: 削除する URL フィルタリング セキュリティ プロファイルの名前。名前は文字列または一意の URL 識別子として指定できます。ORGANIZATION_ID: URL フィルタリング セキュリティ プロファイルが作成される組織。NAMEフラグに一意の URL 識別子を使用する場合、ORGANIZATION_IDフラグは省略できます。LOCATION: URL フィルタリング セキュリティ プロファイルのロケーション。ロケーションは常に
globalに設定されます。NAMEフラグに一意の URL 識別子を使用する場合、LOCATIONフラグは省略できます。
URL フィルタリング セキュリティ プロファイルをインポートする
YAML ファイルから URL フィルタリング セキュリティ プロファイル(カスタム作成または以前にエクスポートされたもの)をインポートできます。URL フィルタリング セキュリティ プロファイルをインポートするときに、同じ名前のプロファイルがすでに存在する場合、Cloud NGFW は既存のプロファイルを更新します。
gcloud
URL フィルタリング セキュリティ プロファイルを YAML ファイルからインポートするには、gcloud network-security security-profiles import コマンドを使用します。
gcloud network-security security-profiles import NAME \
--organization ORGANIZATION_ID \
--location LOCATION \
--source FILE_NAME
次のように置き換えます。
NAME: インポートするurl-filteringタイプのセキュリティ プロファイルの名前。名前は文字列または一意の URL 識別子として指定できます。NAMEフラグに一意の URL 識別子を使用する場合、ORGANIZATION_IDフラグとLOCATIONフラグは省略できます。ORGANIZATION_ID: URL フィルタリング セキュリティ プロファイルが作成される組織。NAMEフラグに一意の URL 識別子を使用する場合、ORGANIZATION_IDフラグは省略できます。LOCATION: URL フィルタリング セキュリティ プロファイルのロケーション。ロケーションは常にglobalに設定されます。NAMEフラグに一意の URL 識別子を使用する場合、LOCATIONフラグは省略できます。FILE_NAME: URL フィルタリング セキュリティ プロファイルの構成エクスポート データを含む YAML ファイルのパス。例:url-filtering-sp.yamlYAML ファイルに出力専用フィールドを含めることはできません。または、
sourceフラグを省略して標準入力から読み取ることもできます。
URL フィルタリング セキュリティ プロファイルをエクスポートする
URL フィルタリング セキュリティ プロファイルを YAML ファイルにエクスポートできます。たとえば、ユーザー インターフェースを使用して大規模なセキュリティ プロファイルを変更する代わりに、この機能を使用してセキュリティ プロファイルをエクスポートし、すばやく変更して、インポートし直すことができます。
gcloud
URL フィルタリング セキュリティ プロファイルを YAML ファイルにエクスポートするには、gcloud network-security security-profiles export コマンドを使用します。
gcloud network-security security-profiles export NAME \
--organization ORGANIZATION_ID \
--location LOCATION \
--destination FILE_NAME
次のように置き換えます。
NAME: エクスポートするurl-filteringタイプのセキュリティ プロファイルの名前。名前は文字列または一意の URL 識別子として指定できます。NAMEフラグに一意の URL 識別子を使用する場合、ORGANIZATION_IDフラグとLOCATIONフラグは省略できます。ORGANIZATION_ID: URL フィルタリング セキュリティ プロファイルが作成される組織。NAMEフラグに一意の URL 識別子を使用する場合、ORGANIZATION_IDフラグは省略できます。LOCATION: URL フィルタリング セキュリティ プロファイルのロケーション。ロケーションは常にglobalに設定されます。NAMEフラグに一意の URL 識別子を使用する場合、LOCATIONフラグは省略できます。FILE_NAME: Cloud NGFW が URL フィルタリング セキュリティ プロファイルの構成をエクスポートする YAML ファイルのパス。例:url-filtering-sp.yamlエクスポートされた構成データには、出力専用フィールドは含まれません。また、
destinationフラグを省略して標準出力に書き込むこともできます。