1. はじめに
ネットワーク ファイアウォール ポリシー
ファイアウォールは、安全なクラウド環境の基本的な構成要素です。以前は、VPC ファイアウォールは変更せずに、組織レベルとフォルダレベルでファイアウォール ポリシーを導入していました。このバージョンでは、ファイアウォール ポリシーの構造を VPC レベルまで拡張し、現在のファイアウォール ポリシーのサポートをいくつか強化して、Google Cloud のリソース階層全体で統合されたファイアウォール サポートを提供し、ファイアウォール ポリシーの管理を安全で柔軟かつスケーラブルな方法で一貫したユーザー エクスペリエンスで行うことができます。
ネットワーク ファイアウォール ポリシーは、ファイアウォール ルールのコンテナとして機能します。ネットワーク ファイアウォール ポリシーで定義されたルールは、ポリシーが VPC ネットワークに関連付けられるまで適用されません。各 VPC ネットワークには、1 つのネットワーク ファイアウォール ポリシーを関連付けることができます。ネットワーク ファイアウォール ポリシーは、ファイアウォール ルールで IAM で管理されるタグ(または単にタグ)をサポートしています。これは現在のネットワーク タグに代わるもので、ワークロードに ID を提供するために使用できます。
ネットワーク間でネットワーク ファイアウォール ポリシーを共有し、IAM によって管理されるタグと統合することで、ファイアウォールの構成と管理が大幅に簡素化されます。
ネットワーク ファイアウォール ポリシーの導入により、Google Cloud のファイアウォール ポリシーは次のコンポーネントで構成されるようになりました。
- 階層型ファイアウォール ポリシー
- VPC ファイアウォール ルール
- ネットワーク ファイアウォール ポリシー(グローバルとリージョン)
階層型ファイアウォール ポリシーはリソース階層内の組織ノードとフォルダノードでサポートされていますが、VPC ファイアウォール ルールとネットワーク ファイアウォール ポリシーは VPC レベルで適用されます。VPC ファイアウォール ルールとネットワーク ファイアウォール ポリシーの大きな違いは、VPC ファイアウォール ルールは単一の VPC ネットワークにのみ適用できるのに対し、ネットワーク ファイアウォール ポリシーは単一の VPC または VPC のグループに適用できることです。また、バッチ更新などのメリットもあります。
また、すべての VPC ネットワークに付属する暗黙のファイアウォール ルールもあります。
- アクションが allow、宛先が 0.0.0.0/0 の下り(外向き)ルール
- アクションが deny、送信元が 0.0.0.0/0 の上り(内向き)ルール
デフォルトでは、適用順序は次の図のようになります。
VPC ファイアウォール ルールとグローバル ネットワーク ファイアウォール ポリシーの適用順序は入れ替えることができます。お客様は、gcloud コマンドを使用して、いつでも適用順序を指定できます。
タグ
新しい ネットワーク ファイアウォール ポリシールールに統合されたタグは、Google Cloud リソース階層の組織レベルで定義された Key-Value ペアのリソースです。このようなタグには、名前が示すように、タグに対して何を行えるかを指定する IAM アクセス制御が含まれています。たとえば、IAM 権限では、どのプリンシパルが値をタグに割り当てることができるかと、どのプリンシパルがタグをリソースにアタッチできるかを指定できます。タグがリソースに適用されると、ネットワーク ファイアウォール ルールはそれを使用してトラフィックを許可または拒否できます。
タグは Google Cloud の継承リソースモデルに従います。つまり、タグとその値は親から階層全体に渡されます。その結果、タグを 1 か所で作成し、リソース階層全体の他のフォルダやプロジェクトで使用できます。タグとアクセス制限の詳細については、こちらのページをご覧ください。
タグをネットワーク タグと混同しないでください。後者は、Compute Engine インスタンスに追加できる文字列です。インスタンスに関連付けられ、インスタンスが廃止されると消えます。VPC ファイアウォール ルールにはネットワーク タグを含めることができますが、クラウド リソースとはみなされないため、IAM アクセス制御の対象ではありません。
このドキュメントでは、タグと IAM で管理されるタグが同じ意味で使用されています。
作成するアプリの概要
この Codelab は 2 つのパートに分かれています。最初のパートでは、単一の VPC ネットワークを使用するネットワーク ファイアウォール ポリシーとタグを示します。2 番目のパートでは、次の図に示すように、ピアリングされた VPC ネットワーク間でタグを使用する方法を示します。そのため、この Codelab では、単一のプロジェクトと複数の VPC ネットワークを作成できる必要があります。
学習内容
- ネットワーク ファイアウォール ポリシーを作成する方法
- ネットワーク ファイアウォール ポリシーでタグを作成して使用する方法
- VPC ネットワーク ピアリングでタグを使用する方法
必要なもの
- Google Cloud プロジェクト
- インスタンスのデプロイとネットワーク コンポーネントの構成に関する知識
- VPC ファイアウォールの構成に関する知識
2. 始める前に
変数の作成/更新
この Codelab では、$variables を使用して、Cloud Shell での gcloud 構成の実装を支援します。
Cloud Shell で次の操作を行います。
gcloud config set project [project-id] export project_id=`gcloud config list --format="value(core.project)"` export org_id=[org] export region=us-central1 export zone=us-central1-a export prefix=fwpolicy
3. VPC ネットワークとサブネットを作成する
VPC ネットワーク
fwpolicy-vpc1: を作成します。
gcloud compute networks create $prefix-vpc1 --subnet-mode=custom
サブネット
選択したリージョンにそれぞれのサブネットを作成します。
gcloud compute networks subnets create $prefix-vpc1-subnet \ --range=10.0.0.0/24 --network=$prefix-vpc1 --region=$region
Cloud NAT
fwpolicy-pc1 の Cloud Router と Cloud NAT ゲートウェイを作成します。
gcloud compute routers create $prefix-vpc1-cr \ --region=$region --network=$prefix-vpc1 gcloud compute routers nats create $prefix-vpc1-cloudnat \ --router=$prefix-vpc1-cr --router-region=$region \ --auto-allocate-nat-external-ips \ --nat-all-subnet-ip-ranges
4. インスタンスを作成する
IAP の設定の一部としてまだ定義されていない場合は、IAP 範囲からの上り(内向き)SSH トラフィックを許可するファイアウォール ルールを作成します。
gcloud compute firewall-rules create allow-ssh-ingress-from-iap-vpc1 \ --direction=INGRESS \ --action=allow \ --network=$prefix-vpc1 \ --rules=tcp:22 \ --source-ranges=35.235.240.0/20
fwpolicy-vpc1 クライアント インスタンスとウェブサーバー インスタンスを作成します。
gcloud compute instances create $prefix-vpc1-www \ --subnet=$prefix-vpc1-subnet --no-address --zone $zone \ --metadata startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl # Read VM network configuration: md_vm="http://169.254.169.254/computeMetadata/v1/instance/" vm_hostname="$(curl $md_vm/name -H "Metadata-Flavor:Google" )" filter="{print \$NF}" vm_network="$(curl $md_vm/network-interfaces/0/network \ -H "Metadata-Flavor:Google" | awk -F/ "${filter}")" vm_zone="$(curl $md_vm/zone \ -H "Metadata-Flavor:Google" | awk -F/ "${filter}")" # Apache configuration: echo "Page on $vm_hostname in network $vm_network zone $vm_zone" | \ tee /var/www/html/index.html systemctl restart apache2' gcloud compute instances create $prefix-vpc1-client \ --subnet=$prefix-vpc1-subnet --no-address --zone $zone
VPC ファイアウォール ルールが定義されておらず(このセクションの冒頭で IAP を構成するときに作成する必要がある SSH 許可ルールを除く)、デフォルトですべての上り(内向き)トラフィックが拒否されるため、クライアント インスタンスはそれぞれのウェブサーバーにアクセスできません。リクエストがタイムアウトすることを確認するには、新しいウィンドウを開き、fwpolicy-vpc1-client インスタンスへの SSH セッションを開始して、ウェブサーバーを curl します。
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
予想される出力:
curl: (28) Connection timed out after 2001 milliseconds
必要に応じて、Cloud Shell で fwpolicy-vpc1 に定義されている VPC ファイアウォール ルールがないことを確認します。
gcloud compute firewall-rules list --filter="network:$prefix-vpc1"
5. グローバル ネットワーク ファイアウォール ポリシー
グローバル ネットワーク ファイアウォール ポリシーを作成します。
gcloud compute network-firewall-policies create \ $prefix-example --description \ "firewall-policy-description" --global
ウェブ トラフィックを許可するルールを追加します。
gcloud compute network-firewall-policies rules create 500 \ --action allow \ --description "allow-web" \ --layer4-configs tcp:80,tcp:443 \ --firewall-policy $prefix-example \ --src-ip-ranges 10.0.0.0/16 \ --global-firewall-policy --enable-logging
ネットワーク ファイアウォール ポリシーの情報を取得し、ルールが正常に added
されたことを確認します。
gcloud compute network-firewall-policies describe \ $prefix-example --global
想定される出力(出力の先頭までスクロールします。暗黙的なルールも表示されます)。
creationTimestamp: '2022-09-23T12:46:53.677-07:00' description: "firewall-policy-description" fingerprint: Np1Rup09Amc= id: '7021772628738421698' kind: compute#firewallPolicy name: fwpolicy-example ruleTupleCount: 13 rules: - action: allow description: allow-web direction: INGRESS disabled: false enableLogging: true kind: compute#firewallPolicyRule match: layer4Configs: - ipProtocol: tcp ports: - '80' - ipProtocol: tcp ports: - '443' srcIpRanges: - 10.0.0.0/16 priority: 500 ruleTupleCount: 5 ...
ネットワーク ファイアウォール ポリシーを fwpolicy-vpc1 に関連付けます。
gcloud compute network-firewall-policies associations create \ --firewall-policy $prefix-example \ --network $prefix-vpc1 \ --name $prefix-vpc1-association \ --global-firewall-policy
fwpolicy-vpc1 ネットワークに正常に適用されたことを確認します。
gcloud compute networks get-effective-firewalls $prefix-vpc1
想定される出力(優先される階層型ファイアウォール ポリシーがある場合は、関連するルールが上部に表示されます)。
TYPE FIREWALL_POLICY_NAME PRIORITY ACTION DIRECTION IP_RANGES network-firewall-policy fwpolicy-example 500 ALLOW INGRESS 10.0.0.0/16 network-firewall-policy fwpolicy-example 2147483645 GOTO_NEXT INGRESS ::/0 network-firewall-policy fwpolicy-example 2147483647 GOTO_NEXT INGRESS 0.0.0.0/0 network-firewall-policy fwpolicy-example 2147483644 GOTO_NEXT EGRESS ::/0 network-firewall-policy fwpolicy-example 2147483646 GOTO_NEXT EGRESS 0.0.0.0/0
fwpolicy-vpc1 ウェブサーバーに正常に適用されていることを確認します。
gcloud compute instances network-interfaces \ get-effective-firewalls $prefix-vpc1-www --zone $zone
予想される出力は、前のコマンド(fwpolicy-vpc1 有効なファイアウォール)と同様です。
TYPE FIREWALL_POLICY_NAME PRIORITY ACTION DIRECTION IP_RANGES network-firewall-policy fwpolicy-example 500 ALLOW INGRESS 10.0.0.0/16 network-firewall-policy fwpolicy-example 2147483645 GOTO_NEXT INGRESS ::/0 network-firewall-policy fwpolicy-example 2147483647 GOTO_NEXT INGRESS 0.0.0.0/0 network-firewall-policy fwpolicy-example 2147483644 GOTO_NEXT EGRESS ::/0 network-firewall-policy fwpolicy-example 2147483646 GOTO_NEXT EGRESS 0.0.0.0/0
vpc1-client SSH セッションに戻り、curl をもう一度試します(以下のコマンドは、fwpolicy
が接頭辞として使用されていることを前提としています。別の名前が使用されている場合は、curl
コマンドを適宜調整してください)。
user@vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2 Page on vpc1-www in network vpc1 zone us-central1-a
Cloud Shell で、ネットワーク ファイアウォール ポリシーが fwpolicy-vpc1 に適用されていることを確認します。
gcloud compute network-firewall-policies describe \ $prefix-example --global
想定される出力(出力の先頭までスクロールアップ):
--- associations: - attachmentTarget: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/fwpolicy-vpc1 name: fwpolicy-vpc1-association ...
6. IAM によって管理されるタグ
タグとは、組織、フォルダ、プロジェクトに付加できる Key-Value ペアのことです。詳細については、タグの作成と管理と必要な権限をご覧ください。
tagAdmin ロールを使用すると、新しいタグの作成、既存のタグの更新や削除を行うことができます。このロールを付与できるのは組織管理者です。Cloud Shell で、IAM ポリシーを更新して、ユーザーに tagAdmin ロールを追加します。権限のリファレンス ページを使用して、各事前定義ロールに含まれる権限を確認します。
gcloud organizations add-iam-policy-binding $org_id \ --member user:[user@example.com] --role roles/resourcemanager.tagAdmin
次のコマンドを実行して、resourcemanager.tagAdmin ロールを持つユーザーを確認します。
gcloud organizations get-iam-policy $org_id --flatten=bindings \ --filter=bindings.role:roles/resourcemanager.tagAdmin
新しいタグキーを作成します。
gcloud resource-manager tags keys create tags-vpc1 \ --parent organizations/$org_id \ --purpose GCE_FIREWALL \ --purpose-data network=$project_id/$prefix-vpc1
予想される出力:
Waiting for TagKey [tags-vpc1] to be created...done. createTime: '2022-09-23T20:49:01.162228Z' etag: PwvmFuHO4wK1y6c5Ut2n5w== name: tagKeys/622132302133 namespacedName: ORGANIZATION_ID/tags-vpc1 parent: organizations/ORGANIZATION_ID purpose: GCE_FIREWALL purposeData: network: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/6749205358365096383 shortName: tags-vpc1 updateTime: '2022-09-23T20:49:03.873776Z'
新しいタグ値を作成します。
gcloud resource-manager tags values create web-servers \ --parent=$org_id/tags-vpc1 gcloud resource-manager tags values create web-clients \ --parent=$org_id/tags-vpc1
タグ値が正常に作成されたことを確認します。
gcloud resource-manager tags values list \ --parent=$org_id/tags-vpc1
予想される出力:
NAME SHORT_NAME DESCRIPTION tagValues/349564376683 web-servers tagValues/780363571446 web-clients
Cloud Shell で既存のネットワーク ファイアウォール ポリシー ルールを記述し、タグが使用されていないことを確認します。
gcloud compute network-firewall-policies rules describe 500 \ --firewall-policy $prefix-example \ --global-firewall-policy
予想される出力:
--- action: allow description: allow-web direction: INGRESS disabled: false enableLogging: true kind: compute#firewallPolicyRule match: layer4Configs: - ipProtocol: tcp ports: - '80' - ipProtocol: tcp ports: - '443' srcIpRanges: - 10.0.0.0/16 priority: 500 ruleTupleCount: 5
Cloud Shell で、vpc1-tags/web-clients タグキーからのトラフィックのみを許可するようにルールを更新し、vpc1-tags/web-servers タグキーを持つインスタンスにルールをインストールします。
gcloud compute network-firewall-policies rules update 500 \ --firewall-policy $prefix-example \ --src-secure-tags $org_id/tags-vpc1/web-clients \ --target-secure-tags $org_id/tags-vpc1/web-servers \ --global-firewall-policy
Cloud Shell で既存のネットワーク ファイアウォール ポリシー ルールを記述し、タグが正常に適用され、有効と報告されていることを確認します。
gcloud compute network-firewall-policies rules describe 500 \ --firewall-policy $prefix-example \ --global-firewall-policy
予想される出力:
--- action: allow description: allow-web direction: INGRESS disabled: false enableLogging: false kind: compute#firewallPolicyRule match: layer4Configs: - ipProtocol: tcp ports: - '80' - ipProtocol: tcp ports: - '443' srcIpRanges: - 10.0.0.0/16 srcSecureTags: - name: tagValues/479619031616 state: EFFECTIVE priority: 500 ruleTupleCount: 7 targetSecureTags: - name: tagValues/230424970229 state: EFFECTIVE
Cloud Shell で、ルールが vpc1 に適用されていることを確認します。
gcloud compute networks get-effective-firewalls $prefix-vpc1
予想される出力:
network-firewall-policy fwpolicy-example 500 ALLOW INGRESS 10.0.0.0/16 network-firewall-policy fwpolicy-example 2147483645 GOTO_NEXT INGRESS ::/0 network-firewall-policy fwpolicy-example 2147483647 GOTO_NEXT INGRESS 0.0.0.0/0 network-firewall-policy fwpolicy-example 2147483644 GOTO_NEXT EGRESS ::/0 network-firewall-policy fwpolicy-example 2147483646 GOTO_NEXT EGRESS 0.0.0.0/0
ネットワーク ファイアウォール ポリシーが VPC ネットワークにまだ関連付けられているにもかかわらず、タグがインスタンスに追加されていないため、ウェブ トラフィックを許可するルールがウェブサーバーに適用されなくなったことを確認します。
gcloud compute instances network-interfaces \ get-effective-firewalls $prefix-vpc1-www --zone $zone
出力例(優先度 500 のファイアウォール ルールは表示されません):
network-firewall-policy fwpolicy-example 2147483645 GOTO_NEXT INGRESS ::/0 network-firewall-policy fwpolicy-example 2147483647 GOTO_NEXT INGRESS 0.0.0.0/0 network-firewall-policy fwpolicy-example 2147483644 GOTO_NEXT EGRESS ::/0 network-firewall-policy fwpolicy-example 2147483646 GOTO_NEXT EGRESS 0.0.0.0/0
特定のタグとユーザーにタグユーザーのロールを付与する。権限のリファレンス ページを使用して、各事前定義ロールに含まれる権限を確認します。
gcloud resource-manager tags keys add-iam-policy-binding \ $org_id/tags-vpc1 \ --member user:[email] --role roles/resourcemanager.tagUser gcloud projects add-iam-policy-binding $project_id \ --member user:[email] --role roles/resourcemanager.tagUser
ロールが正常に追加されたことを確認します。
gcloud resource-manager tags keys get-iam-policy $org_id/tags-vpc1 gcloud projects get-iam-policy $project_id --flatten=bindings \ --filter=bindings.role:roles/resourcemanager.tagUser
予想される出力:
bindings: - members: - user:[user] role: roles/resourcemanager.tagUser ...
タグを fwpolicy-vpc1-www インスタンスに適用します。
gcloud resource-manager tags bindings create \ --location $zone \ --tag-value $org_id/tags-vpc1/web-servers \ --parent \ //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-vpc1-www
予想される出力:
Waiting for TagBinding for parent [//compute.googleapis.com/projects/PROJECT_ID/zones/us-central1-a/instances/38369703403698502] and tag value [tagValues/34 9564376683] to be created with [operations/rctb.us-central1-a.6144808968019372877]...done. done: true metadata: '@type': type.googleapis.com/google.cloud.resourcemanager.v3.CreateTagBindingMetadata name: operations/rctb.us-central1-a.6144808968019372877 response: '@type': type.googleapis.com/google.cloud.resourcemanager.v3.TagBinding name: tagBindings/%2F%2Fcompute.googleapis.com%2Fprojects%2FPROJECT_NUMBER%2Fzones%2Fus-central1-a%2Finstances%2F38369703403698502/tagValues/349564376683 parent: //compute.googleapis.com/projects/PROJECT_NUMBER/zones/us-central1-a/instances/38369703403698502 tagValue: tagValues/349564376683
バインディングを確認します。
gcloud resource-manager tags bindings list --location $zone --effective --parent //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-vpc1-www
予想される出力:
namespacedTagKey: ORGANIZATION_ID/tags-vpc1 namespacedTagValue: ORGANIZATION_ID/tags-vpc1/web-servers tagKey: tagKeys/622132302133 tagValue: tagValues/349564376683
有効なファイアウォール ルールを再度確認します。
gcloud compute instances network-interfaces \ get-effective-firewalls $prefix-vpc1-www --zone $zone
予想される出力:
network-firewall-policy fwpolicy-example 490 ALLOW INGRESS 10.0.0.0/16 network-firewall-policy fwpolicy-example 2147483645 GOTO_NEXT INGRESS ::/0 network-firewall-policy fwpolicy-example 2147483647 GOTO_NEXT INGRESS 0.0.0.0/0 network-firewall-policy fwpolicy-example 2147483644 GOTO_NEXT EGRESS ::/0 network-firewall-policy fwpolicy-example 2147483646 GOTO_NEXT EGRESS 0.0.0.0/0
fwpolicy-vpc1-client SSH セッションのタブに戻り、curl を試みます。
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
接続できましたか?
これを確認するには、Cloud Shell でソース CIDR 条件を削除するようにルールを更新します。
gcloud compute network-firewall-policies rules update 500 \ --firewall-policy $prefix-example \ --src-ip-ranges "" \ --global-firewall-policy gcloud compute network-firewall-policies rules describe 500 \ --firewall-policy $prefix-example \ --global-firewall-policy action: allow description: allow-web direction: INGRESS disabled: false enableLogging: false kind: compute#firewallPolicyRule match: layer4Configs: - ipProtocol: tcp ports: - '80' - ipProtocol: tcp ports: - '443' srcSecureTags: - name: tagValues/479619031616 state: EFFECTIVE priority: 490 ruleTupleCount: 7 targetSecureTags: - name: tagValues/230424970229 state: EFFECTIVE
fwpolicy-vpc1-client SSH セッション タブに戻り、もう一度試行します。
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
タグが fwpolicy-vpc1-client に追加されていないため、今回は接続がタイムアウトします。Cloud Shell から追加して、もう一度お試しください。
gcloud resource-manager tags bindings create \ --location $zone \ --tag-value $org_id/tags-vpc1/web-clients \ --parent \ //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-vpc1-client
fwpolicy-vpc1-client SSH セッション タブに戻ってもう一度試すと、正常に完了します。
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
7. VPC ネットワーク ピアリングを介した IAM によって管理されるタグ
Cloud Shell で、新しい VPC、サブネット、クライアントを作成し、ネットワーク間の VPC ネットワーク ピアリングを設定します。
gcloud compute networks create $prefix-vpc2 --subnet-mode=custom gcloud compute networks subnets create $prefix-vpc2-subnet \ --range=10.0.1.0/24 --network=$prefix-vpc2 --region=$region gcloud compute instances create $prefix-vpc2-client \ --subnet=$prefix-vpc2-subnet --no-address --zone $zone gcloud compute networks peerings create vpc1-to-vpc2 \ --network=$prefix-vpc1 \ --peer-project $project_id \ --peer-network $prefix-vpc2 gcloud compute networks peerings create vpc2-to-vpc1 \ --network=$prefix-vpc2 \ --peer-project $project_id \ --peer-network $prefix-vpc1
IAP の設定の一部としてまだ定義されていない場合は、IAP 範囲からの上り(内向き)SSH トラフィックを許可するファイアウォール ルールを作成します。
gcloud compute firewall-rules create allow-ssh-ingress-from-iap-vpc2 \ --direction=INGRESS \ --action=allow \ --network=$prefix-vpc2 \ --rules=tcp:22 \ --source-ranges=35.235.240.0/20
タグは組織全体のオブジェクトですが、タグキーは特定の VPC に関連付けられているため、異なるネットワーク内のインスタンスには適用できません。したがって、vpc2 に適用される新しいタグキーと値を作成する必要があります。
gcloud resource-manager tags keys create tags-vpc2 \ --parent organizations/$org_id \ --purpose GCE_FIREWALL \ --purpose-data network=$project_id/$prefix-vpc2 gcloud resource-manager tags values create web-clients \ --parent=$org_id/tags-vpc2
新しいタグを fwpolicy-vpc2-client インスタンスに適用します。
gcloud resource-manager tags bindings create \ --location $zone \ --tag-value $org_id/tags-vpc2/web-clients \ --parent \ //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-vpc2-client
必要に応じて、fwpolicy-vpc2-client のバインディングを一覧表示します。
gcloud resource-manager tags bindings list --location $zone --effective --parent //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-vpc2-client
予想される出力:
namespacedTagKey: ORGANIZATION_ID/tags-vpc2 namespacedTagValue: ORGANIZATION_ID/tags-vpc2/web-clients tagKey: tagKeys/916316350251 tagValue: tagValues/633150043992
Cloud Shell で既存のネットワーク ファイアウォール ポリシー ルールを記述し、新しいタグが使用されていないことを確認します。
gcloud compute network-firewall-policies rules describe 500 \ --firewall-policy $prefix-example \ --global-firewall-policy
予想される出力:
--- action: allow description: allow-web direction: INGRESS disabled: false enableLogging: true kind: compute#firewallPolicyRule match: layer4Configs: - ipProtocol: tcp ports: - '80' - ipProtocol: tcp ports: - '443' srcSecureTags: - name: tagValues/479619031616 state: EFFECTIVE priority: 500 ruleTupleCount: 6 targetSecureTags: - name: tagValues/230424970229 state: EFFECTIVE
ピアリングされた VPC ネットワークのタグを許可するように、既存のファイアウォール ルールを更新します。
gcloud compute network-firewall-policies rules update 500 \ --firewall-policy $prefix-example \ --src-secure-tags $org_id/tags-vpc1/web-clients,$org_id/tags-vpc2/web-clients \ --global-firewall-policy
ファイアウォール ルールを記述して、正常に適用され、有効と報告されていることを確認します。
gcloud compute network-firewall-policies rules describe 500 \ --firewall-policy $prefix-example \ --global-firewall-policy
予想される出力:
--- action: allow description: allow-web direction: INGRESS disabled: false enableLogging: false kind: compute#firewallPolicyRule match: layer4Configs: - ipProtocol: tcp ports: - '80' - ipProtocol: tcp ports: - '443' srcSecureTags: - name: tagValues/479619031616 state: EFFECTIVE - name: tagValues/633150043992 state: EFFECTIVE priority: 500 ruleTupleCount: 7 targetSecureTags: - name: tagValues/230424970229 state: EFFECTIVE
次の gcloud コマンドを使用して、fwpolicy-vpc1-www の IP を確認します。
gcloud compute instances list --filter=vpc1-www
SSH を使用して fwpolicy-vpc2-client に接続し、fwpolicy-vpc1 の IP を curl してみます。
user@fwpolicy-vpc2-client$ curl [fwpolicy-vpc1-www_IP] --connect-timeout 2
fwpolicy-vpc1-www サーバーに接続できるはずです。クリーンアップの手順については、次のセクションに進んでください。
8. クリーンアップ手順
Cloud Shell で、インスタンス、Cloud NAT、Cloud Router を削除します。
gcloud -q compute instances delete $prefix-vpc2-client --zone=$zone gcloud -q compute instances delete $prefix-vpc1-client --zone=$zone gcloud -q compute instances delete $prefix-vpc1-www --zone=$zone gcloud -q compute routers nats delete $prefix-vpc1-cloudnat \ --router=$prefix-vpc1-cr --router-region=$region gcloud -q compute routers delete $prefix-vpc1-cr --region=$region
グローバル ネットワーク ファイアウォール ポリシーとタグを削除します。
gcloud -q resource-manager tags values delete \ $org_id/tags-vpc2/web-clients gcloud -q resource-manager tags keys delete $org_id/tags-vpc2 gcloud -q resource-manager tags values delete \ $org_id/tags-vpc1/web-servers gcloud -q resource-manager tags values delete \ $org_id/tags-vpc1/web-clients gcloud -q resource-manager tags keys delete $org_id/tags-vpc1 gcloud -q compute network-firewall-policies associations delete \ --firewall-policy $prefix-example \ --name $prefix-vpc1-association \ --global-firewall-policy gcloud -q compute network-firewall-policies delete \ $prefix-example --global gcloud -q compute firewall-rules delete allow-ssh-ingress-from-iap-vpc1 gcloud -q compute firewall-rules delete allow-ssh-ingress-from-iap-vpc2
tagAdmin と tagUsers のロールが変更された場合は、次の手順を行います。
gcloud organizations remove-iam-policy-binding $org_id \ --member user:[email] --role roles/resourcemanager.tagAdmin gcloud organizations remove-iam-policy-binding $org_id \ --member user:[email] --role roles/resourcemanager.tagUser
最後に、VPC ネットワーク ピアリング、サブネット、VPC ネットワークを削除します。
gcloud -q compute networks peerings delete vpc1-to-vpc2 \ --network $prefix-vpc1 gcloud -q compute networks peerings delete vpc2-to-vpc1 \ --network $prefix-vpc2 gcloud -q compute networks subnets delete $prefix-vpc1-subnet \ --region $region gcloud -q compute networks subnets delete $prefix-vpc2-subnet \ --region $region gcloud -q compute networks delete $prefix-vpc1 gcloud -q compute networks delete $prefix-vpc2
9. 完了
これで、タグ構成を使用してグローバル ネットワーク ファイアウォール ポリシーを正常に構成して検証できました。