ネットワーク タグとサービス アカウントを使用する VPC ファイアウォール ルールを移行する

Virtual Private Cloud(VPC)ファイアウォール ルールには、ネットワーク タグとソース サービス アカウントを含めることができます。次のタスクを実行して、ネットワーク タグとソース サービス アカウントを含む VPC ファイアウォール ルールをグローバル ネットワーク ファイアウォール ポリシーに移行します。

  1. 環境を評価します
  2. 既存のネットワーク タグとサービス アカウントを一覧表示します
  3. それぞれのネットワーク タグとソース サービス アカウントにタグを作成します
  4. 作成したタグにネットワーク タグとサービス アカウントをマッピングします
  5. タグを仮想マシン(VM)インスタンスにバインドします
  6. VPC ファイアウォール ルールをグローバル ネットワーク ファイアウォール ポリシーに移行します
  7. 新しいネットワーク ファイアウォール ポリシーを確認します
  8. 移行後のタスクを完了します

始める前に

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine API.

    Enable the API

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Make sure that billing is enabled for your Google Cloud project.

  9. Enable the Compute Engine API.

    Enable the API

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    gcloud init
  12. Compute セキュリティ管理者のロールroles/compute.securityAdmin)があることを確認します。

環境を評価する

VPC ファイアウォール ルールをグローバル ネットワーク ファイアウォール ポリシーに移行する前に、既存の環境と Identity and Access Management(IAM)のロールと権限を評価します。

  1. VPC ネットワーク内の VPC ファイアウォール ルールの数を確認します。
  2. 各 VPC ファイアウォール ルールに関連付けられている優先度をメモします。
  3. グローバル ネットワーク ファイアウォール ポリシーの作成、関連付け、変更、表示に必要な IAM ロールと権限があることを確認します。
  4. セキュアタグの定義の作成、更新、削除に必要な IAM ロールと権限があることを確認します。

    次の表に、タグの作成と管理に必要なロールの概要を示します。

    ロール名 実行されるタスク
    タグ管理者ロールroles/resourcemanager.tagAdmin タグの定義を作成、更新、削除します。詳細については、タグを管理するをご覧ください。
    タグ閲覧者ロールroles/resourcemanager.tagViewer リソースに適用されているタグの定義とタグを表示します。
    タグユーザー ロールroles/resourcemanager.tagUser リソースに適用されているタグを追加または削除します。

既存のネットワーク タグとサービス アカウントを一覧表示する

VPC ファイアウォール ルールでネットワーク タグまたはサービス アカウントが使用されているかどうかを判断し、JSON ファイルを作成して、既存のネットワーク タグとサービス アカウントの詳細を保存します。

ネットワーク内のネットワーク タグとサービス アカウントをマッピング用の JSON ファイルにエクスポートするには、--export-tag-mapping フラグを指定して compute firewall-rules migrate コマンドを実行します。

gcloud beta compute firewall-rules migrate \
    --source-network=NETWORK_NAME \
    --export-tag-mapping \
    --tag-mapping-file=TAG_MAPPING_FILE

次のように置き換えます。

  • NETWORK_NAME: 移行する VPC ファイアウォール ルールを含む VPC ネットワークの名前。
  • TAG_MAPPING_FILE: マッピング用の JSON ファイルの名前。

VPC ファイアウォール ルールにサービス アカウントのみが含まれている場合、生成された JSON ファイルにはサービス アカウントのみが含まれます。同様に、VPC ファイアウォール ルールにネットワーク タグのみが含まれている場合、生成された JSON ファイルにはネットワーク タグのみが含まれます。サービス アカウントには接頭辞 sa が付加され、ネットワーク タグには接頭辞が付加されません。

たとえば、次の生成された JSON ファイルには、ネットワーク タグ sql-server とサービス アカウント example@example.com が含まれています。

{"network-tag-1": null, "sa:service@account1.com": null}

タグを作成する

マッピング ファイルに記述したネットワーク タグとソース サービス アカウントに基づいて、ネットワークで対応するセキュアタグを作成する必要があります。

新しいセキュアタグは、ネットワーク タグとサービス アカウントの代わりとして機能し、移行後も元のネットワーク構成を保持します。

タグ管理者ロールを持つプリンシパルとして、ネットワーク タグとサービス アカウントごとに、対応するセキュアタグの Key-Value ペアを作成します。

gcloud resource-manager tags keys create TAG_KEY \
    --parent organizations/ORGANIZATION_ID \
    --purpose GCE_FIREWALL \
    --purpose-data network=PROJECT_ID/NETWORK_NAME

gcloud resource-manager tags values create TAG_VALUE \
    --parent ORGANIZATION_ID/TAG_KEY

