アドレス グループを構成する

アドレス グループを使用すると、複数の IP アドレスと IP アドレス範囲を 1 つの名前付き論理単位に結合し、複数のサービスで使用できます。このドキュメントでは、Google Cloud Armor セキュリティ ポリシーでアドレス グループを使用する方法について説明します。アドレス グループを使用するには、有効な Google Cloud Armor Enterprise サブスクリプションが必要です。

IAM ロール

アドレス グループを作成して管理するには、ネットワーク管理者ロール(compute.networkAdmin)またはセキュリティ管理者ロール(compute.securityAdmin)が必要です。また、同等の権限セットでカスタムロールを定義することもできます。

次の表に、アドレス グループで一連のタスクを実行するために必要な Identity and Access Management(IAM)権限の一覧を示します。

タスク IAM の役割名 IAM 権限
アドレス グループの作成と管理 compute.networkAdmin

compute.securityAdmin

networksecurity.addressGroups.*
アドレス グループの検出と表示 compute.networkUser networksecurity.addressGroups.list

networksecurity.addressGroups.get

networksecurity.addressGroups.use

特定の IAM 権限を含むロールの詳細については、IAM 権限のリファレンスをご覧ください。

アドレス グループを作成または変更する

以降のセクションでは、アドレス グループの作成方法、アドレス グループへのアドレスの追加と削除の方法、アドレス グループの削除方法について説明します。

アドレス グループを作成する

アドレス グループを作成するときは、--capacity フラグと --type フラグを使用して、容量と IP アドレス バージョンを指定する必要があります。アドレス グループの作成後にこれらの値を変更することはできません。

また、Google Cloud Armor の最大容量は、Cloud Next Generation Firewall などの他のサービスの最大容量よりも大きい場合があります。したがって、複数のプロダクトで同じアドレス グループを使用する場合は、それらのプロダクト間の最小容量以下になるように容量を設定する必要があります。

コンソール

  1. Google Cloud コンソールで、[アドレス グループ] ページに移動します。

    [アドレス グループ] に移動

  2. プロジェクト セレクタ メニューでプロジェクトを選択します(利用可能な場合)。

  3. [アドレス グループを作成] をクリックします。

  4. [名前] フィールドに名前を入力します。

  5. (省略可): [説明] フィールドに説明を追加します。

  6. [スコープ] で、[グローバル] を選択します。

  7. [タイプ] で [IPv4] または [IPv6] を選択します。

  8. [目的] で [Cloud Armor] を選択します。または、Cloud 次世代ファイアウォール ポリシーでアドレス グループも使用する場合は、[ファイアウォールと Cloud Armor] を選択します。

    目的の選択の詳細については、アドレス グループの仕様をご覧ください。

  9. [容量] フィールドに、アドレス グループの容量を入力します。

  10. [IP アドレス] フィールドに、アドレス グループに含める IP アドレスまたは IP 範囲をカンマで区切ってリストします。例: 1.1.1.0/24,1.2.0.0

  11. [作成] をクリックします。

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 コマンドを使用して項目を追加できます。

コンソール

  1. Google Cloud コンソールで、[アドレス グループ] ページに移動します。

    [アドレス グループ] に移動

  2. プロジェクト セレクタ メニューでプロジェクトを選択します(利用可能な場合)。

  3. アドレス グループを編集するには、アドレス グループの名前をクリックします。

  4. [編集] をクリックします。

  5. [IP アドレス] フィールドで、IP アドレスのカンマ区切りのリストに新しい項目を追加します。または、[アドレスをインポート] をクリックして、IP アドレスのリストを含む CSV ファイルをアップロードすることもできます。

  6. [保存] をクリックします。

gcloud

次の例では、IP アドレス 192.168.1.2192.168.1.8192.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 コマンドを使用します。

コンソール

  1. Google Cloud コンソールで、[アドレス グループ] ページに移動します。

    [アドレス グループ] に移動

  2. プロジェクト セレクタ メニューでプロジェクトを選択します(利用可能な場合)。

  3. アドレス グループを編集するには、アドレス グループの名前をクリックします。

  4. [編集] をクリックします。

  5. [IP アドレス] フィールドで、IP アドレスのカンマ区切りリストから削除する項目を削除します。

  6. [保存] をクリックします。

gcloud

次のコマンドは、前のコマンドで追加した IP アドレス 192.168.1.2192.168.1.8192.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

アドレス グループを削除する

ファイアウォール ポリシーやセキュリティ ポリシーなどのリソースからアドレス グループを参照している場合、アドレス グループは削除できません。アドレス グループを削除する手順は次のとおりです。

コンソール

  1. Google Cloud コンソールで、[アドレス グループ] ページに移動します。

    [アドレス グループ] に移動

  2. プロジェクト セレクタ メニューでプロジェクトを選択します(利用可能な場合)。

  3. 削除するアドレス グループの横にあるチェックボックスをオンにします。選択したアドレス グループが、ファイアウォールやセキュリティ ポリシーから参照されていないことを確認します。

  4. [削除] をクリックし、確認のためもう一度 [削除] をクリックします。

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/2766.249.77.64/27BACKEND_SERVICE_2 へのアクセスを許可します。

  1. POLICY_1 というバックエンド セキュリティ ポリシーを作成し、BACKEND_SERVICE_1 に接続します。
  2. POLICY_1 で、次の一致条件を持つ deny ルールを作成します。

    evaluateAddressGroup('BAD_IPS', origin.ip)
    
  3. POLICY_2 という名前の 2 番目のバックエンド セキュリティ ポリシーを作成し、BACKEND_SERVICE_2 に接続します。

  4. POLICY_2 で、次の一致条件を持つ deny ルールを作成します。66.249.77.32/2766.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 アドレスの詳細については、ルール言語属性をご覧ください。

次のステップ