このページでは、Google Cloud Armor セキュリティ ポリシーを管理し、アプリケーションへの受信トラフィックをフィルタリングする方法について説明します。Cloud Armor セキュリティ ポリシーは、分散型サービス拒否(DDoS)攻撃やその他のインターネット脅威からウェブ アプリケーションとサービスを保護するのに役立ちます。強固なセキュリティ ポスチャーを適用するには、セキュリティ ポリシーの作成、テスト、統合を通じて管理する必要があります。セキュリティ ポリシーを作成または表示するには、Cloud Armor セキュリティ ポリシーを作成して表示するをご覧ください。
セキュリティ ポリシーを管理する
以降のセクションでは、セキュリティ ポリシーの一覧表示、更新、削除、テストを行う方法について説明します。
セキュリティ ポリシーを一覧表示する
このセクションの手順に沿って、プロジェクト内の Cloud Armor セキュリティ ポリシーを一覧表示します。
コンソール
Google Cloud コンソールで、[Cloud Armor ポリシー] ページに移動します。
ポリシーを表示するには、ポリシーのリストで、その特定のポリシーの名前をクリックします。
gcloud
gcloud compute security-policies list
次に例を示します。
gcloud compute security-policies list
出力:
NAME: my-policy REGION: us-central1
詳細については、gcloud compute security-policies
list をご覧ください。
セキュリティ ポリシーを更新する
このセクションの手順では、Cloud Armor のセキュリティ ポリシーを更新する方法について説明します。ポリシーの説明の変更、デフォルトのルールの変更、ターゲット バックエンド サービスの変更、ルールの追加を行うことができます。
コンソール
Google Cloud コンソールで、[Cloud Armor ポリシー] ページに移動します。
ポリシーのリストで、更新するポリシーの名前を見つけて、そのポリシーの [メニュー] をクリックします。
- 説明またはデフォルトのルール アクションを更新するには、[編集] を選択して変更した後で [更新] をクリックします。
- ルールを追加するには、[ルールを追加] を選択し、セキュリティ ポリシーにルールを追加するの手順に沿って操作します。
- ターゲット バックエンド サービスを置き換えるには、[ターゲットへのポリシーの適用] を選択し、[ターゲットを追加] をクリックしてターゲットを選択してから、[追加] をクリックします。
gcloud
セキュリティ ポリシーを更新するには、次の Google Cloud CLI の手順を行います。
- ルールを更新するには、セキュリティ ポリシーで 1 つのルールを更新するをご覧ください。
- ルールを追加するには、セキュリティ ポリシーにルールを追加するをご覧ください。
- ルールを削除するには、セキュリティ ポリシーからルールを削除するをご覧ください。
- 1 回のアトミック アップデートで複数のルールを更新するには、セキュリティ ポリシーの複数のルールをアトミックに更新するをご覧ください。
- ルール以外のフィールド(説明など)を更新するには、セキュリティ ポリシーをエクスポートするとセキュリティ ポリシーをインポートするをご覧ください。
セキュリティ ポリシーの削除
このセクションでは、Cloud Armor セキュリティ ポリシーを削除する方法について説明します。ポリシーを削除する前に、ポリシーからすべてのバックエンド サービスを削除します。
コンソール
Google Cloud コンソールで、[Cloud Armor ポリシー] ページに移動します。
削除するポリシーの横にあるチェックボックスをオンにします。
ページの右上で [削除] をクリックします。
gcloud
gcloud compute security-policies delete NAME を使用してください。NAME は、セキュリティ ポリシーの名前に置き換えます。
gcloud compute security-policies delete NAME
セキュリティ ポリシーをテストする
すべての新しいルールをプレビュー モードでデプロイしてから、リクエストログを調べて、ポリシーとルールが期待どおりに動作していることを確認することをおすすめします。
セキュリティ ポリシーのルールを管理する
以降のセクションでは、セキュリティ ポリシーのルールの一覧表示、追加、更新、削除を行う方法について説明します。
セキュリティ ポリシーのルールを一覧表示する
このセクションの手順に沿って、Cloud Armor セキュリティ ポリシーのルールを一覧表示します。
コンソール
Google Cloud コンソールで、[Cloud Armor ポリシー] ページに移動します。
特定のセキュリティ ポリシーの名前をクリックします。[ポリシーの詳細] ページの [ルール] タブにポリシールールが表示されます。
gcloud
次の gcloud コマンドを使用して、セキュリティ ポリシー内のすべてのルールを一覧表示します。
gcloud compute security-policies describe NAME \
次の gcloud コマンドを使用して、指定されたリージョンの 1 つのセキュリティ ポリシー内のすべてのルールを、ポリシーの説明とともに一覧表示します。
gcloud compute security-policies describe NAME \ --region REGION
次の gcloud コマンドを使用して、ルールの説明を取得します。
gcloud compute security-policies rules describe PRIORITY \
--security-policy POLICY_NAME
たとえば、次のコマンドは、セキュリティ ポリシー my-policy の優先度が 1, 000 のルールを記述します。
gcloud compute security-policies rules describe 1000 \
--security-policy my-policy
出力:
action: deny(403) description: block traffic from 192.0.2.0/24 and 198.51.100.0/24 kind: compute#securityPolicyRule match: srcIpRanges: - '192.0.2.0/24' - '198.51.100.0/24' preview: false priority: 1000
詳細については、gcloud compute security-policies
describe をご覧ください。
セキュリティ ポリシーにルールを追加する
このセクションの手順に沿って、Cloud Armor セキュリティ ポリシーにルールを追加します。
コンソール
Google Cloud コンソールで、[Cloud Armor ポリシー] ページに移動します。
セキュリティ ポリシーの名前をクリックして、[ポリシーの詳細] ページを開きます。
ページ中央の [ルール] タブをクリックします。
[ルールを追加] をクリックします。
(省略可)ルールの説明を入力します。
モードを選択します。
- 基本モード: IP アドレスまたは IP 範囲に基づいて、トラフィックを許可または拒否します。
- 詳細モード: ルール式に基づいてトラフィックを許可または拒否します。
[一致] フィールドで、ルールが適用される条件を指定します。
基本モード: ルールで照合する IP アドレス範囲の数を 1 ~ 10 の間で入力します。追加できる IP アドレス範囲は 10 個までです。上限については、Cloud Armor の割り当てと上限をご覧ください。
詳細モード:
- 一致条件作成ツール(プレビュー): 視覚的なビルダーを使用して、生の CEL コードを記述せずに式を作成します。条件を組み合わせてグループ化し、文字列変換を適用します。一致条件作成ツールを使用するをご覧ください。
- 一致条件エディタ: 受信リクエストと照らして評価する式を入力します。詳細については、カスタムルール言語リファレンスをご覧ください。
次の式は、
User-Agentヘッダーに文字列exampleを含む IP アドレス1.2.3.4からのリクエストと一致します。inIpRange(origin.ip, '1.2.3.4/32') && has(request.headers['user-agent']) && request.headers['user-agent'].contains('example')次の式は、特定の値を含む Cookie を持つリクエストと一致します。
has(request.headers['cookie']) && request.headers['cookie'].contains('cookie_name=cookie_value')次の式は、リージョン
AUからのリクエストと一致します。origin.region_code == 'AU'次の式は、指定された IP 範囲に存在しないリージョン
AUからのリクエストを照合します。origin.region_code == "AU" && !inIpRange(origin.ip, '1.2.3.0/24')次の式は、URI が正規表現に一致する場合、リクエストを照合します。
request.path.matches('/example_path/')次の式は、
user-idヘッダーに Base64 でエンコードされた値が含まれており、その値をデコードすると特定の文字列が含まれている場合に、リクエストを照合します。has(request.headers['user-id']) && request.headers['user-id'].base64Decode().contains('myValue')事前構成された式セットを使用する次の式は、SQLi 攻撃を照合します。
evaluatePreconfiguredWaf('sqli-stable')
[アクション] リストで、[許可] または [拒否] を選択します。
拒否ルールを作成している場合は、[拒否ステータス] メッセージを選択します。
ルールのプレビュー モードを有効にするには、[有効にする] を選択します。
[優先度] フィールドに正の整数を入力します。
[追加] をクリックします。
gcloud
gcloud compute security-policies rules create
PRIORITY コマンドを使用します。PRIORITY は、ポリシー内のルールの優先度に置き換えます。
gcloud compute security-policies rules create PRIORITY \
--security-policy POLICY_NAME \
--description DESCRIPTION \
--src-ip-ranges IP_RANGES | --expression EXPRESSION \
--action=[ allow | deny-403 | deny-404 | deny-502 ] \
--preview
たとえば、次のコマンドは、優先度 1000 のルールを追加して、IP アドレス範囲 192.0.2.0/24 と 198.51.100.0/24 からのトラフィックをブロックします。
gcloud compute security-policies rules create 1000 \
--security-policy my-policy \
--description "block traffic from 192.0.2.0/24 and 198.51.100.0/24" \
--src-ip-ranges "192.0.2.0/24","198.51.100.0/24" \
--action "deny-403"
条件を指定するには、--expression フラグを使用します。次のコマンドは、User-Agent ヘッダーに文字列 example を含む IP アドレス 1.2.3.4 からのトラフィックを許可するルールを追加します。
gcloud compute security-policies rules create 1000 \
--security-policy my-policy \
--expression "inIpRange(origin.ip, '1.2.3.4/32') && has(request.headers['user-agent']) && request.headers['user-agent'].contains('example')" \
--action allow \
--description "Block User-Agent 'example'"
次のコマンドは、リクエストの Cookie に特定の値が含まれている場合に、リクエストをブロックするルールを追加します。
gcloud compute security-policies rules create 1000 \
--security-policy my-policy \
--expression "has(request.headers['cookie']) && request.headers['cookie'].contains('80=BLAH')" \
--action deny-403 \
--description "Cookie Block"
次のコマンドは、リージョン AU からのリクエストをブロックするルールを追加します。
gcloud compute security-policies rules create 1000 \
--security-policy my-policy \
--expression "origin.region_code == 'AU'" \
--action deny-403 \
--description "AU block"
次のコマンドは、指定した IP 範囲にないリージョン AU からのリクエストをブロックするルールを追加します。
gcloud compute security-policies rules create 1000 \
--security-policy my-policy \
--expression "origin.region_code == "AU" && !inIpRange(origin.ip, '1.2.3.0/24')" \
--action deny-403 \
--description "country and IP block"
次のコマンドは、正規表現に一致する URI を含むリクエストをブロックするルールを追加します。
gcloud compute security-policies rules create 1000 \
--security-policy my-policy \
--expression "request.path.matches('/example_path/')" \
--action deny-502 \
--description "regex block"
次のコマンドは、Base64 デコードされた user-id ヘッダーの値に特定の値が含まれている場合に、リクエストをブロックするルールを追加します。
gcloud compute security-policies rules create 1000 \
--security-policy my-policy \
--expression "has(request.headers['user-id']) && request.headers['user-id'].base64Decode().contains('myValue')" \
--action deny-403 \
--description "country and IP block"
次のコマンドは、SQLi 攻撃を緩和する目的で設定された事前構成済みの式を使用するルールを追加します。
gcloud compute security-policies rules create 1000 \
--security-policy my-policy \
--expression "evaluatePreconfiguredWaf('sqli-stable')" \
--action deny-403
セキュリティ ポリシー内の単一のルールを更新する
このセクションでは、Cloud Armor セキュリティ ポリシーの単一のルールを更新する方法について説明します。複数のルールをアトミックに更新するには、セキュリティ ポリシーで複数のルールをアトミックに更新するをご覧ください。
コンソール
Google Cloud コンソールで、[Cloud Armor ポリシー] ページに移動します。
セキュリティ ポリシーの名前をクリックして、[ポリシーの詳細] ページを開きます。
ページ中央の [ルール] タブをクリックします。
更新するルールの横にある [編集] をクリックします。[ルールの編集] ページが表示されます。
変更を加え、[更新] をクリックします。
gcloud
ルールを更新するには、次のコマンドを使用します。一度に更新できるセキュリティ ポリシーは 1 つだけです。
gcloud compute security-policies rules update PRIORITY [ \
--security-policy POLICY_NAME \
--description DESCRIPTION \
--src-ip-ranges IP_RANGES | --expression EXPRESSION \
--action=[ allow | deny-403 | deny-404 | deny-502 ] \
--preview
]
たとえば、次のコマンドは、IP アドレス範囲 192.0.2.0/24 からのトラフィックを許可する優先度 1111 のルールを更新します。
gcloud compute security-policies rules update 1111 \
--security-policy my-policy \
--description "allow traffic from 192.0.2.0/24" \
--src-ip-ranges "192.0.2.0/24" \
--action "allow"
上記のコマンドの詳細については、gcloud compute
security-policies rules
update をご覧ください。
ルールの優先度を更新するには、REST API を使用します。securityPolicies.patchRule をご覧ください。
一致条件作成ツールを使用する
一致条件作成ツールは、 Google Cloud コンソールのビジュアル インターフェースです。これにより、Common Expression Language(CEL)コードを記述せずに複雑な Cloud Armor ルール式を作成できます。コードを記述する代わりに、ビルダーの構造化された UI を使用して条件とグループ ロジックを組み合わせることができます。これにより、構文エラーを回避し、ルール構造をより適切に可視化できます。ビルダーは、フラット リストと 5 レベルまでのネストされたロジックをサポートしています。このツールは、マルチクラウド バックエンドまたはハイブリッド デプロイを保護するルールを構成するときに使用します。この場合、トラフィックをルーティングする前に特定のリクエスト属性を検査する必要がある場合があります。
一致条件作成ツールの機能
一致条件作成ツールには次の機能があります。
- ロジックとネスト:
AND演算子とOR演算子を使用して複数の条件を組み合わせます。ビルダーは、最大 5 つの式をグループ化してネストすることをサポートしています。 - 文字列変換: 文字列ベースの属性(
request.pathやrequest.headersなど)の場合、評価前に変換を適用してデータを正規化します。サポートされている変換は次のとおりです。- 小文字と大文字
- Base64 デコード
- URL デコードと URL デコード(Unicode)
- UTF-8 から Unicode への変換
- 双方向解析: 視覚的な一致条件ビルダーと未加工テキストの一致条件エディタを切り替えます。UI は、未加工の CEL コードをビジュアル ブロックに自動的に解析します。
- 関数サポート: ビルダーは、事前構成された WAF ルール、アドレス グループ、Threat Intelligence などの関数ベースの式用の UI コントロールを提供します。
制限事項
一致条件作成ツールは、高度なルールを作成するためのデフォルトのインターフェースです。式にサポートされていないロジック(不明なマクロなど)が含まれている場合、ビルダーは無効になります。このような場合は、[一致条件エディタ] の未加工のテキストを使用してルールを編集します。
また、ビルダーで使用できる特定の式は、プロジェクトの Google Cloud Armor Enterprise ティアとセキュリティ ポリシーのタイプによって異なります。
セキュリティ ポリシーの複数のルールをアトミックに更新する
アトミック更新機能を使用すると、1 回の更新で複数のルールに変更を適用できます。単一ルールの更新では、古いルールと新しいルールが短期間重複する可能性があるため、エラーなどの意図しない動作が発生することがあります。
複数のルールをアトミックに更新するには、現在のセキュリティ ポリシーを JSON ファイルまたは YAML ファイルにエクスポートして、ファイルを変更します。変更したファイルを使用してセキュリティ ポリシーを作成し、バックエンド サービスのセキュリティ ポリシーを切り替えます。
gcloud
次の例に示すように、更新するポリシーをエクスポートします。
gcloud compute security-policies export my-policy \ --file-name my-file \ --file-format yamlエクスポートされたポリシーは、たとえば次の例のようになります。
description: my description fingerprint: PWfLGDWQDLY= id: '123' name: my-policy rules: - action: deny(404) description: my-rule-1 match: expr: expression: evaluatePreconfiguredWaf('xss-stable') versionedExpr: SRC_IPS_V1 preview: false priority: 1 - action: allow description: my-rule-2 match: config: srcIpRanges: - '1.2.3.4' versionedExpr: SRC_IPS_V1 preview: false priority: 2 - action: deny description: default rule kind: compute#securityPolicyRule match: config: srcIpRanges: - '*' versionedExpr: SRC_IPS_V1 preview: false priority: 2147483647 selfLink: https://www.googleapis.com/compute/v1/projects/my-project/global/securityPolicies/my-policyテキスト エディタを使用してポリシーを変更します。たとえば、既存のルールの優先度を変更したり、ルールを追加したりできます。
description: my description fingerprint: PWfLGDWQDLY= id: '123' name: my-policy rules: - action: deny(404) description: my-rule-1 match: expr: expression: evaluatePreconfiguredWaf('xss-stable') versionedExpr: SRC_IPS_V1 preview: false priority: 1 - action: allow description: my-new-rule match: config: srcIpRanges: - '1.2.3.1' versionedExpr: SRC_IPS_V1 preview: false priority: 10 - action: allow description: my-rule-2 match: config: srcIpRanges: - '1.2.3.4' versionedExpr: SRC_IPS_V1 preview: false priority: 11 - action: deny description: default rule kind: compute#securityPolicyRule match: config: srcIpRanges: - '*' versionedExpr: SRC_IPS_V1 preview: false priority: 2147483647 selfLink: https://www.googleapis.com/compute/v1/projects/my-project/global/securityPolicies/my-policy次の例に示すように、新しい Cloud Armor セキュリティ ポリシーを作成し、変更したファイルの名前と形式を指定します。
gcloud compute security-policies create new-policy \ --file-name modified-policy \ --file-format yaml次の例に示すように、関連するバックエンド サービスから古いセキュリティ ポリシーを削除します。
gcloud compute backend-services update my-backend \ --security-policy ""次の例に示すように、新しいセキュリティ ポリシーをバックエンド サービスに追加します。
gcloud compute backend-services update my-backend \ --security-policy new-policy古いポリシーが使用されていない場合は、ポリシーを削除します。
gcloud compute security-policies delete my-policy
セキュリティ ポリシーからルールを削除する
このセクションの手順に沿って、Cloud Armor セキュリティ ポリシーからルールを削除します。
コンソール
Google Cloud コンソールで、[Cloud Armor ポリシー] ページに移動します。
セキュリティ ポリシーの名前をクリックして、[ポリシーの詳細] ページを開きます。
ページ中央の [ルール] タブで、削除するルールの横にあるチェックボックスをオンにします。
[削除] をクリックします。
gcloud
ルールを削除するには、次のコマンドを使用します。一度に変更できるセキュリティ ポリシーは 1 つだけですが、一度に複数のルールを削除できます。
gcloud compute security-policies rules delete PRIORITY [...] [
--security-policy POLICY_NAME \
]
次に例を示します。
gcloud compute security-policies rules delete 1000 \
--security-policy my-policy
セキュリティ ポリシーの接続と削除
以降のセクションでは、セキュリティ ポリシーの関連付けと削除の方法について説明します。
セキュリティ ポリシーをバックエンド サービスに接続する
このセクションの手順に沿って、Cloud Armor セキュリティ ポリシーをバックエンド サービスに接続します。セキュリティ ポリシーは複数のバックエンド サービスに接続できますが、1 つのバックエンド サービスに接続できるセキュリティ ポリシーは種類ごとに 1 つだけです。
コンソール
Google Cloud コンソールで、[Cloud Armor ポリシー] ページに移動します。
セキュリティ ポリシーの名前をクリックして、[ポリシーの詳細] ページを開きます。
ページ中央の [ターゲット] タブをクリックします。
[新しいターゲットにポリシーを適用] をクリックします。
[ターゲットを追加] をクリックします。
[ターゲット] リストでターゲットを選択し、[追加] をクリックします。
gcloud
バックエンド セキュリティ ポリシーをバックエンド サービスに接続する場合は、gcloud compute backend-services コマンドと --security-policy フラグを使用します。
gcloud compute backend-services update my-backend \
--security-policy my-policy
エッジ セキュリティ ポリシーをバックエンド サービスに接続する場合は、gcloud compute backend-services コマンドと --edge-security-policy フラグを使用します。
gcloud compute backend-services update my-backend \
--edge-security-policy my-policy
バックエンド サービスからセキュリティ ポリシーを削除する
このセクションの手順に沿って、Cloud Armor セキュリティ ポリシーをバックエンド サービスから削除します。
コンソール
Google Cloud コンソールで、[Cloud Armor ポリシー] ページに移動します。
セキュリティ ポリシーの名前をクリックして、[ポリシーの詳細] ページを開きます。
ページ中央の [ターゲット] タブをクリックします。
ポリシーを削除する対象のバックエンド サービスを選択します。
[削除] をクリックします。
[ターゲットを削除] メッセージで、[削除] をクリックします。
gcloud
バックエンド セキュリティ ポリシーを削除する場合は、gcloud compute
backend-services コマンドと --security-policy フラグを使用します。
gcloud compute backend-services update my-backend \
--security-policy ""
エッジ セキュリティ ポリシーを削除する場合は、gcloud compute
backend-services コマンドと --edge-security-policy フラグを使用します。
gcloud compute backend-services update my-backend \
--edge-security-policy ""
セキュリティ ポリシーをバックエンド バケットに接続する
このセクションの手順に沿って、Cloud Armor のエッジ セキュリティ ポリシーをバックエンド バケットに接続します。エッジ セキュリティ ポリシーは複数のバックエンド バケットに接続できます。
コンソール
Google Cloud コンソールで、[Cloud Armor ポリシー] ページに移動します。
セキュリティ ポリシーの名前をクリックして、[ポリシーの詳細] ページを開きます。
ページ中央の [ターゲット] タブをクリックします。
[新しいターゲットにポリシーを適用] をクリックします。
[ターゲットを追加] をクリックします。
[ターゲット] リストでターゲットを選択し、[追加] をクリックします。
gcloud
エッジ セキュリティ ポリシーをバックエンド バケットに接続する場合は、cloud
compute backend-buckets コマンドと --edge-security-policy フラグを使用します。
gcloud compute backend-services update my-bucket \
--edge-security-policy my-edge-policy
バックエンド バケットからセキュリティ ポリシーを削除する
このセクションの手順に沿って、Cloud Armor のエッジ セキュリティ ポリシーをバックエンド バケットから削除します。
コンソール
Google Cloud コンソールで、[Cloud Armor ポリシー] ページに移動します。
セキュリティ ポリシーの名前をクリックして、[ポリシーの詳細] ページを開きます。
ページ中央の [ターゲット] タブをクリックします。
ポリシーを削除する対象のバックエンド サービスを選択します。
[削除] をクリックします。
[ターゲットを削除] メッセージで、[削除] をクリックします。
gcloud
バックエンド バケットからエッジ セキュリティ ポリシーを削除する場合は、cloud compute backend-buckets コマンドと --edge-security-policy フラグを使用します。
gcloud compute backend-services update my-bucket \
--edge-security-policy ""
セキュリティ ポリシーのインポートとエクスポート
以降のセクションでは、セキュリティ ポリシーをインポートおよびエクスポートする方法について説明します。
セキュリティ ポリシーをエクスポートする
Google Cloud CLI を使用して、Cloud Armor セキュリティ ポリシーを YAML ファイルまたは JSON ファイルとしてエクスポートできます。この機能には、次の利点があります。
バージョン管理またはバックアップ用にコピーを保存する: エクスポートすると、ポリシーのローカルコピーが作成されます。このコピーは、バックアップとして、または変更を追跡するために、ソース管理システムに保存できます。後で再インポートして以前のバージョンを復元できます。
ポリシーをローカルで変更して更新する: エクスポートしたポリシーは、テキスト エディタを使用してオフラインで変更できます。変更を加えたら、更新したポリシーを再度インポートして、Cloud Armor に変更を適用します。
gcloud
次のコマンドの
NAMEは、セキュリティ ポリシーの名前です。有効なファイル形式は YAML と JSON です。ファイル形式を指定しない場合、Cloud Armor は YAML を使用します。gcloud compute security-policies export NAME \ --file-name FILE_NAME \ --file-format FILE_FORMAT次の例は、
my-policyセキュリティ ポリシーを YAML 形式でmy-fileファイルにエクスポートするコマンドを示しています。gcloud compute security-policies export my-policy \ --file-name my-file \ --file-format yaml次の例は、エクスポートされたセキュリティ ポリシーを示しています。
description: my description fingerprint: PWfLGDWQDLY= id: '123' name: my-policy rules: - action: allow description: default rule match: config: srcIpRanges: - '*' versionedExpr: SRC_IPS_V1 preview: false priority: 2147483647 selfLink: https://www.googleapis.com/compute/v1/projects/my-project/global/securityPolicies/my-policyエクスポートしたファイルは、テキスト エディタで変更した後で
importコマンドによって Google Cloud にインポートできます。
セキュリティ ポリシーをインポートする
Google Cloud CLI を使用して、YAML ファイルまたは JSON ファイルから Cloud Armor セキュリティ ポリシーをインポートします。import コマンドを使用して、既存のポリシーのルールを更新することはできません。代わりに、セキュリティ ポリシーで 1 つのルールを更新するの手順を使用してルールを個別に更新するか、セキュリティ ポリシーで複数のルールをアトミックに更新するの手順を使用してすべてのルールを一度に更新します。
gcloud
セキュリティ ポリシーをインポートするには、次の gcloud compute
security-policies import NAME コマンドを使用します。
gcloud compute security-policies import NAME \
--file-name FILE_NAME \
[--file-format FILE_FORMAT]
たとえば、次のコマンドはファイル my-file をインポートしてポリシー my-policy を更新します。
gcloud compute security-policies import my-policy \
--file-name my-file \
--file-format json
NAME は、セキュリティ ポリシーの名前に置き換えます。ファイル形式を指定しない場合は、ファイル構造に基づいて正しい形式が推定されます。構造が無効な場合、gcloud CLI はエラー メッセージを返します。
ポリシーのフィンガープリントがインポート時に最新でない場合は、Cloud Armor からエラーが返されます。これは、最後にエクスポートした後に、ポリシーが変更されたことを意味します。これを修正するには、ポリシーで describe コマンドを使用して、最新のフィンガープリントを取得します。describe コマンドで --format=yaml または --format=json を使用すると、比較が容易になります。describe 出力の rules セクションとポリシー ファイルの rules セクションを比較し、相違点をマージして、ファイル内の古いフィンガープリントを describe 出力の最新のフィンガープリントに置き換えます。
使用可能な事前構成ルールを一覧表示する
Cloud Armor には、自分で構成するルールの他に、セキュリティ ポリシーで使用できる事前構成済みのルールが用意されています。事前構成済みのルールを一覧表示すると、Cloud Armor で提供されている事前定義済みのアプリケーション保護ルールとシグネチャ(OWASP Core Rule Set など)を確認できます。これらのルールには、Cloud Armor が受信リクエストに対して評価する組み込みシグネチャが含まれています。カスタムルール言語リファレンスを使用して、事前構成済みのルールを新規または既存のルールに追加します。
詳細については、事前構成されたルールをご覧ください。
gcloud
gcloud compute security-policies list-preconfigured-expression-setsコマンドを実行します。gcloud compute security-policies list-preconfigured-expression-sets
次の例は、コマンドからの出力形式を示しています。
EXPRESSION_SET expression-set-1 RULE_ID SENSITIVITY expression-set-1-id-1 sensitivity-value-1 expression-set-1-id-2 sensitivity-value-2 expression-set-2 alias-1 RULE_ID SENSITIVITY expression-set-2-id-1 sensitivity-value-1 expression-set-2-id-2 sensitivity-value-2
次の例には、コマンドの実際の出力のサンプルが含まれています。ただし、実際の出力には Cloud Armor WAF ルールの調整にリストされているすべてのルールが含まれます。
gcloud compute security-policies list-preconfigured-expression-sets
EXPRESSION_SET sqli-canary RULE_ID SENSITIVITY owasp-crs-v042200-id942120-sqli 2 … xss-canary RULE_ID SENSITIVITY owasp-crs-v042200-id941110-xss 1 owasp-crs-v042200-id941120-xss 2 … sourceiplist-fastly sourceiplist-cloudflare sourceiplist-imperva