このページは、階層型ファイアウォール ポリシーの概要で説明されているコンセプトを理解していることを前提としています。階層型ファイアウォール ポリシーの実装例については、階層型ファイアウォール ポリシーの例をご覧ください。
制限事項
- 階層型ファイアウォール ポリシーのルールでは、上り(内向き)ルールのソースを定義するのに、IP 範囲のみが使用できます。ソースタグとソースサービス アカウントは、VPC ファイアウォール ルールでのみサポートされます。
- 階層型ファイアウォール ポリシーのルールでは、ターゲットの定義にネットワーク タグを使用することはサポートされていません。代わりに、ターゲット VPC ネットワークまたはターゲット サービス アカウントを使用する必要があります。
- ファイアウォール ポリシーは、フォルダレベルと組織レベルで適用されますが、VPC ネットワーク レベルでは適用されません。通常の VPC ファイアウォール ルールは VPC ネットワークでサポートされています。
- ノード(フォルダまたは組織)に関連付けることができるファイアウォール ポリシーは 1 つだけですが、フォルダの下の仮想マシン(VM)インスタンスは VM を越えてノードの階層全体からルールを継承できます。
- ファイアウォール ルールのロギングは、
allow
ルールとdeny
ルールではサポートされますが、goto_next
ルールではサポートされません。 - IPv6 アドレスはサポートされません。
ファイアウォール ポリシーのタスク
ファイアウォール ポリシーの作成
ポリシーは、組織階層の任意のノード、組織、フォルダに作成できます。ポリシーを作成したら、組織内の任意のノードに関連付けることができます。関連付けが終わると、階層内の関連するノードにある VM に対してポリシーのルールがアクティブになります。
Console
Google Cloud Console で [ファイアウォール] ページに移動します。
プロジェクト セレクタのプルダウン メニューで、組織 ID または組織内のフォルダを選択します。
[ファイアウォール ポリシーを作成] をクリックします。
ポリシーに名前を付けます。
ポリシーのルールを作成する場合は、[続行] をクリックしてから、[ルールを追加] をクリックします。
詳細については、ファイアウォール ルールの作成をご覧ください。
ポリシーをノードに関連付けるには、[続行] をクリックしてから [関連付け] をクリックします。
詳細については、ポリシーを組織またはフォルダに関連付けるをご覧ください。
[作成] をクリックします。
gcloud
gcloud beta compute org-security-policies create \ [--organization ORG_ID] | --folder FOLDER_ID] \ --display-name DISPLAY_NAME
次のように置き換えます。
ORG_ID
: 組織の ID
組織レベルでポリシーを作成する場合、この ID を指定します。この ID は、ポリシーが有効である場所のみを示しています。ポリシーが組織ノードに自動的に関連付けられることはありません。FOLDER_ID
: フォルダの ID
特定のフォルダにポリシーを作成する場合は、この ID を指定します。この ID は、ポリシーが有効である場所のみを示しています。ポリシーがそのフォルダに自動的に関連付けられることはありません。DISPLAY_NAME
: ポリシーの名前
gcloud
コマンドライン インターフェースを使用して作成されたポリシーには、システムが生成した名前とユーザーが指定した表示名の 2 つの名前があります。gcloud
インターフェースを使用して既存のポリシーを更新する場合は、システムが生成した名前または表示名と組織 ID を指定できます。API を使用してポリシーを更新する場合は、システムが生成した名前を指定する必要があります。
ファイアウォール ルールの作成
階層型ファイアウォール ポリシーのルールは、階層型ファイアウォール ポリシーに作成される必要があります。含まれるポリシーをノードに関連付けるまで、ルールは有効になりません。
Console
Google Cloud Console で [ファイアウォール] ページに移動します。
プロジェクト セレクタのプルダウン メニューで、組織 ID またはポリシーを含むフォルダを選択します。
ポリシーの名前をクリックします。
[ルールを追加] をクリックします。
ルール フィールドに、次の内容を入力します。
- 優先度: ルールの数値評価順序。優先度が
1
のルールが最初に評価されます。優先度はルールごとに一意である必要があります。後での挿入が可能になるように、ルールの優先度の数値を指定することをおすすめします(100、200、300 など)。 - [ログの収集] を [オン] または [オフ] に設定します。
- [トラフィックの方向] で、このルールが [上り(内向き)] ルールか [下り(外向き)] ルールかを指定します。
- [一致したときのアクション] で、ルールに一致した接続を許可する(許可)または拒否する(拒否)かどうか、または接続の評価を、階層内で次に低いファイアウォール ルールに渡すかどうかを指定します(次に移動)。
- (省略可)[ターゲット ネットワーク] フィールドに特定のネットワークを指定することで、ルールをその特定のネットワークのみに限定できます。
- (省略可)[ターゲット サービス アカウント] フィールドにサービス アカウントを指定すると、指定したサービス アカウントとして実行されている VM にルールを制限できます。
- 上り(内向き)ルールを作成する場合は、このルールが適用されるソース IP 範囲を指定します。下り(外向き)ルールを作成する場合は、このルールを適用する宛先 IP 範囲を指定します。どちらの場合も、すべての IP アドレスに
0.0.0.0/0
を指定します。 - [プロトコルとポート] で、「ルールをすべてのプロトコルとポートに適用する」を指定するか、適用するプロトコルとポートを指定します。
- [作成] をクリックします。
- 優先度: ルールの数値評価順序。優先度が
[ルールを追加] をクリックして別のルールを追加します。[続行] > [関連付け] をクリックしてポリシーをノードに関連付けるか、[作成] をクリックしてポリシーを作成します。
gcloud
gcloud beta compute org-security-policies rules create PRIORITY \ --organization ORG_ID \ --security-policy POLICY_NAME \ --direction DIRECTION \ --action ACTION \ --layer4-configs PROTOCOL_PORT \ --src-ip-ranges IP_RANGES \ [--enable-logging | --no-enable-logging]
次のように置き換えます。
PRIORITY
: ルールの数値評価順序
優先度1
のルールが最初に評価されます。優先度はルールごとに一意である必要があります。後での挿入が可能になるように、ルールの優先度の数値を指定することをおすすめします(100、200、300 など)。ORG_ID
: 組織の IDPOLICY_NAME
: ポリシーの表示名またはシステムによって生成された名前DIRECTION
: ルールがingress
ルールまたはegress
ルールのどちらであるかを示します。デフォルトはingress
です。ACTION
は次のいずれかです。allow
: ルールに一致する接続を許可します。deny
: ルールに一致する接続を拒否します。goto_next
: 接続評価を階層内の次のレベル(フォルダまたはネットワーク)に渡します。
PROTOCOL_PORT
: 宛先プロトコル(tcp、udp、icmp、esp、ah、sctp)のカンマ区切りのリスト、プロトコルとポート(tcp:80
)、プロトコルとポート範囲(tcp:5000-6000
)
プロトコルなしでは、ポートまたはポート範囲を指定できません。icmp の場合、ポートまたはポート範囲を指定できません。例:--layer4-configs tcp:80, tcp:443, udp:4000-5000, icmp
IP_RANGES
: CIDR 形式の IP 範囲のカンマ区切りのリスト。例:--src-ip-ranges 10.100.0.1/32, 10.200.0.0/24
ポリシーを組織またはフォルダに関連付ける
ポリシーをノードに関連付けると、階層内のノードの下にある VM のポリシールールをアクティブ化できます。
Console
Google Cloud Console で [ファイアウォール] ページに移動します。
プロジェクト セレクタのプルダウン メニューで、組織 ID またはポリシーを含むフォルダを選択します。
ポリシーをクリックします。
[関連付け先] タブをクリックします。
[関連付け] をクリックします。
組織のルートを選択するか、組織内のフォルダを選択します。
[関連付け] をクリックします。
gcloud
gcloud beta compute org-security-policies associations create \ --security-policy POLICY_NAME \ --organization ORG_ID \ [ --folder FOLDER_ID ] \ [ --name ASSOCIATION_NAME ] \ [ --replace-association-on-target ]
次のように置き換えます。
POLICY_NAME
: ポリシーの表示名またはシステムによって生成された名前ORG_ID
: 組織の IDFOLDER_ID
: ポリシーをフォルダに関連付ける場合は、ここで指定します。ポリシーを組織レベルに関連付ける場合は省略します。ASSOCIATION_NAME
: 関連付けのオプションの名前。指定しない場合、名前は「organizationORG_ID
」または「folderFOLDER_ID
」に設定されます。--replace-association-on-target
デフォルトでは、すでに関連付けがある組織ノードまたはフォルダノードに関連付けを挿入しようとすると、そのメソッドは失敗します。このフラグを指定すると、新しい関連付けが作成されると同時に既存の関連付けが削除されます。これにより、移行時にポリシーのないノードが設定されることがなくなります。
ノード間でのポリシーの移動
ポリシーを移動すると、ポリシーを所有するノードが変更されます。ポリシーを移動するには、古いノードと新しいノードの両方に move
権限が必要です。
ポリシーを移動しても、既存のポリシーの関連付けや既存のルールの評価には影響しませんが、移動後にポリシーを変更または関連付けを行う権限を持つ人に影響する可能性があります。
Console
この手順では gcloud
コマンドを使用します。
gcloud
gcloud beta compute org-security-policies move POLICY_NAME \ --organization ORG_ID \ [--folder FOLDER_ID]
次のように置き換えます。
POLICY_NAME
: 移動するポリシーの表示名またはシステム生成名ORG_ID
: 組織の ID。ポリシーを組織ノードに移動する場合は、この ID を指定しますが、フォルダは指定しません。FOLDER_ID
: ポリシーをフォルダに関連付ける場合は、ここで指定します。ポリシーを組織ノードに関連付ける場合は省略します。
ポリシーの説明の更新
更新できるポリシー フィールドは [説明] フィールドのみです。
Console
Google Cloud Console で [ファイアウォール] ページに移動します。
プロジェクト セレクタのプルダウン メニューで、組織 ID またはポリシーを含むフォルダを選択します。
[編集] をクリックします。
[説明] を変更します。
[保存] をクリックします。
gcloud
gcloud beta compute org-security-policies list-rules POLICY_NAME \ --organization ORG_ID
ポリシーの一覧表示
Console
Google Cloud Console で [ファイアウォール] ページに移動します。
プロジェクト セレクタのプルダウン メニューで、組織 ID またはポリシーを含むフォルダを選択します。
[このノードに関連付けられた、またはこのノードによって継承されたファイアウォール ポリシー] セクションに、リソース階層内のこのノードに関連付けられているポリシーが表示されます。
[このノードにあるファイアウォール ポリシー] セクションには、リソース階層でこのノードによって所有されているポリシーが一覧表示されます。このようなポリシーは、このノードに関連付けられていない可能性がありますが、このノードや他のノードに関連付けることができます。
gcloud
gcloud beta compute org-security-policies list \ [--organization ORG_ID | --folder FOLDER_ID]
ポリシーの説明
すべてのファイアウォール ルールを含む、ポリシーのすべての詳細を表示できます。また、ポリシー内のすべてのルールにある属性も確認できます。この属性は、ポリシーごとの上限としてカウントされます。
Console
Google Cloud Console で [ファイアウォール] ページに移動します。
プロジェクト セレクタのプルダウン メニューで、組織 ID またはポリシーを含むフォルダを選択します。
ポリシーをクリックします。
gcloud
gcloud beta compute org-security-policies describe POLICY_NAME \ --organization ORG_ID
ポリシーの削除
削除する前に、組織のファイアウォール ポリシーのすべての関連付けを削除する必要があります。
Console
Google Cloud Console で [ファイアウォール] ページに移動します。
プロジェクト セレクタのプルダウン メニューで、組織 ID またはポリシーを含むフォルダを選択します。
削除するポリシーをクリックします。
[関連付け先] タブをクリックします。
すべての関連付けを選択します。
[削除] をクリックします。
すべての関連付けを削除したら、[削除] をクリックします。
gcloud
ファイアウォール ポリシーに関連するすべてのノードを一覧表示します。
gcloud beta compute org-security-policies describe --security-policy POLICY_NAME \ --organization ORG_ID
個々の関連付けを削除します。関連付けを削除するには、関連するノードまたはそのノードの祖先に対する
compute.orgSecurityResourceAdmin
のロールが必要です。gcloud beta compute org-security-policies associations delete NODE_NAME \ --organization ORG_ID \ --security-policy POLICY_NAME
ポリシーを削除します。
gcloud beta compute org-security-policies delete POLICY_NAME \ --organization ORG_ID
ノードの関連付けの一覧表示
Console
Google Cloud Console で [ファイアウォール] ページに移動します。
プロジェクト セレクタのプルダウン メニューで、組織 ID またはポリシーを含むフォルダを選択します。
関連付けられているポリシーと継承されているポリシーは、[このノードに関連付けられた、またはこのノードによって継承されたファイアウォール ポリシー] に表示されます。
gcloud
gcloud beta compute org-security-policies associations list \ [--organization ORG_ID | --folder FOLDER_ID]
ポリシーの関連付けの一覧表示
Console
Google Cloud Console で [ファイアウォール] ページに移動します。
プロジェクト セレクタのプルダウン メニューで、組織 ID またはポリシーを含むフォルダを選択します。
ポリシーをクリックします。
[関連付け] タブをクリックします。
ポリシーの関連付けが一覧で表示されます。
gcloud
gcloud beta compute org-security-policies describe POLICY_ID
関連付けの削除
組織またはフォルダに対するセキュリティ ポリシーの適用を停止するには、関連付けを削除します。
ただし、あるセキュリティ ポリシーを別のセキュリティ ポリシーに入れ替える場合は、最初に既存の関連付けを削除する必要はありません。この操作を行うと、どちらのポリシーも適用されない期間が残ります。代わりに、新しいポリシーを関連付ける際は、既存のポリシーを置き換えます。
Console
Google Cloud Console で [ファイアウォール] ページに移動します。
プロジェクト セレクタのプルダウン メニューで、組織 ID またはポリシーを含むフォルダを選択します。
ポリシーをクリックします。
[関連付け] タブをクリックします。
削除する関連付けを選択します。
[削除] をクリックします。
gcloud
gcloud beta compute org-security-policies associations delete ASSOCIATION_NAME \ --security-policy POLICY_NAME \ --organization ORG_ID
ルールのタスク
既存のファイアウォール ポリシー内のルールの作成
Console
Google Cloud Console で [ファイアウォール] ページに移動します。
プロジェクト セレクタのプルダウン メニューで、組織 ID またはポリシーを含むフォルダを選択します。
ポリシーをクリックします。
[ルールを追加] をクリックします。
ルール フィールドに、次の内容を入力します。
- 優先度: ルールの数値評価順序。優先度が
1
のルールが最初に評価されます。優先度はルールごとに一意である必要があります。後での挿入が可能になるように、ルールの優先度の数値を指定することをおすすめします(100、200、300 など)。 - [ログの収集] を [オン] または [オフ] に設定します。
- [トラフィックの方向] で、このルールが [上り(内向き)] ルールか [下り(外向き)] ルールかを指定します。
- [一致したときのアクション] で、ルールに一致した接続を許可する(許可)または拒否する(拒否)かどうか、または接続の評価を、階層内で次に低いファイアウォール ルールに渡すかどうかを指定します(次に移動)。
- (省略可)[ターゲット ネットワーク] フィールドに特定のネットワークを指定することで、ルールをその特定のネットワークのみに限定できます。
- (省略可)[ターゲット サービス アカウント] フィールドにサービス アカウントを指定すると、指定したサービス アカウントとして実行されている VM にルールを制限できます。
- 上り(内向き)ルールを作成する場合は、このルールが適用されるソース IP 範囲を指定します。下り(外向き)ルールを作成する場合は、このルールを適用する宛先 IP 範囲を指定します。どちらの場合も、すべてに
0.0.0.0/0
を指定します。 - [プロトコルとポート] で、「ルールをすべてのプロトコルとポートに適用する」を指定するか、適用するプロトコルとポートを指定します。
- 優先度: ルールの数値評価順序。優先度が
[作成] をクリックします。
gcloud
gcloud beta compute org-security-policies rules create PRIORITY \ --organization ORG_ID \ --security-policy POLICY_NAME \ [--description DESCRIPTION \ [--action ACTION] \ [--dest-ip-ranges DEST_RANGES] \ [--layer4-configs PROTOCOL_PORT] \ [--direction DIRECTION] \ [--disabled] \ [--src-ip-ranges SRC_RANGES] \ [--target-resources NETWORKS] \ [--target-service-accounts SERVICE_ACCOUNTS] \ [--enable-logging | --no-enable-logging]
次のように置き換えます。
PRIORITY
: ルールの数値評価順序
優先度1
のルールが最初に評価されます。優先度はルールごとに一意である必要があります。後での挿入が可能になるように、ルールの優先度の数値を指定することをおすすめします(100、200、300 など)。ORG_ID
: 組織の IDPOLICY_NAME
: ルールが含まれるポリシーの名前DESCRIPTION
: ルールのテキストの説明ACTION
は次のいずれかです。allow
: ルールに一致する接続を許可します。deny
: ルールに一致する接続を拒否します。goto_next
: 接続評価を階層内の次のレベル(フォルダまたはネットワーク)に渡します。
DEST_RANGES
:egress
ルールの場合のみ、ルールの影響を受けるターゲット IP アドレスを示す CIDR 形式の IP 範囲のカンマ区切りのリスト。例:--dest-ip-ranges 10.100.0.1/32, 10.200.0.0/24
PROTOCOL_PORT
: 宛先プロトコル(tcp、udp、icmp、esp、ah、sctp)のカンマ区切りのリスト、プロトコルとポート(tcp:80
)、プロトコルとポート範囲(tcp:5000-6000
)
TCP と UDP にはポートまたはポート範囲を含める必要があります。プロトコルなしでは、ポートまたはポート範囲を指定することはできません。icmp の場合、ポートまたはポート範囲を指定できません。例:--layer4-configs tcp:80, tcp:443, udp:4000-5000, icmp
DIRECTION
: ルールがingress
またはegress
ルールのどちらであるかを示します。デフォルトはingress
です。
宛先範囲はegress
接続でのみサポートされています。ソース範囲はingress
接続でのみサポートされます。--disabled
: ファイアウォール ルールが存在しても、接続の処理時に考慮されないファイアウォール ルールを示します。このフラグを削除すると、ルールが有効になります。または、--no-disabled
を指定します。SRC_RANGES
:ingress
ルールの場合のみ、ルールの影響を受けるソース IP アドレスを示す CIDR 形式の IP 範囲のカンマ区切りのリスト。例:--src-ip-ranges 10.100.0.1/32, 10.200.0.0/24
NETWORKS
: このルールが適用されるネットワークのカンマ区切りのリスト。省略した場合は、ルールはノードの下のすべてのネットワークに適用されます。SERVICE_ACCOUNTS
: サービス アカウントのカンマ区切りのリスト。ルールは、このサービス アカウントの VM にのみ適用されます。--enable-logging
、--no-enable-logging
: 指定されたルールに対してファイアウォール ルールロギングを有効または無効にします。
ポリシー内のすべてのルールを一覧表示する
Console
Google Cloud Console で [ファイアウォール] ページに移動します。
プロジェクト セレクタのプルダウン メニューで、組織 ID またはポリシーを含むフォルダを選択します。
ポリシーをクリックします。ルールが [ファイアウォール ルール] タブに表示されます。
gcloud
gcloud beta compute org-security-policies list-rules POLICY_NAME \ --organization ORG_ID
ルールの説明
Console
Google Cloud Console で [ファイアウォール] ページに移動します。
プロジェクト セレクタのプルダウン メニューで、組織 ID またはポリシーを含むフォルダを選択します。
ポリシーをクリックします。
ルールの優先度をクリックします。
gcloud
gcloud beta compute org-security-policies rules describe PRIORITY \ --organization ORG_ID \ --security-policy POLICY_NAME
次のように置き換えます。
PRIORITY
: 表示するルールの優先度。各ルールの優先度は異なるため、この設定はルールによって一意に識別されますORG_ID
: 組織の IDPOLICY_NAME
: ルールが含まれるポリシーの表示名またはシステム生成名
ルールの更新
フィールドの説明については、ファイアウォール ルールの作成をご覧ください。
Console
Google Cloud Console で [ファイアウォール] ページに移動します。
プロジェクト セレクタのプルダウン メニューで、組織 ID またはポリシーを含むフォルダを選択します。
ポリシーをクリックします。
ルールの優先度をクリックします。
[編集] をクリックします。
変更対象のフィールドに修正を加えます。
[保存] をクリックします。
gcloud
gcloud beta compute org-security-policies rules update RULE_NAME \ --security-policy POLICY_NAME \ --organization ORG_ID \ [...fields you want to modify...]
ポリシー間のルールのコピー
ターゲット ポリシーからすべてのルールを削除し、ソースポリシーのルールで置き換えます。
Console
Google Cloud Console で [ファイアウォール] ページに移動します。
プロジェクト セレクタのプルダウン メニューで、組織 ID またはポリシーを含むフォルダを選択します。
ルールのコピー元ポリシーをクリックします。
画面の上部の [クローン] をクリックします。
ターゲット ポリシーの名前を指定します。
新しいポリシーをすぐに関連付ける場合は、[続行] > [関連付け] をクリックします。
[クローン] をクリックします。
gcloud
gcloud beta compute org-security-policies copy-rules POLICY_NAME \ --organization ORG_ID \ --source-security-policy SOURCE_POLICY
次のように置き換えます。
POLICY_NAME
: コピーされたルールを受け取るポリシーORG_ID
: 組織の IDSOURCE_POLICY
: ルールのコピー元のポリシー。リソースの URL で指定する必要があります
ポリシーからルールを削除する
ポリシーからルールを削除すると、そのルールを継承しているすべての VM からルールが削除されます。
Console
Google Cloud Console で [ファイアウォール] ページに移動します。
プロジェクト セレクタのプルダウン メニューで、組織 ID またはポリシーを含むフォルダを選択します。
ポリシーをクリックします。
削除するルールを選択します。
[削除] をクリックします。
gcloud
gcloud beta compute org-security-policies rules delete PRIORITY \ --organization ORG_ID \ --security-policy POLICY_NAME
次のように置き換えます。
PRIORITY
: ポリシーから削除するルールの優先度ORG_ID
: 組織の IDPOLICY_NAME
: そのルールを含むポリシー
ネットワークで有効なファイアウォール ルールを取得する
指定した VPC ネットワークに適用されているすべての階層型ファイアウォール ポリシーのルールと VPC ファイアウォール ルールを表示します。
Console
この手順では gcloud
コマンドを使用します。
gcloud
gcloud beta compute networks get-effective-firewalls NETWORK_NAME
次のように置き換えます。
NETWORK_NAME
: 有効なルールを取得する対象のネットワーク
VM インターフェースで有効なファイアウォール ルールを取得する
指定した Compute Engine VM インターフェースに適用されているすべての階層型ファイアウォール ポリシーのルールと VPC ファイアウォール ルールを表示します。
Console
Google Cloud Console で、[VM インスタンス] ページに移動します。
プロジェクト セレクタのプルダウン メニューで、VM を含むプロジェクトを選択します。
VM をクリックします。
[ネットワーク インターフェース] でインターフェースをクリックします。
[ファイアウォールとルートの詳細] に有効なファイアウォール ルールが表示されます。
gcloud
gcloud beta compute instances network-interfaces get-effective-firewalls INSTANCE_NAME \ [--network-interface INTERFACE \ [--zone ZONE]
次のように置き換えます。
INSTANCE_NAME
: 有効なルールを取得する対象の VM。インターフェースが指定されていない場合、プライマリ インターフェース(nic0
)のルールが返されます。INTERFACE
: 有効なルールを取得する対象の VM インターフェース。デフォルトはnic0
です。ZONE
: VM のゾーン。対象のゾーンがすでにデフォルトとして設定されている場合は省略可能です。
次のステップ
- VPC ファイアウォール ルールで VPC ファイアウォール ルールを理解する。
- 階層型ファイアウォール ポリシーの例で、階層型ファイアウォール ポリシーの実装例を確認する。