このページでは、URL リストを使用して、Secure Web Proxy インスタンス内のアウトバウンド ウェブ トラフィックの詳細なアクセス ポリシーを作成して管理する方法について説明します。URL リストを使用すると、ウェブサイトごとに個別のルールを作成する代わりに、ドメイン、ホスト名、特定の URL パターンの再利用可能な一元管理されたコレクションを定義できます。
URL リストを使用する主なメリットは次のとおりです。
ポリシー管理の簡素化: セキュリティ ポリシーで 1 つの参照を使用して、
allowルールまたはdenyルールの大きなセットを適用できます。正確な制御を適用する: 特定の構文を使用して、ドメイン全体、サブドメイン、正確な URL パスを照合できます。これにより、ワークロードが承認された宛先にのみアクセスできるようになります。
安全なウェブアクセス: Google Cloud 環境全体でウェブアクセスを効率的に保護し、監査できます。
始める前に
初期設定の手順を完了します。
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 インスタンスを作成するには、まず空のセキュリティ ポリシーを作成してから、そのポリシーを使用するウェブプロキシを作成する必要があります。
空のセキュリティ ポリシーを作成する
コンソール
Google Cloud コンソールで、[SWP ポリシー] ページに移動します。
[ポリシーを作成] をクリックします。
[名前] フィールドに、ポリシーの名前(
myswppolicyなど)を入力します。[説明] フィールドに、ポリシーの説明(
My new swp policyなど)を入力します。[リージョン] で、ポリシーを作成するリージョン(
us-central1など)を選択します。[作成] をクリックします。
Cloud Shell
任意のテキスト エディタを使用して、
policy.yamlファイルを作成します。作成した
policy.yamlファイルに次の内容を追加します。name: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME description: POLICY_DESCRIPTION次のように置き換えます。
PROJECT_NAME: プロジェクトの名前REGION: ポリシーが作成されるリージョン(us-central1など)POLICY_NAME: ポリシーの名前POLICY_DESCRIPTION: ポリシーの説明
gcloud network-security gateway-security-policies importコマンドを使用して、セキュリティ ポリシーをインポートします。gcloud network-security gateway-security-policies import POLICY_NAME \ --source=POLICY_FILE.yaml \ --location=REGION
ウェブプロキシを作成する
コンソール
Google Cloud コンソールで、[ウェブ プロキシ] ページに移動します。
[セキュア ウェブプロキシを作成] をクリックします。
[名前] フィールドに、ウェブ プロキシの名前(例:
myswp)を入力します。[説明] フィールドに、ウェブプロキシの説明(
My new swpなど)を入力します。[ルーティング モード] で、[明示的] オプションを選択します。
[リージョン] で、ウェブプロキシを作成するリージョン(
us-central1など)を選択します。[ネットワーク] で、ウェブプロキシを作成するネットワークを選択します。
省略可: [ウェブプロキシの IP アドレス] フィールドに、Secure Web Proxy の IP アドレスを入力します。
前の手順で作成したサブネットワークに存在する Secure Web Proxy IP アドレスの範囲から IP アドレスを入力できます。IP アドレスを入力しない場合、Secure Web Proxy インスタンスは選択したサブネットワークから IP アドレスを自動的に選択します。
[証明書] で、ウェブプロキシの作成に使用する証明書を選択します。
[ポリシー] で、ウェブプロキシに関連付けるために作成したポリシーを選択します。
[作成] をクリックします。
Cloud Shell
任意のテキスト エディタを使用して、
gateway.yamlファイルを作成します。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 のリストGATEWAY_IP_ADDRESS: 初期設定手順で以前に作成したプロキシ サブネット内の Secure Web Proxy インスタンスの IP アドレスのオプションのリストIP アドレスを一覧表示しない場合は、フィールドを省略して、ウェブプロキシによって IP アドレスが選択されるようにします。
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 リストを作成して構成する
コンソール
Google Cloud コンソールで、[URL リスト] ページに移動します。
[URL リストを作成] をクリックします。[URL リストの作成] ページが開きます。
[名前] フィールドに、URL リストの名前(
example-org-allowed-listなど)を入力します。[説明] フィールドに、URL リストの説明を入力します(例:
My new URL list)。[リージョン] で、URL リストを作成するリージョン(
us-central1など)を選択します。照合するホスト、URL、パターンのリストを追加するには、[URL リスト] フィールドに詳細を入力するか、[リストをアップロード] をクリックして URL のカスタムリストをアップロードします。詳細については、UrlList 構文リファレンスをご覧ください。
[作成] をクリックします。
Cloud Shell
任意のテキスト エディタを使用して
url_list.yamlファイルを作成します。url_list.yamlファイルに以下を追加します。name: projects/PROJECT_ID/locations/REGION/urlLists/URL_LIST_NAME values: URL_LIST次のように置き換えます。
PROJECT_ID: Google Cloudプロジェクトの一意の IDREGION: URL リストが作成されるリージョン(us-central1など)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 は引用符で囲む必要があります。gcloud network-security url-lists importコマンドを使用して作成した URL リストをインポートして、Secure Web Proxy ルールで参照できるようにします。gcloud network-security url-lists import URL_LIST_NAME \ --location=REGION \ --project=PROJECT_ID \ --source=url_list.yaml
Secure Web Proxy ルールを追加する
コンソール
Google Cloud コンソールで、[SWP ポリシー] ページに移動します。
ポリシーの名前(
myswppolicyなど)をクリックします。[ルールを追加] をクリックします。
ルールごとに、次の操作を行います。
[優先度] に、ルールの数値評価順序を入力します。ルールは、最も高い優先度から順番に評価されます(最も高い優先度は
0)。[名前] フィールドに、ルールの名前(
allow-org-url-listなど)を入力します。[説明] フィールドに、ルールの説明を入力します。
[アクション] で、次のいずれかのオプションを選択します。
- 許可: ルールに一致する接続リクエストを許可します。
- 拒否: ルールに一致する接続リクエストを拒否します。
[ステータス] フィールドで、ルールの適用について次のいずれかのオプションを選択します。
- 有効: Secure Web Proxy インスタンスにルールを適用します。
- 無効: Secure Web Proxy インスタンスにルールを適用しない場合。
[セッション一致] セクションで、前のセクションで作成した URL リストの一意の名前を指定します。次に例を示します。
sessionMatcher: "inUrlList(host(), 'projects/PROJECT_ID/locations/REGION/urlLists/URL_LIST_NAME)"SessionMatcherの構文の詳細については、CEL マッチャーの言語リファレンスをご覧ください。[アプリケーションの一致] セクションで、リクエストの一致条件を指定します。
[ルールを追加] をクリックします。
Cloud Shell
任意のテキスト エディタを使用して、
rule.yamlファイルを作成します。rule.yamlファイルに以下を追加します。name: projects/PROJECT_ID/locations/REGION/gatewaySecurityPolicies/POLICY_NAME/rules/RULE_NAME basicProfile: ALLOW enabled: true priority: RULE_PRIORITY description: RULE_DESCRIPTION sessionMatcher: SESSION_CEL_EXPRESSION applicationMatcher: APPLICATION_CEL_EXPRESSION次のように置き換えます。
PROJECT_ID: Google Cloudプロジェクトの一意の IDREGION: このルールが適用されるリージョンPOLICY_NAME: Secure Web Proxy インスタンスが使用する既存のセキュリティ ポリシーの名前RULE_NAME: ルールの名前PRIORITY_VALUE: ルールの優先度。数値が小さいほど優先度が高くなります。RULE_DESCRIPTION: ルールの説明SESSION_CEL_EXPRESSION: Common Expression Language(CEL)式。詳細については、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')"gcloud network-security gateway-security-policies rules importコマンドを使用して、作成したルールをインポートします。gcloud network-security gateway-security-policies rules import RULE_NAME \ --location=REGION \ --project=PROJECT_ID \ --source=rule.yaml \ --gateway-security-policy=POLICY_NAME
ポリシー設定をテストする
接続を再度テストして、URL リストベースのアクセスルールが正しく構成され、Secure Web Proxy インスタンスによってアクティブに適用されていることを確認できます。
接続をテストするには、次の curl コマンドを使用します。
curl -x https://SWP_IP_ADDRESS:SWP_PORT_NUMBER HTTP_TEST_ADDRESS
--proxy-insecure
次のように置き換えます。
SWP_IP_ADDRESS: Secure Web Proxy インスタンスの IP アドレスSWP_PORT_NUMBER: ウェブプロキシのポート番号(例:443)HTTP_TEST_ADDRESS: テスト対象のアドレス(https://www.example.comなど)。url_listのホストまたは URL エントリに一致します。
すべてが正しく機能している場合は、200 OK レスポンスが返されます。このレスポンスは、URL リストに記載され、セキュリティ ポリシー ルールで参照されている URL へのアウトバウンド トラフィックが、Secure Web Proxy インスタンス経由で正常に許可されたことを確認します。