アドレス グループを使用すると、複数の IP アドレスと IP アドレス範囲を 1 つの名前付き論理単位に結合し、複数のサービスで使用できます。このドキュメントでは、Google Cloud Armor セキュリティ ポリシーでアドレス グループを使用する方法について説明します。アドレス グループを使用するには、有効な Google Cloud Armor Enterprise サブスクリプションが必要です。
IAM ロール
アドレス グループを作成して管理するには、ネットワーク管理者ロール(compute.networkAdmin
)またはセキュリティ管理者ロール(compute.securityAdmin
)が必要です。また、同等の権限セットでカスタムロールを定義することもできます。
次の表に、アドレス グループで一連のタスクを実行するために必要な Identity and Access Management(IAM)権限の一覧を示します。
タスク | IAM の役割名 | IAM 権限 |
---|---|---|
アドレス グループの作成と管理 | compute.networkAdmin
|
networksecurity.addressGroups.* |
アドレス グループの検出と表示 | compute.networkUser |
networksecurity.addressGroups.list
|
特定の IAM 権限を含むロールの詳細については、IAM 権限のリファレンスをご覧ください。
アドレス グループを作成または変更する
以降のセクションでは、アドレス グループの作成方法、アドレス グループへのアドレスの追加と削除の方法、アドレス グループの削除方法について説明します。
アドレス グループを作成する
アドレス グループを作成するときは、--capacity
フラグと --type
フラグを使用して、容量と IP アドレス バージョンを指定する必要があります。アドレス グループの作成後にこれらの値を変更することはできません。
また、Google Cloud Armor の最大容量は、Cloud Next Generation Firewall などの他のサービスの最大容量よりも大きい場合があります。したがって、複数のプロダクトで同じアドレス グループを使用する場合は、それらのプロダクト間の最小容量以下になるように容量を設定する必要があります。
コンソール
Google Cloud コンソールで、[アドレス グループ] ページに移動します。
プロジェクト セレクタ メニューでプロジェクトを選択します(利用可能な場合)。
[アドレス グループを作成] をクリックします。
[名前] フィールドに名前を入力します。
(省略可): [説明] フィールドに説明を追加します。
[スコープ] で、[グローバル] を選択します。
[タイプ] で [IPv4] または [IPv6] を選択します。
[目的] で [Cloud Armor] を選択します。または、Cloud 次世代ファイアウォール ポリシーでアドレス グループも使用する場合は、[ファイアウォールと Cloud Armor] を選択します。
目的の選択の詳細については、アドレス グループの仕様をご覧ください。
[容量] フィールドに、アドレス グループの容量を入力します。
[IP アドレス] フィールドに、アドレス グループに含める IP アドレスまたは IP 範囲をカンマで区切ってリストします。例:
1.1.1.0/24,1.2.0.0
[作成] をクリックします。
gcloud
次の gcloud network-security address-groups create
コマンドの例を使用して、1,000 個の IPv4
アドレスの容量を持つ GROUP_NAME という名前のアドレス グループを作成します(Google Cloud Armor または Cloud NGFW の両方を使用)。
gcloud network-security address-groups create GROUP_NAME \ --location global \ --description "address group description" \ --capacity 1000 \ --type IPv4 \ --purpose DEFAULT,CLOUD_ARMOR
または、目的を CLOUD_ARMOR
に設定して、容量の大きいアドレス グループを作成することもできます。次の例では、10,000 個の IPv6
IP アドレス範囲を持つアドレス グループを作成します。
gcloud network-security address-groups create GROUP_NAME \ --location global \ --description "address group description" \ --capacity 10000 \ --type IPv6 \ --purpose CLOUD_ARMOR
アドレス グループに項目を追加する
アドレス グループを作成したら、Google Cloud コンソールまたは gcloud network-security address-groups add-items
コマンドを使用して項目を追加できます。
コンソール
Google Cloud コンソールで、[アドレス グループ] ページに移動します。
プロジェクト セレクタ メニューでプロジェクトを選択します(利用可能な場合)。
アドレス グループを編集するには、アドレス グループの名前をクリックします。
[編集] をクリックします。
[IP アドレス] フィールドで、IP アドレスのカンマ区切りのリストに新しい項目を追加します。または、[アドレスをインポート] をクリックして、IP アドレスのリストを含む CSV ファイルをアップロードすることもできます。
[保存] をクリックします。
gcloud
次の例では、IP アドレス 192.168.1.2
、192.168.1.8
、192.168.1.9
をアドレス グループ GROUP_NAME に追加します。--item
フラグで、項目のカンマ区切りのリストを指定します。
gcloud network-security address-groups add-items GROUP_NAME \ --location global \ --items 192.168.1.2,192.168.1.8,192.168.1.9
アドレス グループから項目を削除する
アドレス グループから項目を削除するには、Google Cloud コンソールまたは gcloud network-security address-groups remove-items
コマンドを使用します。
コンソール
Google Cloud コンソールで、[アドレス グループ] ページに移動します。
プロジェクト セレクタ メニューでプロジェクトを選択します(利用可能な場合)。
アドレス グループを編集するには、アドレス グループの名前をクリックします。
[編集] をクリックします。
[IP アドレス] フィールドで、IP アドレスのカンマ区切りリストから削除する項目を削除します。
[保存] をクリックします。
gcloud
次のコマンドは、前のコマンドで追加した IP アドレス 192.168.1.2
、192.168.1.8
、192.168.1.9
を削除します。
gcloud network-security address-groups remove-items GROUP_NAME \ --location global \ --items 192.168.1.2,192.168.1.8,192.168.1.9
アドレス グループを削除する
ファイアウォール ポリシーやセキュリティ ポリシーなどのリソースからアドレス グループを参照している場合、アドレス グループは削除できません。アドレス グループを削除する手順は次のとおりです。
コンソール
Google Cloud コンソールで、[アドレス グループ] ページに移動します。
プロジェクト セレクタ メニューでプロジェクトを選択します(利用可能な場合)。
削除するアドレス グループの横にあるチェックボックスをオンにします。選択したアドレス グループが、ファイアウォールやセキュリティ ポリシーから参照されていないことを確認します。
[削除] をクリックし、確認のためもう一度 [削除] をクリックします。
gcloud
次の例では、gcloud network-security address-groups delete
コマンドを使用して、GROUP_NAME というアドレス グループを削除します。
gcloud network-security address-groups delete GROUP_NAME \ --location global
セキュリティ ポリシーでアドレス グループを使用する
アドレス グループを作成して IP アドレスを追加したら、既存の Google Cloud Armor バックエンド セキュリティ ポリシーで使用できます。次の例は、アドレス グループを使用する 2 つの異なる方法を示しています。
IP アドレスのグループを拒否する
たとえば、BAD_IPS という IP アドレス グループがあり、その中に悪意のある IP アドレスが 10,000 個あるとします。次の一致条件で単一のセキュリティ ポリシー deny
ルールを使用して、これらの IP アドレスをすべて拒否できます。
evaluateAddressGroup('BAD_IPS', origin.ip)
複数のセキュリティ ポリシーで IP アドレス範囲のグループを再利用する
この例では、前の例と同じ 10,000 個の IP アドレスのリストがあるとします。ただし、一部の IP アドレスはウェブ クローラーであることがわかっています。一部のバックエンド サービスからこれらの IP アドレスをすべてブロックしますが、検索エンジン最適化(SEO)を改善するために、ウェブ クローラーが他のバックエンド サービスにアクセスできるようにします。次の手順で、すべてのアドレスの BACKEND_SERVICE_1 へのアクセスを拒否し、IP アドレス範囲 66.249.77.32/27
と 66.249.77.64/27
の BACKEND_SERVICE_2 へのアクセスを許可します。
- POLICY_1 というバックエンド セキュリティ ポリシーを作成し、BACKEND_SERVICE_1 に接続します。
POLICY_1 で、次の一致条件を持つ
deny
ルールを作成します。evaluateAddressGroup('BAD_IPS', origin.ip)
POLICY_2 という名前の 2 番目のバックエンド セキュリティ ポリシーを作成し、BACKEND_SERVICE_2 に接続します。
POLICY_2 で、次の一致条件を持つ
deny
ルールを作成します。66.249.77.32/27
と66.249.77.64/27
は除外されます。evaluateAddressGroup('BAD_IPS', origin.ip, [66.249.77.32/27, 66.249.77.64/27])
アドレス グループを使用してユーザーの IP アドレスと照合する
たとえば、BAD_IPS という IP アドレス グループがあり、その中に悪意のある IP アドレスが 10,000 個あるとします。また、アップストリーム プロキシを使用します。このプロキシには、ヘッダーに送信元クライアントに関する情報が含まれます。次の一致条件で 1 つのセキュリティ ポリシー deny
ルールを使用して、これらの IP アドレスをすべて拒否できます。
evaluateAddressGroup('BAD_IPS', origin.user_ip)
ユーザー IP アドレスの詳細については、ルール言語属性をご覧ください。