このページでは、 Resource Manager タグを Secure Web Proxy ポリシーに適用する方法について説明します。Resource Manager タグは、仮想マシン(VM)インスタンスなどのさまざまな リソース Google Cloud に適用できるラベルです。タグを使用すると、既存の組織ラベルを使用して、ネットワーク全体に条件付きアクセス制御を適用できます。
これらのタグを使用すると、次の操作を行うことができます。
ワークロードのセグメント化:
productionやdevelopmentなどのさまざまな環境や、frontendやdatabaseなどのサービスタイプを一意に識別できます。アクセス制御の一元化: これらのタグに基づいて Secure Web Proxy ポリシーを 作成できます。たとえば、「
tag segment=productionタグを持つリソースから発信されたトラフィックのみが、特定の URL セットにアクセスできる」というポリシー ルールを作成できます。
このページでは、次の方法について説明します。
- 空のポリシーを使用して Secure Web Proxy インスタンスを作成する
- Resource Manager タグを作成して VM インスタンスに適用する
- Secure Web Proxy ルールを作成する
- Secure Web Proxy 構成全体の接続をテストする
始める前に
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 インスタンスを作成するには、まず空のセキュリティ ポリシーを作成し、そのポリシーを使用するウェブプロキシを作成する必要があります。
空のセキュリティ ポリシーを作成する
コンソール
コンソールで、[SWP Policies] ページに移動します。 Google Cloud
[Create a policy] をクリックします。
[Name] フィールドに、ポリシーの名前(
myswppolicyなど)を入力します。[Description] フィールドに、ポリシーの説明(
My new swp policyなど)を入力します。[Regions] で、ポリシーを作成する リージョン(
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
ウェブプロキシを作成する
コンソール
コンソールで、[Web Proxies] ページに移動します。 Google Cloud
[add_box**Create a secure web proxy**] をクリックします。
[Name] フィールドに、ウェブプロキシの名前(
myswpなど)を入力します。[Description] フィールドに、ウェブプロキシの説明(
My new swpなど)を入力します。[Routing mode] で、次のいずれかのオプションを選択します。
- Explicit: Secure Web Proxy インスタンスを明示的なプロキシ モードでデプロイします。
- ネクストホップ: Secure Web Proxy インスタンスをネクストホップ モードでデプロイします。
[Regions] で、 ウェブプロキシを作成するリージョン(
us-central1など)を選択します。[Network] で、 ウェブプロキシを作成するネットワークを選択します。
省略可: [Web proxy IP address] フィールドに、Secure Web Proxy の IP アドレスを入力します。
前の手順で作成したサブネットワークに存在する Secure Web Proxy IP アドレスの範囲から IP アドレスを入力できます。 IP アドレスを入力しない場合、Secure Web Proxy インスタンスは、選択したサブネットワークから IP アドレスを自動的に選択します。
[Certificate] で、ウェブプロキシの作成に使用する証明書を選択します。
[Policy] で、ウェブプロキシに関連付けるために作成したポリシーを選択します。
[作成] をクリックします。
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 routingMode: ROUTING_MODE addresses: [GATEWAY_IP_ADDRESS] scope: samplescope省略可: 他の Google Cloud リージョンのクライアント アプリケーションがプロキシに接続できるようにするには、Secure Web Proxy インスタンスの作成時にグローバル アクセスを有効にします。
gateway.yamlファイルにallow_global_accessフィールドを追加して、trueに設定します。重要:
allow_global_accessは、Secure Web Proxy インスタンスを作成するときにのみ有効にできます。この設定は後で構成できません。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 allow_global_access: true次のように置き換えます。
GATEWAY_NAME: この Secure Web Proxy インスタンスの名前GATEWAY_PORT_NUMBERS: このゲートウェイのポート番号のリスト([80,443]など)CERTIFICATE_URLS: SSL 証明書の URL のリストROUTING_MODE: 必要なウェブプロキシ ルーティング モードを指定します。EXPLICIT_ROUTING_MODE: Secure Web Proxy インスタンスを明示的なプロキシ モードでデプロイします。NEXT_HOP_ROUTING_MODE: Secure Web Proxy インスタンスをネクストホップ モードでデプロイします。
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ルールを定義するまで、すべてのトラフィックを拒否するデフォルトのセキュリティ体制を正しく適用している。
Resource Manager タグを作成して適用する
-
例: 制限付き環境のタグを作成する手順は次の とおりです。
タグキー(
access-level)をgcloud resource-manager tags keys createコマンド を使用して、目的をGCE_FIREWALLに設定して作成します。作成コマンドの出力から、または
gcloud resource-manager tags keys listコマンドを使用して、タグキー ID を取得します。 この ID は、タグ値を特定のタグキーにリンクするために必要です。gcloud resource-manager tags values createコマンドを使用してタグ値(restricted)を作成し、タグキー ID を親として指定します。
# Create the tag key # The output provides a unique ID, such as "tagKeys/1234567890" gcloud resource-manager tags keys create "access-level" \ --parent="organizations/1234567890" \ --purpose="GCE_FIREWALL" \ --purpose-values="execution_env=ANS" # Create the tag value and connect it to the key # The "--parent" flag identifies to which key this value belongs gcloud resource-manager tags values create "restricted" \ --parent="tagKeys/1234567890" -
これらのタグを適用すると、VM インスタンスからの下り(外向き)トラフィックが特定のタグ ID に関連付けられます。これにより、プロキシはワークロードを認識し、セキュリティ ポリシー ルールを適用できます。
例:
internal-toolという名前の VM インスタンスがあるとします。gcloud resource-manager tags bindings createコマンドを使用して、restrictedタグ値をinternal-toolに適用できます。 このタグ割り当てにより、プロキシはinternal-toolVM インスタンスから発信されたトラフィックを識別できます。# Attach the "restricted" tag to a specific VM instance gcloud resource-manager tags bindings create \ --parent="//[compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/internal-tool](https://compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/internal-tool)" \ --tag-value="tagValues/987654321"
Secure Web Proxy ルールを作成する
コンソール
コンソールで、[SWP Policies] ページに移動します。 Google Cloud
ポリシーの名前(
myswppolicyなど)をクリックします。[Add rule] をクリックします。
ルールごとに、次の操作を行います。
[**Priority**] に、ルールの数値評価順序を入力します。 ルールは、最も高い優先度から順番に評価されます(最も高い優先度は
0)。[Name] フィールドに、ルールの名前を入力します。
[Description] フィールドに、ルールの説明を入力します。
[Action] で、次のいずれかのオプションを選択します。
- 許可: ルールに一致する接続リクエストを許可します。
- 拒否: ルールに一致する接続リクエストを拒否します。
[Status] フィールドで、ルールの適用について次のいずれかのオプションを選択します。
- 有効: Secure Web Proxy インスタンスにルールを適用します。
- 無効: Secure Web Proxy インスタンスにルールを適用しません。
[Session match] セクションで、前のセクションで作成したタグの一意の ID を指定します。次に例を示します。
sessionMatcher: "source.matchTag('TAG&&_VALUE') host() ==39;example.com'"SessionMatcherの構文の詳細については、CEL マッチャーの言語リファレンスをご覧ください。[Application match] セクションで、リクエストの一致条件を指定します。
[Add rule] をクリックします。
Cloud Shell
テキスト エディタを使用して
rule.yamlファイルを作成します。必要なタグから URL へのアクセスを許可するには、次のコードを
rule.yamlファイルに追加します。name: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME/rules/RULE_NAME description: RULE_DESCRIPTION enabled: true priority: RULE_PRIORITY sessionMatcher: CEL_EXPRESSION basicProfile: ALLOW次のように置き換えます。
RULE_NAME: このルールの名前RULE_DESCRIPTION: ルールの説明RULE_PRIORITY: このルールの優先度。数値が小さいほど優先度が高くなりますCEL_EXPRESSION: Common Expression Language(CEL)式。詳細については、 CEL マッチャーの言語リファレンスをご覧ください。
たとえば、必要なタグから
example.comへのアクセスを許可するには、次のsessionMatcher行を YAML ファイルに追加します。sessionMatcher: "source.matchTag('TAG&&_VALUE') host() ==39;example.com'"TAG_VALUEは、許可するタグに置き換えます。タグが数値リソース識別子の形式(tagValues/567890123456など)に従っていることを確認します。gcloud network-security gateway-security-policies rules importコマンドを使用して、作成したルールをインポートします。gcloud network-security gateway-security-policies rules import RULE_NAME \ --source=RULE_FILE.yaml \ --location=REGION \ --gateway-security-policy=POLICY_NAME
ポリシー構成をテストする
接続を再度テストして、ID に Resource Manager タグを使用する Secure Web Proxy ポリシーが意図したとおりに機能していることを確認できます。
接続をテストするには、適切な TAG_VALUE タグに関連付けられている任意の VM から curl コマンドを使用します。
curl -x https://IPv4_ADDRESS:443 http://example.com --proxy-insecure
IPv4_ADDRESS は、Secure Web Proxy インスタンスの IPv4 アドレスに置き換えます。
すべてが正常に機能している場合、200 OK または 403 Forbidden ステータス コードが返されます。これらのレスポンスは、次の主な結果を確認します。
タグベースの成功:
200 OKステータス コードは、正しい Resource Manager タグが適用された VM からのトラフィックがポリシー ルールに一致し、プロキシを通過できることを検証します。この検証済みの一致により、接続が成功します。タグベースの拒否:
403 Forbiddenステータス コードは、指定されたタグがない VM または誤ったタグを持つ VM からのトラフィックがポリシーによって正しくアクセスを拒否されていることを確認します。この適用により、タグベースのセグメンテーションと適用が意図したとおりに機能していることが証明されます。