次のように置き換えます。

  • TAG_KEY: タグキーの名前。
  • ORGANIZATION_ID: 組織の ID。
  • PROJECT_ID: オブジェクトの ID。
  • NETWORK_NAME: VPC ネットワークの名前。
  • TAG_VALUE: タグキーに割り当てる値。

たとえば、sql-server というネットワーク タグを含む VPC ファイアウォール ルールがある場合は、対応するセキュアタグの sql-server:production の Key-Value ペアを作成します。

gcloud resource-manager tags keys create sql-server \
    --parent organizations/123456 \
    --purpose GCE_FIREWALL \
    --purpose-data network=test-project/test-network

gcloud resource-manager tags values create production \
   --parent 123456/sql-server

ネットワーク タグとサービス アカウントをタグにマッピングする

VPC ファイアウォール ルールで使用される各ネットワーク タグとサービス アカウントに IAM 管理のセキュアタグを作成したら、マッピング用の JSON ファイルで、対応するネットワーク タグとサービス アカウントにタグをマッピングする必要があります。

JSON ファイルを編集して、ネットワーク タグとサービス アカウントを対応するセキュアタグにマッピングします。

{"sql-server": "tagValues/yyyyy", "sa:example@example.com": "tagValues/zzzzz"}

たとえば、次の JSON ファイルは、ネットワーク タグ sql-server をキー sql-server のタグ値に、サービス アカウント example@example.com をキー example@example.com のタグ値にマッピングしています。

{"sql-server": "tagValues/production", "sa:example@example.com": "tagValues/example"}

タグを VM にバインドする

タグマッピングの JSON ファイルに基づいて、既存のネットワーク タグが接続されている VM に新しく作成されたセキュアタグをバインドします。

  1. タグ管理者ロールを持つプリンシパルが次の操作を行います。

    1. Google Cloud リソースにセキュアタグを適用するために必要な権限を確認します。
    2. セキュアタグを使用して VM にタグをバインドするプリンシパルにタグユーザーのロールを割り当てます
  2. タグユーザー ロールを持つプリンシパルとして、--bind-tags-to-instances フラグを指定して compute firewall-rules migrate コマンドを使用します。

    gcloud beta compute firewall-rules migrate \
       --source-network=NETWORK_NAME \
       --bind-tags-to-instances \
       --tag-mapping-file=TAG_MAPPING_FILE
    

    次のように置き換えます。

    • NETWORK_NAME: VPC ネットワークの名前。
    • TAG_MAPPING_FILE: マッピング用の JSON ファイルの名前。

VPC ファイアウォール ルールをグローバル ネットワーク ファイアウォール ポリシーに移行する

VPC ファイアウォール ルールをグローバル ネットワーク ファイアウォール ポリシーに移行します。compute-firewall-rules migrate コマンドを使用します。

gcloud beta compute firewall-rules migrate \
    --source-network=NETWORK_NAME \
    --target-firewall-policy=POLICY_NAME \
    --tag-mapping-file=TAG_MAPPING_FILE

次のように置き換えます。

  • NETWORK_NAME: 移行する VPC ファイアウォール ルールを含む VPC ネットワークの名前。
  • POLICY_NAME: 移行中に作成するグローバル ネットワーク ファイアウォール ポリシーの名前。

新しいグローバル ネットワーク ファイアウォール ポリシーを確認する

新しく作成したポリシーを VPC ネットワークに関連付ける前に、ポリシーを確認して移行プロセスが正確に完了していることを確認することをおすすめします。

次のことを確認します。

  • ファイアウォール ポリシー ルールの構成が正しく、次のルール コンポーネントが各ルールに正しく移行されている。

    • 相対的な優先度
    • トラフィックの方向
    • 一致したときのアクション
    • ログの設定
    • ターゲット パラメータ
    • 送信元パラメータ(上り(内向き)ルール用)
    • 宛先パラメータ(下り(外向き)ルール用)
    • プロトコルとポートの制約
  • セキュアタグが正しい VM に接続されているかどうかを確認します。resource-manager tags bindings list コマンドを使用します。

    gcloud resource-manager tags bindings list \
        --location=ZONE_ID \
        --parent //compute.googleapis.com/projects/PROJECT_ID/zones/ZONE_ID/instances/INSTANCE_NAME \
        --effective
    

    次のように置き換えます。

    • ZONE_ID: VM のゾーン。
    • PROJECT_ID: オブジェクトの ID。
    • INSTANCE_NAME: VM の名前。

移行後のタスク

新しいグローバル ネットワーク ファイアウォール ポリシーを有効にして使用するには、移行後のタスクを完了します。詳細については、移行後のタスクをご覧ください。

次のステップ