ファイアウォールにタグを使用する

リソースにタグをバインドする前、またはネットワーク ファイアウォール ポリシーでタグを使用する前に、タグを作成する必要があります。ネットワーク アクセスを制御するため、タグは VM インスタンスにバインドされた場合にのみ有効になります。

概要については、ファイアウォールのタグをご覧ください。

タグに権限を付与する

tagAdmin ロールを使用すると、新しいタグの作成、既存のタグの更新や削除を行うことができます。組織管理者は組織レベルでこのロールを付与でき、プロジェクト オーナーはプロジェクト レベルでこのロールを付与できます。

gcloud

  1. ユーザーに tagAdmin ロールを付与します。

    gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
       --member=user:EMAIL_ADDRESS \
       --role=roles/resourcemanager.tagAdmin
    

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

    • ORGANIZATION_ID: 組織の ID
    • EMAIL_ADDRESS: ユーザーのメールアドレス
  2. ユーザーに tagUser ロールを付与します。

    gcloud resource-manager tags keys add-iam-policy-binding ORGANIZATION_ID/TAG_KEY \
       --member=user:EMAIL_ADDRESS \
       --role=roles/resourcemanager.tagUser
    

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

    • ORGANIZATION_ID: 組織の ID
    • TAG_KEY: タグキー
    • EMAIL_ADDRESS: ユーザーのメールアドレス

タグを管理するためのカスタムロール

tagAdmin ロールを使用すると、新しいタグの作成、既存のタグの更新や削除を行うことができます。これらの機能の一部が必要な場合は、関連する権限を含む IAM カスタムロールを作成して、新しいロールを対象ユーザーに付与できます。関連する権限のリストについては、IAM 権限をご覧ください。

ファイアウォール ポリシーで使用されるタグは、GCE_FIREWALL の目的を指定する必要があります。タグをネットワーク機能で使用するには GCE_FIREWALL の目的が必要ですが、そのタグは他のアクションにも使用できます。

ネットワーク ファイアウォール ポリシーで使用されるタグのスコープは、単一の VPC に制限する必要があります。

タグキーと値を作成する

タグをネットワーク ファイアウォール ポリシーに関連付ける前に、タグのキーと値を作成する必要があります。

gcloud

  1. 必要な権限を取得したら、タグキーを作成します。

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

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

    • TAG_KEY: タグキー
    • ORGANIZATION_ID: 組織の ID
    • PROJECT_ID: プロジェクトの ID
    • NETWORK: ネットワークの名前
  2. 関連するタグの値をタグキーに追加します。複数の値を追加するには、このコマンドを複数回実行します。タグキーに追加された各タグ値が一意であることを確認してください。

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

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

    • ORGANIZATION_ID: 組織の ID
    • TAG_KEY: タグキー
    • TAG_VALUE: タグキーに割り当てる値

ネットワーク ファイアウォール ポリシーを作成する

タグを作成したら、そのタグをネットワーク ファイアウォール ポリシーで使用できます。既存のネットワーク ファイアウォール ポリシーがない場合は、新しいポリシーを作成します。

gcloud

  1. ネットワーク ファイアウォール ポリシーを作成します。

    gcloud compute network-firewall-policies create \
       FIREWALL_POLICY_NAME \
       --global
    

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

    • FIREWALL_POLICY_NAME: 新しいネットワークのグローバル ネットワーク ファイアウォール ポリシーの名前

タグを使用してファイアウォール ポリシー ルールを作成する

タグとネットワーク ファイアウォール ポリシーを作成した後、特定のソースタグ値とターゲットタグ値を使用してネットワーク ファイアウォール ポリシー ルールを作成できます。これにより、ソースタグと宛先タグを使用して VM 間で目的のトラフィックを許可できます。

gcloud

  1. 特定のソースとターゲットのキーと値を使用して、ネットワーク ファイアウォール ポリシー ルールを作成します。

    gcloud compute network-firewall-policies rules create 1 \
        --firewall-policy FIREWALL_POLICY_NAME \
        --src-secure-tags ORGANIZATION_ID/TAG_KEY/TAG_VALUE \
        --target-secure-tags ORGANIZATION_ID/TAG_KEY/TAG_VALUE \
        --direction DIRECTION \
        --action ACTION \
        --layer4-configs tcp:PORT \
        --global-firewall-policy
    

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

    • FIREWALL_POLICY_NAME: 新しいネットワークのグローバル ネットワーク ファイアウォール ポリシーの名前
    • ORGANIZATION_ID: 組織の ID
    • TAG_KEY: タグキー
    • TAG_VALUE: タグキーに割り当てる値
    • DIRECTION: ルールが ingress ルールまたは egress ルールのどちらであるかを示します。
    • ACTION: 次のいずれかのアクション。
      • allow: ルールに一致する接続を許可します。
      • deny: ルールに一致する接続を拒否します。
      • goto_next: 接続評価を階層内の次のレベル(フォルダまたはネットワーク)に渡します。
    • PORT: リソースにアクセスするためのポート番号

タグを VM インスタンスにバインドする

タグ管理者は、タグを個々の VM インスタンスにバインドできます。

