次の手順に沿って Google Cloud Armor セキュリティ ポリシーを作成して、次の宛先への受信トラフィックをフィルタします。
- グローバル外部アプリケーション ロードバランサ
- 従来のアプリケーション ロードバランサ
- リージョン外部アプリケーション ロードバランサ
- リージョン内部アプリケーション ロードバランサ
- 外部プロキシ ネットワーク ロードバランサ
- 従来のプロキシ ネットワーク ロードバランサ
- 外部パススルー ネットワーク ロードバランサ
- プロトコル転送
- パブリック IP アドレスを持つ VM
セキュリティ ポリシーのコンセプトについては、Google Cloud Armor セキュリティ ポリシーの概要をご覧ください。
準備
セキュリティ ポリシーを構成する前に、次のことを確認します。
外部アプリケーション ロードバランサのコンセプトについて理解します。
既存のバックエンド サービスを調べて、セキュリティ ポリシーがまだ接続されていないものを確認します。これらのバックエンド サービスと関連するバックエンドは、Google Cloud Armor で保護されません。Google Cloud Armor によって実現される保護を追加するには、このドキュメントの手順に沿って、新規作成または既存のセキュリティ ポリシーをバックエンド サービスに接続します。
Google Cloud Armor セキュリティ ポリシーの IAM 権限を設定する
次の操作を行うには、Identity and Access Management(IAM)の Compute セキュリティ管理者のロール(roles/compute.securityAdmin
)が必要です。
- Google Cloud Armor セキュリティ ポリシーの構成、変更、更新、削除
- 次の API メソッドの使用:
SecurityPolicies insert
SecurityPolicies delete
SecurityPolicies patch
SecurityPolicies addRule
SecurityPolicies patchRule
SecurityPolicies removeRule
Compute ネットワーク管理者のロール(roles/compute.networkAdmin
)を付与されたユーザーは、次の操作を実行できます。
- バックエンド サービスの Google Cloud Armor セキュリティ ポリシーの設定
- 次の API メソッドの使用:
BackendServices setSecurityPolicy
BackendServices list
(gcloud
のみ)
セキュリティ管理者ロール(roles/iam.securityAdmin
)とネットワーク管理者ロールを持つユーザーは、SecurityPolicies
API メソッドの get
、list
、および getRule
を使用して、Google Cloud Armor セキュリティ ポリシーを閲覧できます。
カスタムロールの IAM 権限を設定する
次の表に、IAM のロールの基本的な権限と、関連する API メソッドを示します。
IAM 権限 | API メソッド |
---|---|
compute.securityPolicies.create |
SecurityPolicies insert |
compute.securityPolicies.delete |
SecurityPolicies delete |
compute.securityPolicies.get |
SecurityPolicies get SecurityPolicies getRule |
compute.securityPolicies.list |
SecurityPolicies list |
compute.securityPolicies.use |
BackendServices setSecurityPolicy |
compute.securityPolicies.update |
SecurityPolicies patch SecurityPolicies addRule SecurityPolicies patchRule SecurityPolicies removeRule |
compute.backendServices.setSecurityPolicy |
BackendServices setSecurityPolicy |
セキュリティ ポリシーを作成する
Google Cloud Armor セキュリティ ポリシー、ルール、式を構成するには、Google Cloud コンソール、Google Cloud CLI、または REST API を使用します。gcloud CLI を使用してセキュリティ ポリシーを作成する場合は、--type
フラグを使用して、セキュリティ ポリシーがバックエンド セキュリティ ポリシーかエッジ セキュリティ ポリシーかを指定します。
セキュリティ ポリシーの構成について習熟されていない場合は、セキュリティ ポリシーの例をご覧になることをおすすめします。
式のサンプル
以下にサンプルの式を示します。式の詳細については、Google Cloud Armor カスタムルール言語リファレンスをご覧ください。
ISO 3166-1 alpha 2 の国コードやリージョン コードを使用するルールまたは式を構成する場合、Google Cloud Armor は各コードを個別に処理します。Google Cloud Armor のルールと式では、これらの地域コードを明示的に使用して、リクエストを許可または拒否します。
次の式は、IP アドレス
1.2.3.4
からのリクエストを照合し、ユーザー エージェント ヘッダーに文字列example
を含めます。inIpRange(origin.ip, '1.2.3.4/32') && has(request.headers['user-agent']) && request.headers['user-agent'].contains('example')
または、
origin.user_ip
属性を使用して、カスタム クライアント IP アドレス ヘッダーの IP アドレス範囲を照合することもできます。inIpRange(origin.user_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('/path/[0-9]+/target_file.html')
次の式は、Base64 でデコードされた
user-id
ヘッダーの値に特定の値が含まれている場合に、リクエストを照合します。has(request.headers['user-id']) && request.headers['user-id'].base64Decode().contains('myValue')
事前構成された式セットを使用する次の式は、SQLi 攻撃を照合します。
evaluatePreconfiguredExpr('sqli-stable')
セキュリティ ポリシーを管理する
以下の各セクションでは、プロジェクト内のセキュリティ ポリシーを一覧表示する、セキュリティ ポリシーを更新する、セキュリティ ポリシーを削除する、セキュリティ ポリシーをテストする方法について説明します。
セキュリティ ポリシーを一覧表示する
以降の手順を使用して、現在のプロジェクトまたは指定したプロジェクト内のすべての Google Cloud Armor セキュリティ ポリシーを一覧表示します。
コンソール
Google Cloud コンソールで、[Google Cloud Armor のポリシー]ページに移動します。
特定のポリシーを表示するには、[セキュリティ ポリシー] ページのポリシーのリストで該当の名前をクリックします。
gcloud
gcloud compute security-policies list
次に例を示します。
gcloud compute security-policies list
NAME my-policy
詳細については、gcloud compute security-policies list
をご覧ください。
セキュリティ ポリシーを更新する
以降の手順を使用して、Google Cloud Armor のセキュリティ ポリシーを更新します。たとえば、ポリシーの説明を変更する、デフォルトのルールの動作を変更する、ターゲット バックエンド サービスを変更する、新しいルールを追加する、といった操作が可能です。
コンソール
Google Cloud コンソールで、[Google Cloud Armor のポリシー]ページに移動します。
特定のポリシーを更新するには、[セキュリティ ポリシー] ページのポリシーのリストで、更新したいポリシーの [
メニュー] をクリックします。- デフォルトのルール アクションのポリシーの説明を更新するには、[編集] を選択して、必要な変更を行い、[更新] をクリックします。
- ルールを追加するには、[ルールの追加] を選択し、セキュリティ ポリシーにルールを追加するの手順に沿って操作します。
- ポリシーのターゲット バックエンド サービスを変更するには、[ターゲットへのポリシーの適用] を選択し、[ターゲットを追加] をクリックしてターゲットを選択してから、[追加] をクリックします。
gcloud
セキュリティ ポリシーを更新するには、次の Google Cloud CLI の手順を行います。
- セキュリティ ポリシーのルールを更新するには、セキュリティ ポリシーで 1 つのルールを更新するをご覧ください。
- セキュリティ ポリシーにルールを追加するには、セキュリティ ポリシーにルールを追加するをご覧ください。
- セキュリティ ポリシーからルールを削除するには、セキュリティ ポリシーからルールを削除するをご覧ください。
- 1 回の更新で複数のルールを更新するには(アトミック アップデート)、セキュリティ ポリシーのルールをアトミックに更新するをご覧ください。
- セキュリティ ポリシー(説明フィールドなど)のルール以外のフィールドを更新するには、セキュリティ ポリシーをエクスポートするとセキュリティ ポリシーをインポートするをご覧ください。
セキュリティ ポリシーを削除する
以降の手順を使用して、Google Cloud Armor セキュリティ ポリシーを削除します。ポリシーを削除する前に、ポリシーからすべてのバックエンド サービスを削除する必要があります。
コンソール
Google Cloud コンソールで、[Google Cloud Armor のポリシー]ページに移動します。
[セキュリティ ポリシー] ページで、削除するセキュリティ ポリシーの名前の横にあるチェックボックスをオンにします。
ページの右上で
[削除] をクリックします。
gcloud
gcloud compute security-policies delete NAME
を使用します。NAME
は、セキュリティ ポリシーの名前に置き換えます。
gcloud compute security-policies delete NAME
セキュリティ ポリシーをテストする
すべての新しいルールをプレビュー モードでデプロイしてから、リクエストログを調べて、ポリシーとルールが期待どおりに動作していることを確認することをおすすめします。
セキュリティ ポリシーのルールを管理する
以下の各セクションでは、セキュリティ ポリシールールの一覧表示、ルールの追加、ルールの更新、ルールの削除について説明します。
セキュリティ ポリシーのルールを一覧表示する
以降の手順を使用して、Google Cloud Armor セキュリティ ポリシーのルールを一覧表示します。
コンソール
Google Cloud コンソールで、[Google Cloud Armor のポリシー]ページに移動します。
[セキュリティ ポリシー] ページで、セキュリティ ポリシーの名前をクリックします。[ポリシーの詳細] ページが表示され、ページ中央の [ルール] タブにポリシールールが一覧表示されます。
gcloud
次の gcloud
コマンドを使用して、1 つのセキュリティ ポリシー内のすべてのルールを、ポリシーの説明とともに一覧表示します。
gcloud compute security-policies describe NAME \
次の 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
セキュリティ ポリシーにルールを追加する
以降の手順を使用して、Google Cloud Armor セキュリティ ポリシーにルールを追加します。
コンソール
Google Cloud コンソールで、[Google Cloud Armor のポリシー]ページに移動します。
[セキュリティ ポリシー] ページで、セキュリティ ポリシーの名前をクリックします。[ポリシーの詳細] ページが表示されます。
ページ中央の [ルール] タブをクリックします。
[ルールを追加] をクリックします。
(省略可)ルールの説明を入力します。
モードを選択します。
- 基本モード: IP アドレスまたは範囲に基づいて、トラフィックを許可または拒否します。
- 詳細モード: ルール式に基づいてトラフィックを許可または拒否します。
[一致] フィールドで、ルールが適用される条件を指定します。
- 基本モード: ルールで一致する IP アドレス範囲を 1 つから 5 つまでの間で入力します。
詳細モード: 受信リクエストに対して評価する式またはサブ式を入力します。式の作成方法と以下の例の読み取り方法については、カスタムルール言語リファレンスをご覧ください。
次の式は、IP アドレス
1.2.3.4
からのリクエストを照合し、ユーザー エージェント ヘッダーに文字列example
を含めます。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/')
次の式は、Base64 でデコードされた
user-id
ヘッダーの値に特定の値が含まれている場合に、リクエストを照合します。has(request.headers['user-id']) && request.headers['user-id'].base64Decode().contains('myValue')
事前構成された式セットを使用する次の式は、SQLi 攻撃を照合します。
evaluatePreconfiguredExpr('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
たとえば、次のコマンドは、IP アドレス範囲 192.0.2.0/24 と 198.51.100.0/24 からのトラフィックを遮断するルールを追加します。このルールの優先度は 1,000 で、my-policy
という名前のポリシー内のルールです。
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
フラグを使用します。次のコマンドは、IP アドレス 1.2.3.4
からのトラフィックを許可するルールを追加し、user-agent ヘッダーに文字列 example
を含めます。
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 "evaluatePreconfiguredExpr('sqli-stable')" \ --action deny-403
セキュリティ ポリシーの 1 つのルールを更新する
以降の手順を使用して、Google Cloud Armor セキュリティ ポリシーの単一のルールを更新します。複数のルールをアトミックに更新するには、セキュリティ ポリシーで複数のルールをアトミックに更新するをご覧ください。
コンソール
Google Cloud コンソールで、[Google 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
をご覧ください。
セキュリティ ポリシーの複数のルールをアトミックに更新する
アトミックに更新を行うと、1 回の更新で複数のルールに変更が適用されます。ルールを 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: evaluatePreconfiguredExpr('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: evaluatePreconfiguredExpr('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
次の例に示すように、新しい Google 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
セキュリティ ポリシーからルールを削除する
以降の手順を使用して、Google Cloud Armor セキュリティ ポリシーからルールを削除します。
コンソール
Google Cloud コンソールで、[Google 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
セキュリティ ポリシーを接続して削除する
以下の各セクションでは、バックエンド サービスとバックエンド バケットにセキュリティ ポリシーを接続して削除する方法について説明します。
セキュリティ ポリシーをバックエンド サービスに接続する
以降の手順を使用して、Google Cloud Armor セキュリティ ポリシーをバックエンド サービスに接続します。1 つのセキュリティ ポリシーは複数のバックエンド サービスに接続できますが、1 つのバックエンド サービスはセキュリティ ポリシーの種類ごとに 1 つだけに接続できます。
コンソール
Google Cloud コンソールで、[Google 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
バックエンド サービスからセキュリティ ポリシーを削除する
以降の手順を使用して、Google Cloud Armor のバックエンド セキュリティ ポリシーまたはエッジ セキュリティ ポリシーをバックエンド サービスから削除します。
コンソール
Google Cloud コンソールで、[Google 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 ""
セキュリティ ポリシーをバックエンド バケットに接続する
以降の手順を使用して、Google Cloud Armor のエッジ セキュリティ ポリシーをバックエンド バケットに接続します。エッジ セキュリティ ポリシーは、複数のバックエンド バケットに接続できます。
コンソール
Google Cloud コンソールで、[Google Cloud Armor のポリシー]ページに移動します。
[セキュリティ ポリシー] ページで、セキュリティ ポリシーの名前をクリックします。[ポリシーの詳細] ページが表示されます。
ページ中央の [ターゲット] タブをクリックします。
[新しいターゲットにポリシーを適用] をクリックします。
[ターゲットを追加] をクリックします。
[ターゲット] リストでターゲットを選択し、[追加] をクリックします。
gcloud
エッジ セキュリティ ポリシーをバックエンド バケットに接続する場合は、cloud compute backend-buckets
コマンドと --edge-security-policy
フラグを使用します。
gcloud compute backend-services update my-bucket \ --edge-security-policy my-edge-policy
バックエンド バケットからセキュリティ ポリシーを削除する
以降の手順を使用して、Google Cloud Armor のエッジ セキュリティ ポリシーをバックエンド バケットから削除します。
コンソール
Google Cloud コンソールで、[Google Cloud Armor のポリシー]ページに移動します。
[セキュリティ ポリシー] ページで、セキュリティ ポリシーの名前をクリックします。[ポリシーの詳細] ページが表示されます。
ページ中央の [ターゲット] タブをクリックします。
ポリシーを削除する対象のバックエンド サービスを選択します。
[削除] をクリックします。
[ターゲットを削除] メッセージで、[削除] をクリックします。
gcloud
バックエンド バケットからエッジ セキュリティ ポリシーを削除する場合は、cloud compute backend-buckets
コマンドと --edge-security-policy
フラグを使用します。
gcloud compute backend-services update my-bucket \ --edge-security-policy ""
セキュリティ ポリシーをインポートおよびエクスポートする
以下の各セクションでは、セキュリティ ポリシーを YAML ファイルまたは JSON ファイルとしてインポートおよびエクスポートする方法を説明します。
セキュリティ ポリシーをインポートする
Google Cloud CLI を使用すると、Google Cloud Armor セキュリティ ポリシーを YAML ファイルまたは JSON ファイルからインポートできます。import
コマンドを使用して、既存のポリシーのルールを更新することはできません。代わりに、セキュリティ ポリシーで 1 つのルールを更新する手順でルールを 1 つずつ更新するか、Google Cloud Armor セキュリティ ポリシーのルールをアトミックに更新するの手順ですべてのルールを一度に更新する必要があります。
gcloud
セキュリティ ポリシーをインポートするには、gcloud compute security-policies import NAME
コマンドを使用します。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
ポリシーのフィンガープリントがインポート時に最新でない場合は、Google Cloud Armor によりエラーが表示されます。これは、最後にエクスポートした後に、ポリシーが変更されたことを意味します。これを修正するには、ポリシーで describe
コマンドを使用して、最新のフィンガープリントを取得します。describe コマンドで取得されたポリシーと実際のポリシーの相違点をマージし、古いフィンガープリントを最新のものに置き換えます。
セキュリティ ポリシーをエクスポートする
Google Cloud CLI を使用して、Google Cloud Armor セキュリティ ポリシーを YAML ファイルまたは JSON ファイルとしてエクスポートできます。ポリシーをエクスポートすると、そのコピーを取得して、ソース管理で変更や保存が可能です。
gcloud
次のコマンドの
NAME
は、セキュリティ ポリシーの名前です。有効なファイル形式は YAML と JSON です。ファイル形式を指定しない場合、Google 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 にimportできます。
使用可能な事前構成ルールを一覧表示する
事前構成されたルールを一覧表示して、Google Cloud Armor が提供する ModSecurity Core Rule Set など、事前定義されたアプリケーション保護ルールとシグネチャを表示します。これらの事前構成されたルールには、Google 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
次の例には、コマンドの実際の出力のサンプルが含まれています。実際の出力には、Google Cloud Armor WAF ルールのチューニングにリストされているすべてのルールが含まれているので注意してください。
gcloud compute security-policies list-preconfigured-expression-sets
EXPRESSION_SET sqli-canary RULE_ID SENSITIVITY owasp-crs-v030001-id942110-sqli 2 owasp-crs-v030001-id942120-sqli 2 … xss-canary RULE_ID SENSITIVITY owasp-crs-v030001-id941110-xss 1 owasp-crs-v030001-id941120-xss 1 … sourceiplist-fastly sourceiplist-cloudflare sourceiplist-imperva