このガイドでは、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 インスタンスを作成するには、まず空のセキュリティ ポリシーを作成してから、ウェブプロキシを作成します。
空のセキュリティ ポリシーを作成する
コンソール
Google Cloud コンソールで [ネットワーク セキュリティ] ページに移動します。
[Secure Web Proxy] をクリックします。
[ポリシー] タブをクリックします。
[Create a policy] をクリックします。
作成するポリシーの名前を入力します(例:
myswppolicy
)。ポリシーの説明(
My new swp policy
など)を入力します。[リージョン] リストで、ポリシーを作成するリージョンを選択します。
[作成] をクリックします。
Cloud Shell
任意のテキスト エディタを使用して、
POLICY_FILE
.yaml ファイルを作成します。POLICY_FILE
は、ポリシー ファイルのファイル名に置き換えます。作成した YAML ファイルに以下を追加します。
name: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME description: POLICY_DESCRIPTION
以下を置き換えます。
PROJECT_NAME
: プロジェクトの名前REGION
: このポリシーが適用されるリージョンPOLICY_NAME
: 作成するポリシーの名前POLICY_DESCRIPTION
: 作成するポリシーの説明
セキュリティ ポリシーをインポートします。
gcloud network-security gateway-security-policies import POLICY_NAME \ --source=POLICY_FILE.yaml \ --location=REGION
ウェブプロキシを作成する
コンソール
Google Cloud コンソールで [ネットワーク セキュリティ] ページに移動します。
[Secure Web Proxy] をクリックします。
[ウェブプロキシを設定] をクリックします。
作成するウェブプロキシの名前を入力します(例:
myswp
)。ウェブプロキシの説明を入力します(例:
My new swp
)。[リージョン] リストで、ウェブプロキシを作成するリージョンを選択します。
[ネットワーク] リストで、ウェブプロキシを作成するネットワークを選択します。
[サブネットワーク] リストで、ウェブプロキシを作成するサブネットワークを選択します。
ウェブプロキシの IP アドレスを入力します。
[証明書] リストで、ウェブプロキシの作成に使用する証明書を選択します。
[ポリシー] リストで、ウェブプロキシに関連付けるために作成したポリシーを選択します。
[作成] をクリックします。
Cloud Shell
任意のテキスト エディタを使用して、
GATEWAY_FILE
.yaml ファイルを作成します。GATEWAY_FILE
は、ウェブ プロキシ ファイルのファイル名に置き換えます。作成した 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 アドレスが選択されるようにします。
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
エラーが予想されます。
URL リストを作成する
URL リストを作成してルールを追加するには、次のセクションの作業を完了します。
URL リストを作成して構成する
Console
Google Cloud コンソールで、[ネットワーク セキュリティ] ページに移動します。
[Secure Web Proxy] をクリックします。
[URL リスト] タブをクリックします。
[URL リストを作成する] をクリックします。
作成する URL リストの名前を入力します(例:
myurllist
)。URL リストの説明を入力します(例:
My new URL list
)。[リージョン] リストで、URL リストを作成するリージョンを選択します。
[リストをアップロード] をクリックして、照合するホスト、URL、パターンのリストをアップロードします。詳細については、UrlList 構文リファレンスをご覧ください。
[作成] をクリックします。
Cloud Shell
任意のテキスト エディタを使用して、任意のファイル名で URL_LIST_FILE
.yaml. Replace
URL_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 は引用符で囲む必要があります。Secure Web Proxy ルールで参照できるように、URL リストを追加します。
gcloud network-security url-lists import URL_LIST_NAME \ --location=REGION \ --project=PROJECT_ID \ --source=URL_LIST_FILE.yaml
ルールの追加
Console
Google Cloud コンソールで、[ネットワーク セキュリティ] ページに移動します。
[Secure Web Proxy] をクリックします。
プロジェクト セレクタ メニューで、組織 ID またはポリシーを含むフォルダを選択します。
ポリシーの名前をクリックします。
[ルールを追加] をクリックします。
ルール フィールドに、次の内容を入力します。
- 名前
- 説明
- ステータス
- 優先度: ルールの数値評価順序。ルールは、最も高い優先度から順番に評価されます(最も高い優先度は
0
)。 - [アクション] セクションで、ルールに一致する接続を許可する(許可)か、拒否する(拒否)かを指定します。
[セッション マッチ] セクションで、前に作成した URL リストの名前を指定します。次に例を示します。
sessionMatcher: "inUrlList(host(), 'projects/PROJECT_ID/locations/REGION/urlLists/URL_LIST_NAME')"
TLS インスペクションを有効にするには、[TLS インスペクションを有効にする] を選択します。
[アプリケーションの一致] セクションで、リクエストの一致条件を指定します。
[作成] をクリックします。
[ルールを追加] をクリックして別のルールを追加します。
[Create] をクリックしてポリシーを作成します。
Cloud Shell
任意のテキスト エディタを使用して、
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')"
先ほど作成した 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
)
リクエストは成功したレスポンスを返す必要があります。