タグをリソースにバインドすると、リソースにタグ値が適用されます。1 つのタグで、特定のキーに複数の値を設定できますが、リソースにバインドできるのはタグキーごとに 1 つの値のみです。たとえば、両方をバインドすることはできません。同じ VM インスタンスにタグ値として web-backendmysql の両方をバインドすることはできません。これらのタグ値は同じタグキーの vm-function に属しています。

たとえば、デベロッパーである Sasha が、API バックエンドとバッキング データベース ストアで構成されるアプリケーションを設定するとします。バックエンドとデータベース サーバーの間のトラフィックを許可するには、Sasha は、web-backendmysql タグの値を別の VM にバインドする必要があります。

gcloud

  1. tagUser ロールを付与します。

    gcloud resource-manager tags keys add-iam-policy-binding ORGANIZATION_ID/TAG_KEY \
       --member=user:EMAIL_ADDRESS \
       --role=roles/resourcemanager.tagUser
    

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

    • ORGANIZATION_ID: 組織の ID
    • TAG_KEY: タグキー
    • EMAIL_ADDRESS: ユーザーのメールアドレス

    このコマンドでは、キーの現在と将来のすべての値を使用する権限をユーザーに付与します。次のように、タグの特定の値に対してのみアクセスを許可することもできます。

    gcloud resource-manager tags values add-iam-policy-binding ORGANIZATION_ID/TAG_KEY/TAG_VALUE \
       --member=user:EMAIL_ADDRESS \
       --role=roles/resourcemanager.tagUser
    

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

    • ORGANIZATION_ID: 組織の ID
    • TAG_KEY: タグキー
    • TAG_VALUE: タグキーに割り当てる値
    • EMAIL_ADDRESS: ユーザーのメールアドレス
  2. タグをバインドするリソースに tagUser ロールを付与します。

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --member=user:EMAIL_ADDRESS \
       --role=roles/resourcemanager.tagUser
    

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

    • PROJECT_ID: プロジェクトのプロジェクト ID
    • EMAIL_ADDRESS: ユーザーのメールアドレス
  3. タグの Key-Value ペアの PARENT の値を取得します。

    1. プロジェクトとゾーンの完全な名前の接頭辞を定義します。

      FULL_NAME_PREFIX=//compute.googleapis.com/projects/PROJECT_NUMBER/zones/ZONE/instances/
      
    2. VM ID を取得します。

      VM_ID=$(gcloud compute instances describe VM_NAME --zone ZONE--format='value(id)')
      
    3. FULL_NAME_PREFIXVM_ID の値を連結します。

      PARENT="$FULL_NAME_PREFIX$VM_ID"
      echo $PARENT
      

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

    • PROJECT_NUMBER: プロジェクトの数
    • ZONE: VM が配置されているゾーン。
    • VM_NAME: 作業中の VM の名前
  4. バインディングを一覧表示します。

    gcloud resource-manager tags bindings list \
       --location LOCATION_NAME \
       --parent PARENT
    

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

    • LOCATION_NAME: タグが属するロケーション(ここでは VM インスタンスのゾーン)
    • PARENT: バインディングに関連付けられている完全なリソース名(前のコマンドで取得したもの)
  5. バインディングを削除して作成します。

    gcloud resource-manager tags bindings delete \
       --location LOCATION_NAME \
       --tag-value ORGANIZATION_ID/TAG_KEY/TAG_VALUE \
       --parent PARENT
    
    gcloud resource-manager tags bindings create \
       --location LOCATION_NAME \
       --tag-value ORGANIZATION_ID/TAG_KEY/TAG_VALUE \
       --parent PARENT
    

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

    • LOCATION_NAME: タグが属するロケーション
    • ORGANIZATION_ID: 組織の ID
    • TAG_KEY: タグキー
    • TAG_VALUE: タグキーの値
    • PARENT: タグ値に関連付けるリソースの完全なリソース名

ピアリングされるネットワーク間でタグを使用する

タグはネットワーク ピアリングで使用できます。ピアリングされた 2 つのネットワークでタグを使用するには、次の処理を順番に行います。

  1. 2 人のユーザー(各ピア ネットワークに 1 人のユーザー)に tagAdmin ロールを割り当てます。組織管理者は組織レベルでユーザーに tagAdmin ロールを付与し、プロジェクト オーナーはプロジェクト レベルでこのロールを付与できます。
  2. 最初のネットワーク ユーザーが、最初のネットワークにタグキーと値を作成します。
  3. 2 番目のネットワーク ユーザーが、2 番目のネットワークにタグキーと値を作成します。
  4. 両方のネットワークにタグをバインドするため、両方のユーザーに必要な権限を割り当てます
  5. 最初のネットワークのユーザーとリソースにタグをバインドします。
  6. 2 番目のネットワークのユーザーとリソースにタグをバインドします。
  7. 2 番目のネットワークのユーザーに、最初のネットワークの tagUser 権限を付与します。
  8. 最初のネットワークのユーザーに、2 番目のネットワークの tagUser 権限を付与します。
  9. 最初のネットワークにファイアウォール ポリシールールを作成します。
  10. 2 番目のネットワークにファイアウォール ポリシールールを作成します。

次のステップ