リソースにタグをバインドする前、またはネットワーク ファイアウォール ポリシーでタグを使用する前に、タグを作成する必要があります。ネットワーク アクセスを制御するため、タグは VM インスタンスにバインドされた場合にのみ有効になります。
概要については、ファイアウォールのタグをご覧ください。
タグに権限を付与する
tagAdmin
ロールを使用すると、新しいタグの作成、既存のタグの更新や削除を行うことができます。組織管理者は組織レベルでこのロールを付与でき、プロジェクト オーナーはプロジェクト レベルでこのロールを付与できます。
gcloud
ユーザーに
tagAdmin
ロールを付与します。gcloud organizations add-iam-policy-binding ORGANIZATION_ID \ --member=user:EMAIL_ADDRESS \ --role=roles/resourcemanager.tagAdmin
次のように置き換えます。
ORGANIZATION_ID
: 組織の IDEMAIL_ADDRESS
: ユーザーのメールアドレス
ユーザーに
tagUser
ロールを付与します。gcloud resource-manager tags keys add-iam-policy-binding ORGANIZATION_ID/TAG_KEY \ --member=user:EMAIL_ADDRESS \ --role=roles/resourcemanager.tagUser
次のように置き換えます。
ORGANIZATION_ID
: 組織の IDTAG_KEY
: タグキーEMAIL_ADDRESS
: ユーザーのメールアドレス
タグを管理するためのカスタムロール
tagAdmin
ロールを使用すると、新しいタグの作成、既存のタグの更新や削除を行うことができます。これらの機能の一部が必要な場合は、関連する権限を含む IAM カスタムロールを作成して、新しいロールを対象ユーザーに付与できます。関連する権限のリストについては、IAM 権限をご覧ください。
ファイアウォール ポリシーで使用されるタグは、GCE_FIREWALL の目的を指定する必要があります。タグをネットワーク機能で使用するには GCE_FIREWALL の目的が必要ですが、そのタグは他のアクションにも使用できます。
ネットワーク ファイアウォール ポリシーで使用されるタグのスコープは、単一の VPC に制限する必要があります。
タグキーと値を作成する
タグをネットワーク ファイアウォール ポリシーに関連付ける前に、タグのキーと値を作成する必要があります。
gcloud
必要な権限を取得したら、タグキーを作成します。
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
: 組織の IDPROJECT_ID
: プロジェクトの IDNETWORK
: ネットワークの名前
関連するタグの値をタグキーに追加します。複数の値を追加するには、このコマンドを複数回実行します。タグキーに追加された各タグ値が一意であることを確認してください。
gcloud resource-manager tags values create TAG_VALUE \ --parent ORGANIZATION_ID/TAG_KEY
次のように置き換えます。
ORGANIZATION_ID
: 組織の IDTAG_KEY
: タグキーTAG_VALUE
: タグキーに割り当てる値
ネットワーク ファイアウォール ポリシーを作成する
タグを作成したら、そのタグをネットワーク ファイアウォール ポリシーで使用できます。既存のネットワーク ファイアウォール ポリシーがない場合は、新しいポリシーを作成します。
gcloud
ネットワーク ファイアウォール ポリシーを作成します。
gcloud compute network-firewall-policies create \ FIREWALL_POLICY_NAME \ --global
次のように置き換えます。
FIREWALL_POLICY_NAME
: 新しいネットワークのグローバル ネットワーク ファイアウォール ポリシーの名前
タグを使用してファイアウォール ポリシー ルールを作成する
タグとネットワーク ファイアウォール ポリシーを作成した後、特定のソースタグ値とターゲットタグ値を使用してネットワーク ファイアウォール ポリシー ルールを作成できます。これにより、ソースタグと宛先タグを使用して VM 間で目的のトラフィックを許可できます。
gcloud
特定のソースとターゲットのキーと値を使用して、ネットワーク ファイアウォール ポリシー ルールを作成します。
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
: 組織の IDTAG_KEY
: タグキーTAG_VALUE
: タグキーに割り当てる値DIRECTION
: ルールがingress
ルールまたはegress
ルールのどちらであるかを示します。ACTION
: 次のいずれかのアクション。allow
: ルールに一致する接続を許可します。deny
: ルールに一致する接続を拒否します。goto_next
: 接続評価を階層内の次のレベル(フォルダまたはネットワーク)に渡します。
PORT
: リソースにアクセスするためのポート番号
タグを VM インスタンスにバインドする
タグ管理者は、タグを個々の VM インスタンスにバインドできます。
タグをリソースにバインドすると、リソースにタグ値が適用されます。1 つのタグで、特定のキーに複数の値を設定できますが、リソースにバインドできるのはタグキーごとに 1 つの値のみです。たとえば、両方をバインドすることはできません。同じ VM インスタンスにタグ値として web-backend と mysql の両方をバインドすることはできません。これらのタグ値は同じタグキーの vm-function に属しています。
たとえば、デベロッパーである Sasha が、API バックエンドとバッキング データベース ストアで構成されるアプリケーションを設定するとします。バックエンドとデータベース サーバーの間のトラフィックを許可するには、Sasha は、web-backend と mysql タグの値を別の VM にバインドする必要があります。
gcloud
tagUser
ロールを付与します。gcloud resource-manager tags keys add-iam-policy-binding ORGANIZATION_ID/TAG_KEY \ --member=user:EMAIL_ADDRESS \ --role=roles/resourcemanager.tagUser
次のように置き換えます。
ORGANIZATION_ID
: 組織の IDTAG_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
: 組織の IDTAG_KEY
: タグキーTAG_VALUE
: タグキーに割り当てる値EMAIL_ADDRESS
: ユーザーのメールアドレス
タグをバインドするリソースに
tagUser
ロールを付与します。gcloud projects add-iam-policy-binding PROJECT_ID \ --member=user:EMAIL_ADDRESS \ --role=roles/resourcemanager.tagUser
次のように置き換えます。
PROJECT_ID
: プロジェクトのプロジェクト IDEMAIL_ADDRESS
: ユーザーのメールアドレス
タグの Key-Value ペアの
PARENT
の値を取得します。プロジェクトとゾーンの完全な名前の接頭辞を定義します。
FULL_NAME_PREFIX=//compute.googleapis.com/projects/PROJECT_NUMBER/zones/ZONE/instances/
VM ID を取得します。
VM_ID=$(gcloud compute instances describe VM_NAME --zone ZONE--format='value(id)')
FULL_NAME_PREFIX
とVM_ID
の値を連結します。PARENT="$FULL_NAME_PREFIX$VM_ID" echo $PARENT
次のように置き換えます。
PROJECT_NUMBER
: プロジェクトの数ZONE
: VM が配置されているゾーン。VM_NAME
: 作業中の VM の名前
バインディングを一覧表示します。
gcloud resource-manager tags bindings list \ --location LOCATION_NAME \ --parent PARENT
次のように置き換えます。
LOCATION_NAME
: タグが属するロケーション(ここでは VM インスタンスのゾーン)PARENT
: バインディングに関連付けられている完全なリソース名(前のコマンドで取得したもの)
バインディングを削除して作成します。
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
: 組織の IDTAG_KEY
: タグキーTAG_VALUE
: タグキーの値PARENT
: タグ値に関連付けるリソースの完全なリソース名
ピアリングされるネットワーク間でタグを使用する
タグはネットワーク ピアリングで使用できます。ピアリングされた 2 つのネットワークでタグを使用するには、次の処理を順番に行います。
- 2 人のユーザー(各ピア ネットワークに 1 人のユーザー)に
tagAdmin
ロールを割り当てます。組織管理者は組織レベルでユーザーにtagAdmin
ロールを付与し、プロジェクト オーナーはプロジェクト レベルでこのロールを付与できます。 - 最初のネットワーク ユーザーが、最初のネットワークにタグキーと値を作成します。
- 2 番目のネットワーク ユーザーが、2 番目のネットワークにタグキーと値を作成します。
- 両方のネットワークにタグをバインドするため、両方のユーザーに必要な権限を割り当てます。
- 最初のネットワークのユーザーとリソースにタグをバインドします。
- 2 番目のネットワークのユーザーとリソースにタグをバインドします。
- 2 番目のネットワークのユーザーに、最初のネットワークの
tagUser
権限を付与します。 - 最初のネットワークのユーザーに、2 番目のネットワークの
tagUser
権限を付与します。 - 最初のネットワークにファイアウォール ポリシールールを作成します。
- 2 番目のネットワークにファイアウォール ポリシールールを作成します。
次のステップ
- タグの作成の詳細については、タグの作成と管理をご覧ください。