アドレス グループを使用すると、複数の IP アドレスと IP アドレス範囲を 1 つの名前付き論理単位にまとめて複数のプロダクトで使用できます。このドキュメントでは、Google Cloud Armor のセキュリティ ポリシーでアドレス グループを使用する方法について説明します。アドレス グループを使用するには、有効な Google Cloud Armor Enterprise サブスクリプションが必要です。
始める前に
アドレス グループを構成する前に、まず Network Security API networksecurity.googleapis.com
を有効にする必要があります。
IAM ロール
アドレス グループを作成して管理するには、Compute ネットワーク管理者のロール(roles/compute.networkAdmin
)が必要です。または、同等の権限セットを持つカスタムロールを定義することもできます。
次の表に、アドレス グループで一連のタスクを実行するために必要な Identity and Access Management(IAM)権限の一覧を示します。
タスク | IAM ロール名 | IAM 権限 |
---|---|---|
Compute ネットワーク管理者 |
networksecurity.addressGroups.* |
|
Compute ネットワーク ユーザー |
networksecurity.addressGroups.list networksecurity.addressGroups.get networksecurity.addressGroups.use |
特定の IAM 権限を含むロールの詳細については、IAM のロールと権限のインデックスをご覧ください。
プロジェクト スコープのアドレス グループを使用する
以降のセクションでは、 Google Cloud コンソールまたは Google Cloud CLI を使用してプロジェクト スコープのアドレス グループを作成および変更する方法、またセキュリティ ポリシーでプロジェクト スコープのアドレス グループを使用する方法について説明します。
プロジェクト スコープのアドレス グループを作成または変更する
以降のセクションでは、プロジェクト スコープのアドレス グループの作成方法、プロジェクト スコープのアドレス グループへのアドレスの追加と削除の方法、プロジェクト スコープのアドレス グループの削除方法について説明します。
プロジェクト スコープのアドレス グループを作成する
アドレス グループを作成する際は、--capacity
と --type
のフラグを使用して容量と IP アドレス バージョンを指定する必要があります。アドレス グループの作成後にこれらの値を変更することはできません。
また、Cloud Armor での最大容量が、Cloud Next Generation Firewall などの他のプロダクトでの最大容量より大きい場合もあります。したがって、複数のプロダクトで同じアドレス グループを使用する場合は、容量をそれらのプロダクトの中で最も低い最大容量以下に設定する必要があります。
コンソール
- Google Cloud コンソールで、[アドレス グループ] ページに移動します。
- プロジェクト セレクタ メニューでプロジェクトを選択します(利用可能な場合)。
- [アドレス グループを作成] をクリックします。
- [名前] フィールドに名前を入力します。
- (省略可)[説明] フィールドに説明を追加します。
- [スコープ] で [グローバル] を選択します。
- [タイプ] で [IPv4] または [IPv6] を選択します。
[目的] で [Cloud Armor] を選択します。Cloud Next Generation Firewall ポリシーでアドレス グループを使用する場合は、[ファイアウォールと Cloud Armor] を選択します。
目的の選択方法の詳細については、アドレス グループの仕様をご覧ください。
[容量] フィールドにアドレス グループの容量を入力します。
[IP アドレス] フィールドに、アドレス グループに含める IP アドレスまたは IP 範囲をカンマで区切って入力します。例:
1.1.1.0/24,1.2.0.0
IP アドレスまたは IP 範囲の数は、構成された容量を超えることはできません。
[作成] をクリックします。
gcloud
次の gcloud network-security address-groups create
コマンドの例を使用して、1,000 個の IPv4
アドレスを格納する容量を持つ GROUP_NAME
という名前のアドレス グループを作成します。このアドレス グループは 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 コンソールで、[アドレス グループ] ページに移動します。
- プロジェクト セレクタ メニューでプロジェクトを選択します(利用可能な場合)。
- アドレス グループを編集するには、アドレス グループの名前をクリックします。
- [編集] をクリックします。
- [IP アドレス] フィールドで、IP アドレスのカンマ区切りリストに新しい項目を追加します。または、[アドレスをインポート] をクリックして、IP アドレスのリストを含む CSV ファイルをアップロードすることもできます。
- [保存] をクリックします。
gcloud
次の例では、gcloud network-security address-groups add-items
コマンドを使用して、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 コンソールで、[アドレス グループ] ページに移動します。
- プロジェクト セレクタ メニューでプロジェクトを選択します(利用可能な場合)。
- アドレス グループを編集するには、アドレス グループの名前をクリックします。
- [編集] をクリックします。
- [IP アドレス] フィールドで、削除する項目を IP アドレスのカンマ区切りリストから削除します。
- [保存] をクリックします。
gcloud
次の例では、gcloud network-security address-groups remove-items
コマンドを使用して、前のコマンドで追加した 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 clone-items
コマンドを使用して、送信元アドレス グループ SOURCE_GROUP_NAME
から宛先アドレス グループ GROUP_NAME
に、IP アドレスのクローンを作成します。
gcloud network-security address-groups clone-items GROUP_NAME \ --location global \ --source SOURCE_GROUP_NAME
プロジェクト スコープのアドレス グループを削除する
ファイアウォール ポリシーやセキュリティ ポリシーなどのリソースで参照されているアドレス グループは削除できません。アドレス グループを削除する手順は次のとおりです。
コンソール
- Google Cloud コンソールで、[アドレス グループ] ページに移動します。
- プロジェクト セレクタ メニューでプロジェクトを選択します(利用可能な場合)。
- 削除するアドレス グループの横にあるチェックボックスをオンにします。選択したアドレス グループがファイアウォール ポリシーやセキュリティ ポリシーで参照されていないことを確認します。
- [削除] をクリックし、確認のためもう一度 [削除] をクリックします。
gcloud
次の例では、gcloud network-security address-groups delete
コマンドを使用してアドレス グループ GROUP_NAME
を削除します。
gcloud network-security address-groups delete GROUP_NAME \ --location global
セキュリティ ポリシーでプロジェクト スコープのアドレス グループを使用する
アドレス グループを作成して IP アドレスを追加した後は、そのアドレス グループを Cloud Armor の既存のバックエンド セキュリティ ポリシーで使用できます。以下に、アドレス グループの使用例を 2 つ示します。
IP アドレスのグループを拒否する
たとえば、MALICIOUS_IPS
という IP アドレス グループの中に悪意のある IP アドレスが 10,000 個あるとします。その場合、次の一致条件を含むセキュリティ ポリシーの単一の deny
ルールを使用することで、これらの IP アドレスをすべて拒否できます。
evaluateAddressGroup('MALICIOUS_IPS', origin.ip)
複数のセキュリティ ポリシーで IP アドレス範囲のグループを再利用する
この例では、前の例と同じ 10,000 個の IP アドレスを含むリストがあるとします。ただし、一部の IP アドレスはウェブ クローラーであることがわかっています。一部のバックエンド サービスではこれらの IP アドレスをすべてブロックしますが、検索エンジン最適化(SEO)を改善するために、その他のバックエンド サービスにはウェブ クローラーがアクセスできるようにします。BACKEND_SERVICE_1
へのすべてのアドレスのアクセスを拒否し、BACKEND_SERVICE_2
への IP アドレス範囲 66.249.77.32/27
と 66.249.77.64/27
のアクセスを許可するには、次の手順を使用します。
POLICY_1
という名前のバックエンド セキュリティ ポリシーを作成し、BACKEND_SERVICE_1
に接続します。POLICY_1
で、次の一致条件を持つdeny
ルールを作成します。evaluateAddressGroup('MALICIOUS_IPS', origin.ip)
POLICY_2
という名前の 2 つ目のバックエンド セキュリティ ポリシーを作成し、BACKEND_SERVICE_2
に接続します。POLICY_2
で、次の一致条件を持つdeny
ルールを作成します。これにより、66.249.77.32/27
と66.249.77.64/27
が除外されます。evaluateAddressGroup('MALICIOUS_IPS', origin.ip, [66.249.77.32/27, 66.249.77.64/27])
アドレス グループを使用してユーザーの IP アドレスを照合する
アドレス グループを使用して送信元クライアント(「ユーザー」)の IP アドレスを照合するには、セキュリティ ポリシーで userIpRequestHeaders[]
を構成する必要があります。
origin.user_ip
の値はデフォルトで origin.ip
の値になるため、次の条件では、送信元クライアントの IP アドレスではなく、リクエストの送信元 IP アドレスが返されます。
userIpRequestHeaders[]
オプションを構成しない。- 構成されたヘッダーが存在しない。
- 構成されたヘッダーに無効な IP アドレス値が含まれている。
たとえば、MALICIOUS_IPS
という IP アドレス グループの中に悪意のある IP アドレスが 10,000 個あるとします。また、アップストリーム プロキシを使用しており、このプロキシには、送信元クライアントに関する情報がヘッダーに含まれています。その場合、次の一致条件を含むセキュリティ ポリシーの単一の deny
ルールを使用することで、これらの IP アドレスをすべて拒否できます。
evaluateAddressGroup('MALICIOUS_IPS', origin.user_ip)
ユーザーの IP アドレスの詳細については、属性をご覧ください。
組織スコープのアドレス グループを使用する
以降のセクションでは、 Google Cloud コンソールまたは Google Cloud CLI を使用して組織スコープのアドレス グループを作成および変更する方法、またセキュリティ ポリシーで組織スコープのアドレス グループを使用する方法について説明します。
組織スコープのアドレス グループを作成または変更する
組織スコープのアドレス グループは、サービスレベルのセキュリティ ポリシーと階層型セキュリティ ポリシーの両方で使用できます。
以降のセクションでは、組織スコープのアドレス グループの作成方法、組織スコープのアドレス グループへのアドレスの追加と削除の方法、組織スコープのアドレス グループの削除方法について説明します。
組織スコープのアドレス グループを作成する
アドレス グループを作成する際は、--capacity
と --type
のフラグを使用して容量と IP アドレス バージョンを指定する必要があります。アドレス グループの作成後にこれらの値を変更することはできません。
また、Cloud Armor での最大容量が、Cloud Next Generation Firewall などの他のプロダクトでの最大容量より大きい場合もあります。したがって、複数のプロダクトで同じアドレス グループを使用する場合は、容量をそれらのプロダクトの中で最も低い最大容量以下に設定する必要があります。
コンソール
- Google Cloud コンソールで、[アドレス グループ] ページに移動します。
- プロジェクト セレクタ メニューで組織を選択します(利用可能な場合)。
- [アドレス グループを作成] をクリックします。
- [名前] フィールドに名前を入力します。
- 省略可: [説明] フィールドに説明を追加します。
- [スコープ] で [グローバル] を選択します。
- [タイプ] で [IPv4] または [IPv6] を選択します。
[目的] で [Cloud Armor] を選択します。Cloud Next Generation Firewall ポリシーでアドレス グループを使用する場合は、[Cloud NGFW と Cloud Armor] を選択します。
アドレス グループの目的の選択方法の詳細については、仕様をご覧ください。
[容量] フィールドにアドレス グループの容量を入力します。
[IP アドレス] フィールドに、アドレス グループに含める IP アドレスまたは IP 範囲をカンマで区切って入力します。例:
1.1.1.0/24,1.2.0.0
IP アドレスまたは IP 範囲の数は、構成された容量を超えることはできません。
[作成] をクリックします。
gcloud
次の gcloud network-security org-address-groups create
コマンドの例を使用して、1,000 個の IPv4 アドレスを格納する容量を持つ GROUP_NAME
という名前の組織スコープのアドレス グループを作成します。このアドレス グループは Cloud Armor と Cloud NGFW の両方で使用できます。
gcloud beta network-security org-address-groups create GROUP_NAME \ --location global \ --description "org address group description" \ --capacity 1000 \ --type IPv4 \ --purpose DEFAULT,CLOUD_ARMOR
また、目的を CLOUD_ARMOR
のみに設定して、容量の大きい組織スコープのアドレス グループを作成することもできます。次の例では、10,000 個の IPv6 IP アドレス範囲を入れる容量を持つアドレス グループを作成します。
gcloud beta network-security org-address-groups create GROUP_NAME \ --location global \ --description "org address group description" \ --capacity 10000 \ --type IPv6 \ --purpose CLOUD_ARMOR
組織スコープのアドレス グループに項目を追加する
組織スコープのアドレス グループを作成した後に、項目を追加できます。
コンソール
- Google Cloud コンソールで、[アドレス グループ] ページに移動します。
- プロジェクト セレクタ メニューで組織を選択します(利用可能な場合)。
- アドレス グループを編集するには、アドレス グループの名前をクリックします。
- [編集] をクリックします。
- [IP アドレス] フィールドで、IP アドレスのカンマ区切りリストに新しい項目を追加します。または、[アドレスをインポート] をクリックして、IP アドレスのリストを含む CSV ファイルをアップロードすることもできます。
- [保存] をクリックします。
gcloud
次の例では、gcloud network-security org-address-groups add-items
コマンドを使用して、IP アドレス 192.168.1.2
、192.168.1.8
、192.168.1.9
を組織スコープのアドレス グループ GROUP_NAME
に追加します。--items
フラグを使用して、項目のカンマ区切りのリストを指定します。
gcloud network-security org-address-groups add-items GROUP_NAME \ --location global \ --items 192.168.1.2,192.168.1.8,192.168.1.9
組織スコープのアドレス グループから項目を削除する
組織スコープのアドレス グループから項目を削除する手順は次のとおりです。
コンソール
- Google Cloud コンソールで、[アドレス グループ] ページに移動します。
- プロジェクト セレクタ メニューで組織を選択します(利用可能な場合)。
- アドレス グループを編集するには、アドレス グループの名前をクリックします。
- [編集] をクリックします。
- [IP アドレス] フィールドで、削除する項目を IP アドレスのカンマ区切りリストから削除します。
- [保存] をクリックします。
gcloud
次の例では、gcloud network-security org-address-groups remove-items
コマンドを使用して、前のコマンドで追加した IP アドレス 192.168.1.2
、192.168.1.8
、192.168.1.9
を削除します。
gcloud network-security org-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 org-address-groups clone-items
コマンドを使用して、送信元アドレス グループ SOURCE_GROUP_NAME
から宛先アドレス グループ GROUP_NAME
に、IP アドレスのクローンを作成します。
gcloud network-security org-address-groups clone-items GROUP_NAME \ --location global \ --source SOURCE_GROUP_NAME
組織スコープのアドレス グループを削除する
ファイアウォール ポリシーやセキュリティ ポリシーなどのリソースで参照されている場合、組織スコープのアドレス グループは削除できません。アドレス グループを削除する手順は次のとおりです。
コンソール
- Google Cloud コンソールで、[アドレス グループ] ページに移動します。
- プロジェクト セレクタ メニューで組織を選択します(利用可能な場合)。
- 削除するアドレス グループの横にあるチェックボックスをオンにします。選択したアドレス グループがファイアウォール ポリシーやセキュリティ ポリシーで参照されていないことを確認します。
- [削除] をクリックし、確認のためもう一度 [削除] をクリックします。
gcloud
次の例では、gcloud network-security org-address-groups delete
コマンドを使用してアドレス グループ GROUP_NAME
を削除します。
gcloud network-security org-address-groups delete GROUP_NAME \ --location global
セキュリティ ポリシーで組織スコープのアドレス グループを使用する
アドレス グループを作成して IP アドレスを追加した後は、そのアドレス グループを Cloud Armor の既存のバックエンド セキュリティ ポリシーで使用できます。以下に、アドレス グループの使用例を 2 つ示します。
組織内のすべてのバックエンド サービスに対して IP アドレスのグループを拒否する
たとえば、MALICIOUS_IPS
という組織スコープの IP アドレス グループの中に悪意のある IP アドレスが 10,000 個あるとします。単一の階層型セキュリティ ポリシーを使用すると、組織内のすべてのバックエンド サービスに対して、このような IP アドレスをすべて拒否できます。階層型セキュリティ ポリシーを作成し、次の一致条件を持つ deny
ルールを追加します。
evaluateOrganizationAddressGroup('MALICIOUS_IPS', origin.ip)
最後に、階層型セキュリティ ポリシーを組織内のすべてのバックエンド サービスに関連付けます。POLICY_NAME
は階層型セキュリティ ポリシーの名前に、ORGANIZATION_ID
は組織の ID に置き換えます。
gcloud beta compute org-security-policies associations create \ --security-policy=POLICY_NAME \ --organization=ORGANIZATION_ID
組織内のすべてのバックエンド サービスで IP アドレス範囲のグループを再利用する
この例では、前の例と同じ 10,000 個の IP アドレスを含むリストがあるとします。ただし、一部の IP アドレスはウェブ クローラーであることがわかっています。ウェブ クローラー以外の IP アドレスが組織内のすべてのバックエンド サービスにアクセスできないようにブロックしますが、検索エンジン最適化(SEO)を改善するために、ウェブ クローラーがバックエンド サービスにアクセスできるかどうかをプロジェクト スコープのセキュリティ ポリシーで決定できるようにします。
BACKEND_SERVICE_1
へのすべてのアドレスのアクセスを拒否し、BACKEND_SERVICE_2
への IP アドレス範囲 66.249.77.32/27
と 66.249.77.64/27
のアクセスを許可するには、次の手順を使用します。
BACKEND_POLICY_1
という名前のバックエンド セキュリティ ポリシーを作成します。次の一致条件を使用して
BACKEND_POLICY_1
にdeny
ルールを追加します。これにより、MALICIOUS_IPS
内のすべての IP アドレスがブロックされます。evaluateOrganizationAddressGroup('MALICIOUS_IPS', origin.ip)
次のコマンドを使用して、
BACKEND_POLICY_1
をBACKEND_SERVICE_1
に関連付けます。gcloud compute backend-services update BACKEND_SERVICE_1 \ --security-policy BACKEND_POLICY_1
BACKEND_POLICY_2
という名前の 2 つ目のバックエンド セキュリティ ポリシーを作成します。次の一致条件を使用して
BACKEND_POLICY_2
にdeny
ルールを追加します。これにより、66.249.77.32/27
と66.249.77.64/27
を除くMALICIOUS_IPS
内のすべての IP アドレスがブロックされます。evaluateOrganizationAddressGroup('MALICIOUS_IPS', origin.ip, [`66.249.77.32/27`, `66.249.77.64/27`])
次のコマンドを使用して、
BACKEND_POLICY_2
をBACKEND_SERVICE_2
に関連付けます。ORG_ID
は組織の ID に置き換えます。gcloud compute backend-services update BACKEND_SERVICE_2 \ --security-policy BACKEND_POLICY_2
アドレス グループを使用して、組織内のすべてのバックエンド サービスのユーザー IP アドレスを照合する
たとえば、MALICIOUS_IPS
という IP アドレス グループの中に悪意のある IP アドレスが 10,000 個あるとします。また、アップストリーム プロキシを使用しており、このプロキシには、送信元クライアントの IP アドレスに関する情報がヘッダーに含められています。その場合、次の一致条件を含むセキュリティ ポリシーの単一の deny
ルールを使用することで、これらの IP アドレスをすべて拒否して組織内のすべてのバックエンド サービスにアクセスできないようにします。
evaluateOrganizationAddressGroup('MALICIOUS_IPS', origin.user_ip)
ユーザーの IP アドレスの詳細については、属性をご覧ください。