ネットワーク エッジのセキュリティ ポリシーを使用すると、Google のネットワークのエッジでトラフィックを許可またはブロックするルールを構成できます。ネットワーク エッジのセキュリティ ポリシーは、次のフロントエンド タイプに対して構成できます。
- 外部パススルー ネットワーク ロードバランサ
- プロトコル転送
- パブリック IP アドレスを持つ VM
ネットワーク エッジ セキュリティ ポリシーを使用すると、リソースを消費せずに、Cloud 次世代ファイアウォールと同様に送信元と宛先の IP アドレス範囲でフィルタリングできます。さらに、ネットワーク エッジのセキュリティ ポリシーは、バイト オフセット フィルタリングをサポートする唯一のセキュリティ ポリシー タイプです。
ネットワーク エッジ セキュリティ ポリシーのカスタムルールを構成する
バックエンドやエッジのセキュリティ ポリシーと同様に、ネットワーク エッジのセキュリティ ポリシーのカスタムルールを構成できます。次の例では、ネットワーク エッジ セキュリティ ポリシーを作成し、特定のソース IP アドレス範囲からのトラフィックのみを許可するカスタムルールを構成して、そのポリシーをバックエンド サービスに接続します。
ネットワーク エッジ セキュリティ ポリシーは、バイト オフセット フィルタリングなどの一意のフィルタを含む、いくつかの Google Cloud Armor フィルタをサポートしています。ネットワーク エッジ セキュリティ ポリシーでサポートされる機能の詳細については、セキュリティ ポリシーの概要をご覧ください。さらに、ネットワーク エッジ セキュリティ ポリシーは、プレビュー モードでデプロイできます。
続行する前に、Google Cloud Armor Enterprise に登録し、高度なネットワーク DDoS 対策を構成する必要があります。アクティブな Cloud Armor Enterprise サブスクリプションと高度なネットワーク DDoS 保護がないと、ネットワーク エッジのセキュリティ ポリシーにカスタムルールを使用できません。
カスタムルールを構成する手順は次のとおりです。
リージョン
REGION
にPOLICY_NAME
という名前の新しいネットワーク エッジ セキュリティ ポリシーを作成します。高度なネットワーク DDoS 対策を有効にしたときに使用した同じセキュリティ ポリシーは使用しないでください。gcloud compute security-policies create POLICY_NAME \ --type=CLOUD_ARMOR_NETWORK \ --region=REGION
ポリシーのデフォルト ルールを
allow
からdeny
に変更して、他のルールで明示的に許可されていないトラフィックをブロックします。gcloud compute security-policies rules update 2147483647 \ --security-policy=POLICY_NAME \ --action=deny \ --region=REGION
同じセキュリティ ポリシーで、送信元 IP アドレス範囲
RANGE
内のリクエストを許可する優先度RULE_PRIORITY
のルールを追加します。gcloud compute security-policies rules create RULE_PRIORITY \ --security-policy=POLICY_NAME \ --network-src-ip-ranges=RANGE \ --action=allow \ --region=REGION
セキュリティ ポリシーをバックエンド サービス
BACKEND_SERVICE_NAME
に関連付けます。gcloud compute backend-services update BACKEND_SERVICE_NAME \ --security-policy=POLICY_NAME \ --region=REGION
また、次のコマンドを使用して、セキュリティ ポリシーを単一の VM インスタンスに関連付けることもできます。
gcloud beta compute instances network-interfaces update VM_NAME \ --security-policy=POLICY_NAME \ --security-policy-region=REGION \ --network-interface=NETWORK_INTERFACE \ --zone=ZONE_NAME
省略可: 次のコマンドを使用して、セキュリティ ポリシーがアタッチされていることを確認できます。成功すると、出力の
securityPolicy
フィールドにセキュリティ ポリシー リソースへのリンクが含まれます。gcloud compute instances describe VM_NAME --zone=ZONE_NAME
上の例を作成したら、引き続き security-policies rules update
コマンドを使用して、ネットワーク エッジ セキュリティ ポリシーにルールを追加できます。ネットワーク エッジのセキュリティ ポリシーでサポートされるフィールドは次のとおりです。
フィールド | フラグ | 説明 |
---|---|---|
送信元 IP アドレス | --network-src-ip-ranges |
ソース IPv4/6 アドレスまたは CIDR プレフィックス(標準テキスト形式)。 |
ソースのポート | --network-src-ports |
TCP / UDP / SCTP の送信元ポート番号。各要素には、(16 ビットの)数値(「80」など)または範囲(「0-1023」など)を使用できます。 |
ソースのリージョン コード | --network-src-region-codes |
2 文字の国コード(ISO 3166-1 alpha-2)。 |
送信元 ASN | --network-src-asns |
送信元 IP アドレスの BGP 自律システム番号。 |
宛先 IP アドレス範囲 | --network-dest-ip-ranges |
送信先 IPv4/6 アドレスまたは CIDR プレフィックス(標準のテキスト形式)。 |
宛先ポート | --network-dest-ports |
TCP / UDP / SCTP の宛先ポート番号。各要素には、(16 ビットの)数値(「80」など)または範囲(「0-1023」など)を使用できます。 |
IP アドレス プロトコル | --network-ip-protocols |
IPv4 プロトコル / IPv6 次ヘッダー(拡張ヘッダーの後)。 各要素には、8 ビットの数値(「6」など)、範囲(「253-254」など)、または次のいずれかのプロトコル名を使用できます。
|
バイト オフセット フィルタリング | なし | 次のセクションをご覧ください。 |
ネットワーク エッジ セキュリティ ポリシーで --network-src-region-codes
フラグを使用する場合、米国の包括的な制裁措置の対象となる次の地域のリージョン コードを使用できます。
地域 | 割り当てられたコード |
---|---|
クリミア | XC |
「ドネツク人民共和国」(DNR)、 「ルハンスク人民共和国」(LNR) |
XD |
バイト オフセット フィルタリングを構成する
外部パススルー ネットワーク ロードバランサ、プロトコル転送、またはパブリック IP アドレスを持つ VM を使用する場合、Google Cloud Armor は上り(内向き)トラフィックに対して詳細なパケット検査を行うことができます。特定の TCP / UDP バイト オフセット値と一致するセキュリティ ポリシー ルールを構成できます。構成された値が存在する場合、または存在しない場合にルール アクションを適用するようにルールを構成できます。
次の例では、値が存在する場合にトラフィックを許可し、他のすべてのトラフィックを拒否します。
新しいネットワーク エッジ セキュリティ ポリシーを作成します。既存のネットワーク エッジ セキュリティ ポリシーがある場合は、この手順をスキップできます。
gcloud compute security-policies create POLICY_NAME \ --type=CLOUD_ARMOR_NETWORK \ --region=REGION_NAME
次のパラメータを使用して、ユーザー定義フィールドを追加するようにネットワーク エッジ セキュリティ ポリシーを更新します。
- Base: 値は
IPv4
、IPv6
、TCP
、UDP
のいずれかです。 - Offset: ベースからのフィールドのオフセット(バイト単位)
- Size: フィールドのサイズ(バイト単位、最大値は
4
) - Mask: 一致するフィールドのビットマスク
ポリシーごとに最大 8 つのユーザー定義フィールドを使用できます。次の例では、2 つのユーザー定義フィールドを作成します。
gcloud compute security-policies add-user-defined-field POLICY_NAME \ --user-defined-field-name=USER_DEFINED_FIELD_NAME_TCP \ --base=TCP \ --offset=OFFSET \ --size=SIZE \ --mask=MASK \ --region=REGION_NAME
gcloud compute security-policies add-user-defined-field POLICY_NAME \ --user-defined-field-name=USER_DEFINED_FIELD_NAME_UDP \ --base=UDP \ --offset=OFFSET \ --size=SIZE \ --mask=MASK \ --region=REGION_NAME
- Base: 値は
ネットワーク エッジ セキュリティ ポリシーで、前の例で使用したのと同じカスタム フィールド名のルールを追加します。
VALUE1
とVALUE2
は、許可するトラフィックと一致する値に置き換えます。gcloud compute security-policies rules create RULE_PRIORITY \ --security-policy=POLICY_NAME \ --network-user-defined-fields="USER_DEFINED_FIELD_NAME_TCP;VALUE1:VALUE2,USER_DEFINED_FIELD_NAME_UDP;VALUE1:VALUE2,USER_DEFINED_FIELD_NAME_UDP;VALUE1,VALUE2" \ --action=allow \ --region=REGION_NAME
ネットワーク エッジのセキュリティ ポリシーのデフォルト ルールを拒否ルールとして設定します。セキュリティ ポリシーのデフォルト ルールがすでに拒否ルールになっている場合は、この手順をスキップできます。
gcloud compute security-policies rules update 2147483647 \ --security-policy=POLICY_NAME \ --action=deny \ --region=REGION_NAME
ネットワーク エッジのセキュリティ ポリシーを、外部パススルー ネットワーク ロードバランサのバックエンド サービスに関連付けます。
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --security-policy=POLICY_NAME \ --region=REGION_NAME
モニタリング
Google Cloud Armor は、ネットワーク エッジのセキュリティ ポリシー ルールごとに次の指標を Cloud Monitoring にエクスポートします。
packet_count
Blocked
:allow
またはdeny
ルール アクションの
結果を表すブール値Count
:packet_count
の値が 10,000 パケットごとに 1 回増分されます。たとえば、packet_count
値が5
の場合、少なくとも 50,000 パケットがルールに一致することを意味します。
preview_packet_count
:packet_count
と同じ。プレビュー モードのルールに使用されます。
ネットワーク エッジ セキュリティ ポリシーの指標を表示するには、まず Network Security API(networksecurity.googleapis.com
)を有効にする必要があります。この権限は、Compute セキュリティ管理者のロール(roles/compute.securityAdmin
)に含まれています。Network Security API を有効にすると、Google Cloud コンソールの Monitoring で指標を表示できます。