Google Cloud Armor セキュリティ ポリシーの構成

これらの手順を使用して、Google Cloud Armor セキュリティ ポリシーを作成することにより、HTTP(S)負荷分散への受信トラフィックをフィルタリングします。Google Cloud Armor セキュリティ ポリシーの概念的な情報については、Google Cloud Armor セキュリティポリシーの概念をご覧ください。

セキュリティ ポリシーを構成する前に、HTTP(S)負荷分散の概念に精通していることを確認してください。

GKE での Google Cloud Armor の構成については、Google Cloud Armor の構成をご覧ください。

Google Cloud Armor セキュリティ ポリシーの IAM 権限

次のオペレーションでは、セキュリティ管理者の役割(roles/compute.securityAdmin)が必要です。

  • Google Cloud Armor セキュリティ ポリシーの作成、変更、更新、削除
  • 許可される API メソッド:
    • SecurityPolicies insert
    • SecurityPolicies delete
    • SecurityPolicies patch
    • SecurityPolicies addRule
    • SecurityPolicies patchRule
    • SecurityPolicies removeRule

ネットワーク管理者の役割(roles/compute.networkAdmin)を持つユーザーは、次のオペレーションを実行できます。

  • バックエンド サービスの Google Cloud Armor セキュリティポリシーを設定する
  • 許可される API メソッド:
    • BackendServices setSecurityPolicy

セキュリティ管理者とネットワーク管理者のロールを持つユーザーは、API メソッド SecurityPolicies getlistgetRule を使用して 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

HTTP(S) 負荷分散のための Google Cloud Armor セキュリティ ポリシーの構成

大まかに言えば、この手順では、HTTP(S) 負荷分散へのトラフィックを許可または拒否するルールを有効にするように、Google Cloud Armor セキュリティ ポリシーを構成します。

  1. Google Cloud Armor セキュリティ ポリシーを作成します。
  2. IP リスト、カスタム式、または事前構成された式のセットに基づいて、ルールをポリシーに追加します。
  3. アクセスを制御するために、HTTP(S)ロードバランサのバックエンド サービスに Google Cloud Armor セキュリティ ポリシーをアタッチします。
  4. 必要に応じて、Google Cloud Armor セキュリティ ポリシーを更新します。

次の例では、2 つの Google Cloud Armor セキュリティポリシーを作成し、それらを異なるバックエンド サービスに適用します。

2 つの Google Cloud Armor セキュリティ ポリシーが異なるバックエンド サービスに適用されている例
2 つの Google Cloud Armor セキュリティ ポリシーが異なるバックエンド サービスに適用されている例(クリックして拡大)

この例での、Google Cloud Armor のセキュリティ ポリシーは次のとおりです。

  • mobile-clients-policy は、games サービスの外部ユーザーに適用されます
  • internal-users-policy は、組織の test-network チームに適用されます

そのバックエンド サービスがgamesと呼ばれるgamesサービスにmobile-clients-policyを適用し、対応するバックエンドサービスがtest-networkと呼ばれるテストチームの内部testサービスにinternal-users-policyを適用します。

バックエンド サービスのバックエンド インスタンスが複数のリージョンにある場合、サービスに関連付けられた Google Cloud Armor セキュリティ ポリシーはすべてのリージョンのインスタンスに適用できます。上記の例では、Google Cloud Armor セキュリティ ポリシーmobile-clients-policyは、us-centralのインスタンス 1、2、3、4、およびus-eastのインスタンス 5 と 6 に適用できます。

サンプルの作成

これらの手順を使用して、前のセクションで説明したサンプルを作成します。

Console

構成サンプルを作成するには、次の手順に従います。

  1. Google Cloud Console の [ネットワーク セキュリティ] ページに移動します。
    ネットワーク セキュリティ ページに移動
    [セキュリティ ポリシー] ページが表示されます。
  2. [ポリシーを作成] をクリックします。
  3. [名前] フィールドに「mobile-client-policy」と入力します。
  4. [説明] フィールドに「policy for external users」と入力します。
  5. [拒否] をクリックします。
  6. [次のステップ] をクリックします。
  7. [ルールを追加] をクリックします。
  8. [説明] フィールドに「allow traffic from 192.0.2.0/24」と入力します。
  9. [モード] で [基本モード(IP アドレスまたは IP 範囲のみ)] を選択します。
  10. [一致] フィールドに「192.0.2.0/24」と入力します。
  11. [アクション] で [許可] を選択します。
  12. [優先度] 欄に「1000」と入力します。
  13. [完了] をクリックします。
  14. [次のステップ] をクリックします。
  15. [ターゲットを追加] をクリックします。
  16. プルダウン リストから [ターゲット] を選択します。
  17. [完了] をクリックします。
  18. [ポリシーを作成] をクリックします。コンソールに [セキュリティ ポリシー] ページが表示されます。
  19. [名前] フィールドに「internal-users-policy」と入力します。
  20. [説明] フィールドに「Policy for internal test users」と入力します。
  21. [拒否] をクリックします。
  22. [次のステップ] をクリックします。
  23. [ルールを追加] をクリックします。
  24. [説明] フィールドに「allow traffic from 198.51.100.0/24」と入力します。
  25. [モード] で [基本モード(IP アドレスまたは IP 範囲のみ)] を選択します。
  26. [一致] フィールドに「198.51.100.0/24」と入力します。
  27. [アクション] で [許可] を選択します。
  28. [Enable] をクリックします。
  29. [優先度] 欄に「1000」と入力します。
  30. [完了] をクリックします。
  31. [次のステップ] をクリックします。
  32. [ターゲットを追加] をクリックします。
  33. プルダウン リストから [ターゲット] を選択します。
  34. [完了] をクリックします。
  35. [ポリシーを作成] をクリックします。コンソールに [セキュリティ ポリシー] ページが表示されます。

gcloud

  1. Google Cloud Armor セキュリティ ポリシーを作成します。

    gcloud compute security-policies create mobile-clients-policy \
        --description "policy for external users"
    
    gcloud compute security-policies create internal-users-policy \
        --description "policy for internal test users"
    
  2. Google Cloud Armor セキュリティ ポリシーに対してデフォルトのルールを更新し、トラフィックを拒否します。

    gcloud compute security-policies rules update 2147483647 \
        --security-policy mobile-clients-policy \
        --action "deny-404"
    
    gcloud compute security-policies rules update 2147483647 \
        --security-policy internal-users-policy \
        --action "deny-502"
    
  3. Google Cloud Armor セキュリティ ポリシーにルールを追加します。

    gcloud compute security-policies rules create 1000 \
        --security-policy mobile-clients-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 create 1000 \
        --security-policy internal-users-policy \
        --description "allow traffic from 198.51.100.0/24" \
        --src-ip-ranges "198.51.100.0/24" \
        --action "allow"
    
  4. Google Cloud Armor セキュリティ ポリシーをバックエンド サービスにアタッチします。

    gcloud compute backend-services update games \
        --security-policy mobile-clients-policy
    
    gcloud compute backend-services update test-network \
        --security-policy internal-users-policy
    

Google Cloud Armor for GKE の構成

次のハイレベル手順を使用して、GKE 用の Google Cloud Armor セキュリティ ポリシーを構成できます。

  1. REST APIまたはgcloudコマンドライン ツールを使用して、ルールで Google Cloud Armor セキュリティ ポリシーを構成します。
  2. GKE でIngress リソースを作成します。
  3. Ingress リソースに関連付けられているバックエンド サービスを特定します。

    1. Ingress リソースの構成を取得します。

      kubectl describe ingress [INGRESS_NAME]
      
    2. 出力の [Annotations]セクションのbackendsフィールドの値をメモします。これらは、使用されるバックエンド サービスの名前です。

  4. REST API またはgcloudコマンドライン ツールを使用して、前のステップでメモした各バックエンドに Google Cloud Armor セキュリティ ポリシーをアタッチします。

Kubernetes Ingress リソースを削除してから再作成した場合、セキュリティ ポリシーを新しいバックエンド サービスに再適用する必要があります。

詳細については、Ingress による Google Cloud Armor の構成をご覧ください。

Google Cloud Armor のセキュリティ ポリシー、ルール、式を作成する

Google Cloud Console、gcloudコマンドライン ツール、または REST API を使用して、Google Cloud Armor のセキュリティ ポリシー、ルール、式を作成できます。

次に式の例を示します。式の詳細については、Google Cloud Armor ルール言語リファレンスをご覧ください。

ISO 3166-1 alpha 2 の国名コード(地域コード)を使用するルールや式を作成する場合、Google Cloud Armor では各コードが個別に扱われます。Google Cloud Armor のルールと式では、これらの地域コードを明示的に使用して、リクエストを許可または拒否します。

  • 次の式は、IP アドレス1.2.3.4からのリクエストと照合し、ユーザーエージェント ヘッダーに文字列Godzillaを含めます。

    inIpRange(origin.ip, '1.2.3.4/32') && has(request.headers['user-agent']) && request.headers['user-agent'].contains('Godzilla')
    
  • 次の式は、特定の値とともに Cookie を持つリクエストと照合します。

    has(request.headers['cookie']) && request.headers['cookie'].contains('cookie_name=cookie_value')
    
  • 次の式は、リージョンAUからのリクエストを照合します。

    origin.region_code == 'AU'
    
  • 次の式は、指定された IP 範囲ではなく、リージョンAUからのリクエストを照合します。

    request.region_code == "AU" && !inIpRange(origin.ip, '1.2.3.0/24')
    
  • 次の式は、URI が正規表現に一致する場合、リクエストを照合します。

    request.path.matches('/bad_path/')
    
  • 次の式は、user-id ヘッダーの Base64 でデコードされた値に特定の値が含まれている場合に、リクエストを照合します。

    has(request.headers['user-id']) && request.headers['user-id'].base64Decode().contains('myValue')
    
  • 次の式は、事前設定された式セットを使用して SQLi 攻撃を照合します。

    evaluatePreconfiguredExpr('sqli-stable')
    

次の手順では、既存の外部 HTTP(S)ロード バランサーとバックエンド サービスに適用するセキュリティ ポリシーを作成していることを前提としています。

Console

Google Cloud Armor のセキュリティ ポリシーとルールを作成し、Google Cloud Armor のセキュリティ ポリシーをバックエンド サービスにアタッチするには:

  1. Google Cloud Console の [ネットワーク セキュリティ] ページに移動します。
    ネットワーク セキュリティ ページに移動
    [セキュリティ ポリシー] ページが表示されます。
  2. [ポリシーを作成] をクリックします。
  3. [名前] フィールドに、ポリシーの名前を入力します。
  4. 必要に応じて、ポリシーの [説明] を入力します。
  5. アクセスを許可するデフォルト ルールの場合は [許可]、IP アドレスまたは IP アドレス範囲へのアクセスを禁止するデフォルト ルールの場合は [拒否]を選択します。

    デフォルトのルールは、他のルールが適用されない場合にのみ適用される最も優先度の低いルールです。

  6. 拒否ルールを作成する場合は、[拒否ステータス] を選択します。これは、アクセス権のないユーザーがアクセスしようとしたときに Google Cloud Armor に表示されるエラー メッセージです。

  7. 作成するルールのタイプに関係なく、[次のステップ] をクリックします。

  8. [ルールを追加]をクリックして、セキュリティ ポリシーの追加ルールを構成します。

  9. 必要に応じて、ルールの [説明] を入力します。

  10. [モード] を選択します。

    • 基本モード - IP アドレスや範囲に基づいてトラフィックを許可または拒否します。
    • 詳細モード — ルール式に基づいてトラフィックを許可または拒否します。
  11. [一致] フィールドで、ルールが適用される条件を指定します。

    • 基本モード — ルールで照合する IP アドレス範囲を入力します。
    • 詳細モード - 受信リクエストに対して評価する式または部分式を入力します。式の記述方法については、Google Cloud Armor ルール言語をご覧ください。
  12. ルールが一致した場合にトラフィックを [許可] するか [拒否] するかを選択します。

  13. プレビュー モードを有効にするには、[有効にする]をオンにします。プレビュー モードでは、ルールの動作を確認できますが、ルールは有効になっていません。

  14. ルールの [優先度] を入力します。0~2,147,483,646 の正の整数を指定できます。評価順序の詳細については、ルールの優先度と評価順序をご覧ください。

  15. [完了] をクリックします。

  16. さらにルールを追加するには、[ルールを追加] をクリックして上記の手順を繰り返します。追加しない場合は、[次のステップ] をクリックします。

  17. [ターゲットを追加] をクリックします。

  18. プルダウン リストから [ターゲット] を選択します。

  19. さらにターゲットを追加するには、[ターゲットを追加] をクリックします。

  20. [完了] をクリックします。

  21. [ポリシーを作成] をクリックします。

gcloud

  1. 新しい Google Cloud Armor セキュリティ ポリシーを作成するには、コマンドgcloud compute security-policies createを使用します。NAME は Google Cloud Armor セキュリティ ポリシーの名前です。

    gcloud compute security-policies create [NAME] \
        [--file-format=[FILE_FORMAT] | --description=[DESCRIPTION]] \
        [--file-name=[FILE_NAME]]
    

    例:

    gcloud compute security-policies create my-policy \
       --description "block bad traffic"
    
  2. Google Cloud Armor セキュリティ ポリシーにルールを追加するには、コマンドgcloud compute security-policies rules create PRIORITYを使用します。PRIORITY は、ポリシー内のルールに割り当てられた優先度です。ルールの優先度の仕組みについては、Google Cloud Armor セキュリティ ポリシーについてをご覧ください。

    gcloud compute security-policies rules create [PRIORITY]  \
       [--security-policy [POLICY_NAME]] \
       [--description [DESCRIPTION]] \
       --src-ip-ranges [IP_RANGE,...] | --expression [EXPRESSION] \
       --action=[ allow | deny-403 | deny-404 | deny-502 ]  \
       [--preview]
    

    次のコマンドは、IP アドレス範囲 192.0.2.0/24 と 198.51.100.0/24 からのトラフィックをブロックするルールを追加します。ルールの優先度は 1000 で、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"
    

    --previewフラグを追加すると、ルールはポリシーに追加されますが、適用されず、ルールをトリガーするトラフィックがログに記録されるだけです。

    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" \
       --preview
    

    --expression フラグを使用して、Google Cloud Armor のルール言語でカスタム条件を指定します。次のコマンドは、IP アドレス 1.2.3.4 からのトラフィックを許可するルールを追加し、user-agent ヘッダーに文字列 Godzilla を含めます。

    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('Godzilla')" \
       --action allow \
       --description "Block User-Agent 'Godzilla'"
    

    次のコマンドは、リクエストの Cookie に特定の値が含まれている場合に、リクエストをブロックするルールを追加します。

    gcloud compute security-policies rules create 1000 \
       --security-policy my-policy \
       --expression "has(request.headers['cookie']) && request.headers['cookie'].contains('cookie_name=cookie_value')" \
       --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"
    

    次のコマンドは、リージョン AU からのリクエスト、かつ、指定した IP 範囲外からのものをブロックするルールを追加します。

    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('/bad_path/)')" \
       --action "deny-403" \
       --description "regex block"
    

    次のコマンドは、user-id ヘッダーの Base64 デコードされた値に特定の値が含まれている場合に、リクエストをブロックするルールを追加します。

    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"
    

利用可能な事前構成ルールの一覧表示

事前構成されたルールを一覧表示して、Google Cloud Armor が提供する ModSecurity Core Rule Set など、事前定義されたアプリケーション保護ルールとシグネチャを表示します。これらの事前構成されたルールには、Google Cloud Armor が受信リクエストに対して評価するために使用する複数の組み込みシグネチャが含まれています。Google Cloud Armor カスタムルール言語を使用して、これらの事前構成されたルールを新規または既存のルールに追加します。

詳細については、事前構成されたルールをご覧ください。

gcloud

  1. gcloud compute security-policies list-preconfigured-expression-sets コマンドを実行します。

    gcloud compute security-policies list-preconfigured-expression-sets
    

    次の例は、コマンドからの出力を示しています。

    EXPRESSION_SET
    expression-set-1
       RULE_ID
       expression-set-1-id-1
       expression-set-1-id-2
    expression-set-2
       alias-1
       RULE_ID
       expression-set-2-id-1
       expression-set-2-id-2
    

Google Cloud Armor セキュリティ ポリシーの一覧表示

これらの手順を使用して、現在のプロジェクトまたは指定したプロジェクト内のすべての Google Cloud Armor セキュリティ ポリシーを一覧表示します。

Console

  1. Google Cloud Console の [ネットワーク セキュリティ] ページに移動します。
    ネットワーク セキュリティ ページに移動
    [セキュリティ ポリシー] ページとポリシーのリストが表示されます。

  2. 特定のポリシーを表示するには、その名前をクリックします。

gcloud

構成済みのすべての Google Cloud Armor セキュリティ ポリシーを一覧表示するには:

gcloud compute security-policies list

例:

gcloud compute security-policies list
NAME
my-policy

詳細については、gcloud compute security-policies list をご覧ください。

Google Cloud Armor セキュリティ ポリシーの更新

これらの手順を使用して、Google Cloud Armor のセキュリティ ポリシーを更新します。たとえば、ポリシーの説明を変更したり、デフォルトのルールの動作を変更したり、ターゲット バックエンド サービスを変更したり、新しいルールを追加したりできます。

Console

Google Cloud Armor セキュリティ ポリシーを更新するには:

  1. Google Cloud Console の [ネットワーク セキュリティ] ページに移動します。
    ネットワークセキュリティ ページに移動
    [Google Cloud Armor セキュリティポリシー] ページとポリシーのリストが表示されます。
  2. 更新するポリシーのその他メニューをクリックします。

    1. デフォルトのルール アクションのポリシーの説明を更新するには、[編集]を選択し、必要な変更を加えて、[更新]をクリックします。
    2. ルールを追加するには、[ルールを追加] を選択し、上記の手順に従ってコンソールからポリシーにルールを追加します。
    3. Google Cloud Armor セキュリティ ポリシーのターゲット バックエンド サービスを変更するには、[Apply policy to target]を選択し、新しいターゲットを追加して [Add]をクリックします。

gcloud

gcloudコマンドラインツールを使用して Google Cloud Armor セキュリティ ポリシーを更新するには、次の手順を使用します。

Google Cloud Armor セキュリティ ポリシーのエクスポート

gcloud コマンドライン ツールを使用して、Google Cloud Armor セキュリティ ポリシーを YAML または JSON ファイルとしてエクスポートできます。ポリシーをエクスポートすると、そのコピーを取得して、ソース管理で変更や保存することが可能です。

gcloud

  1. 次のコマンドの NAME は、Google Cloud Armor セキュリティ ポリシーの名前です。有効なファイル形式は 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
  2. エクスポートされたファイルは、任意のテキスト エディターで変更し、importコマンドを使用して GCP にインポートできます。

Google Cloud Armor セキュリティ ポリシーのインポート

Google Cloud Armor セキュリティ ポリシーを YAML または JSON ファイルからインポートするには、gcloud コマンドライン ツールを使用します。import コマンドを使用して既存ポリシーのルールを更新することはできません。代わりに、ルールの更新手順を使用してルールを 1 つずつ更新するか、Google Cloud Armor セキュリティ ポリシーのルールをアトミックに更新する手順を使用して一度にすべて更新する必要があります。

gcloud

Google Cloud Armor セキュリティ ポリシーをインポートするには、gcloud compute security-policies import NAME コマンドを使用します。ここで、NAME はインポートする Google Cloud Armor セキュリティ ポリシーの名前です。ファイル形式を指定しない場合は、ファイル構造に基づいて正しい形式が使用されます。構造が無効な場合は、エラーが表示されます。

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 コマンドを使用して最新のフィンガープリントを取得します。記載されているポリシーと実際のポリシーの違いをマージし、古いフィンガープリントを最新のものに置き換えます。

Google Cloud Armor セキュリティ ポリシーの削除

これらの手順を使用して、Google Cloud Armor セキュリティ ポリシーを削除します。ポリシーを削除する前に、ポリシーからすべてのバックエンド サービスを削除する必要があります。

Console

Google Cloud Armor セキュリティ ポリシーを削除するには:

  1. Google Cloud Console の [ネットワーク セキュリティ] ページに移動します。
    ネットワークセキュリティ ページに移動
    [Google Cloud Armor セキュリティ ポリシー] ページが表示されます。
  2. 削除する Google Cloud Armor セキュリティ ポリシーの名前の横にあるチェックボックスをオンにします。
  3. 画面の右上にある [削除] アイコンをクリックします。

gcloud

gcloud compute security-policies delete NAMEを使用してセキュリティポリシーを削除します。NAME は Google Cloud Armor セキュリティ ポリシーの名前です。

gcloud compute security-policies delete NAME

Google Cloud Armor セキュリティ ポリシーをバックエンド サービスにアタッチする

これらの手順を使用して、Google Cloud Armor セキュリティ ポリシーをバックエンド サービスにアタッチします。Google Cloud Armor セキュリティ ポリシーは複数のバックエンド サービスにアタッチできますが、バックエンド サービスにアタッチできる Google Cloud Armor セキュリティ ポリシーは 1 つだけです。

Console

ポリシーをバックエンド サービスにアタッチするには:

  1. Google Cloud Console の [ネットワーク セキュリティ] ページに移動します。
    ネットワークセキュリティ ページに移動
    [Google Cloud Armor セキュリティ ポリシー] ページが表示されます。
  2. Google Cloud Armor セキュリティ ポリシーの名前をクリックします。[ポリシーの詳細] ページが表示されます。
  3. ページの中央で [ターゲット] タブをクリックします。
  4. [新しいターゲットにポリシーを適用] をクリックします。
  5. [ターゲットを追加] をクリックします。
  6. [ターゲットを選択] をクリックします。
  7. ターゲットを選択します。
  8. [追加] をクリックします。

gcloud

gcloud compute backend-servicesコマンドを使用して、セキュリティ ポリシーをバックエンド サービスにアタッチします。

gcloud compute backend-services update my-backend \
    --security-policy my-policy

バックエンド サービスからの Google Cloud Armor セキュリティ ポリシーの削除

これらの手順を使用して、Google Cloud Armor セキュリティ ポリシーをバックエンド サービスから削除します。

Console

ポリシーをバックエンド サービスから削除するには:

  1. Google Cloud Console の [ネットワーク セキュリティ] ページに移動します。
    ネットワークセキュリティ ページに移動
    [Google Cloud Armor セキュリティ ポリシー] ページが表示されます。
  2. Google Cloud Armor セキュリティ ポリシーの名前をクリックします。[ポリシーの詳細] ページが表示されます。
  3. ページの中央で [ターゲット] タブをクリックします。
  4. ポリシーを削除する対象のバックエンド サービスを選択します。
  5. [削除] をクリックします。
  6. 確認のポップアップで [削除] をクリックします。

gcloud

Google Cloud Armor セキュリティ ポリシーをバックエンド サービスmy-backendから削除するには:

gcloud compute backend-services update my-backend \
   --security-policy ""

Google Cloud Armor セキュリティ ポリシーにルールを追加する

これらの手順を使用して、Google Cloud Armor セキュリティ ポリシーにルールを追加します。

Console

Google Cloud Armor セキュリティ ポリシーにルールを追加するには:

  1. Google Cloud Console の [ネットワーク セキュリティ] ページに移動します。
    ネットワークセキュリティ ページに移動
    [Google Cloud Armor セキュリティ ポリシー] ページが表示されます。
  2. Google Cloud Armor セキュリティ ポリシーの名前をクリックします。[ポリシーの詳細] ページが表示されます。
  3. ページ中の [ルールを追加] をクリックします。
  4. 必要に応じて、ルールの [説明] を入力します。
  5. [モード] を選択します。

    • 基本モード - IP アドレスや範囲に基づいてトラフィックを許可または拒否します。
    • 詳細モード — ルール式に基づいてトラフィックを許可または拒否します。
  6. [一致] フィールドで、ルールが適用される条件を指定します。

    • [基本モード] - ルールで照合する IP アドレス範囲を 1~5 の範囲で入力します。
    • 詳細モード - 受信リクエストに対して評価する式または部分式を入力します。式の記述方法と次の例の読み方については、Google Cloud Armor ルール言語をご覧ください。

      • 次の式は、IP アドレス1.2.3.4からのリクエストと照合し、ユーザーエージェント ヘッダーに文字列Godzillaを含めます。

        inIpRange(origin.ip, '1.2.3.4/32') && has(request.headers['user-agent']) && request.headers['user-agent'].contains('Godzilla')
        
      • 次の式は、特定の値とともに Cookie を持つリクエストと照合します。

        has(request.headers['cookie']) && request.headers['cookie'].contains('cookie_name=cookie_value')
        
      • 次の式は、リージョンAUからのリクエストを照合します。

        origin.region_code == 'AU'
        
      • 次の式は、指定された IP 範囲ではなく、リージョンAUからのリクエストを照合します。

        request.region_code == "AU" && !inIpRange(origin.ip, '1.2.3.0/24')
        
      • 次の式は、URI が正規表現に一致する場合、リクエストを照合します。

        request.path.matches('/bad_path/)')
        
      • 次の式は、user-id ヘッダーの Base64 でデコードされた値に特定の値が含まれている場合に、リクエストを照合します。

        has(request.headers['user-id']) && request.headers['user-id'].base64Decode().contains('myValue')
        
      • 次の式は、事前設定された式セットを使用して SQLi 攻撃を照合します。

        evaluatePreconfiguredExpr('sqli-stable')
        
  7. [アクション] セクションで [許可] または [拒否] を選択します。

  8. 拒否ルールを作成する場合は、[拒否ステータス] を選択します。

  9. ルールのプレビュー モードを有効にする場合は、[有効にする]をオンにします。

  10. [優先度] フィールドに正の整数を入力します。

  11. [追加] をクリックします。

gcloud

Google Cloud Armor セキュリティ ポリシーにルールを追加するには、コマンド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 からのトラフィックをブロックするルールを追加します。ルールの優先度は 1000 で、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 フラグを使用して、Google Cloud Armor ルール言語で条件を指定します。次のコマンドは、IP アドレス 1.2.3.4 からのトラフィックを許可するルールを追加し、user-agent ヘッダーに文字列 Godzilla を含めます。

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('Godzilla')" \
   --action allow \
   --description "Block User-Agent 'Godzilla'"

次のコマンドは、リクエストの 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"

次のコマンドは、リージョン AU からのリクエスト、かつ、指定した IP 範囲外からのものをブロックするルールを追加します。

gcloud compute security-policies rules create 1000 \
   --security-policy my-policy \
   --expression "request.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('/bad_path/)')" \
   --action deny-502 \
   --description "regex block"

次のコマンドは、user-id ヘッダーの Base64 デコードされた値に特定の値が含まれている場合に、リクエストをブロックするルールを追加します。

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

Google Cloud Armor セキュリティ ポリシーのルールをリストする

これらの手順を使用して、Google Cloud Armor セキュリティ ポリシーのルールをリストします。

Console

Google Cloud Armor セキュリティ ポリシーのルールをリストするには:

  1. Google Cloud Console の [ネットワーク セキュリティ] ページに移動します。
    ネットワークセキュリティ ページに移動
    [Google Cloud Armor セキュリティ ポリシー] ページが表示されます。
  2. Google Cloud Armor セキュリティ ポリシーの名前をクリックします。[ポリシーの詳細]ページが表示され、ページの中央にポリシー ルールが一覧表示されます。

gcloud

次の gcloud コマンドを使用して、1 つのセキュリティ ポリシー内のすべてのルールを、ポリシーの説明とともに一覧表示します。

gcloud compute security-policies describe [NAME] \

次のgcloudコマンドを使用して、指定された Google Cloud Armor セキュリティ ポリシーで指定されている優先度を持つルールを記述します。

gcloud compute security-policies rules describe [PRIORITY] \
    --security-policy [POLICY_NAME]

たとえば、次のコマンドは、Google Cloud Armor セキュリティ ポリシーmy-policyの優先度 1000 のルールを示しています。

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 Armor セキュリティ ポリシーのルールをアトミックに更新するをご覧ください。

Console

ルールを更新するには、次のようにします。

  1. Google Cloud Console の [ネットワーク セキュリティ] ページに移動します。
    ネットワークセキュリティ ページに移動
    [Google Cloud Armor セキュリティ ポリシー] ページが表示されます。
  2. Google Cloud Armor セキュリティ ポリシーの名前をクリックします。[ポリシーの詳細] ページが表示されます。
  3. ページ中の、ルールの横にある鉛筆アイコンをクリックします。[ルールの編集] ページが表示されます。
  4. 必要な変更を行い、[更新] をクリックします。

gcloud

このコマンドを使用して、指定された Google Cloud Armor セキュリティ ポリシーで指定されている優先度でルールを更新します。このコマンドを使用して一度に更新できる Google Cloud Armor セキュリティ ポリシーは 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 Armor セキュリティ ポリシーの複数のルールをアトミックに更新する

アトミック更新は、1 回の更新で複数のルールに変更を適用します。ルールを 1 つずつ更新すると、古いルールと新しいルールが同時に機能する瞬間が生じるため、意図しない動作が発生する可能性があります。

複数のルールをアトミックに更新するには、現在の Google Cloud Armor セキュリティ ポリシーを JSON または YAML ファイルにエクスポートしてから、変更します。変更したファイルを使用して新しい Google Cloud Armor セキュリティ ポリシーを作成し、関連するバックエンド サービスのセキュリティ ポリシーを切り替えます。

gcloud

  1. 次の例に示すように、ポリシーをエクスポートして更新します。

    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
  2. 適当なテキスト エディタを使用してポリシーを変更します。たとえば、既存ルールの優先度を変更して、新しいルールを追加できます。

    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
  3. 次の例に示すように、新しい Google Cloud Armor セキュリティ ポリシーを作成し、変更したファイルの名前と形式を指定します。

    gcloud compute security-policies create new-policy \
       --description "allow-listed traffic" \
       --file-name modified-policy \
       --file-format yaml
    
  4. 次の例に示すように、関連するバックエンド サービスから古いセキュリティ ポリシーを削除します。

    gcloud compute backend-services update my-backend \
       --security-policy ""
    
  5. 次の例に示すように、新しいセキュリティ ポリシーをバックエンド サービスに追加します。

    gcloud compute backend-services update my-backend \
        --security-policy new-policy
    
  6. 古いポリシーが使用されていない場合は、削除します。

    gcloud compute security-policies delete my-policy
    

ルールを削除する

これらの手順を使用して、Google Cloud Armor セキュリティ ポリシーからルールを削除します。

Console

Google Cloud Armor セキュリティ ポリシーからルールを削除するには:

  1. Google Cloud Console の [ネットワーク セキュリティ] ページに移動します。
    ネットワークセキュリティ ページに移動
    [Google Cloud Armor セキュリティ ポリシー] ページが表示されます。
  2. Google Cloud Armor セキュリティ ポリシーの名前をクリックします。[ポリシーの詳細] ページが表示されます。
  3. ページ中の、削除するルールの横にあるチェックボックスをオンにします。
  4. [削除] ボタンをクリックします。

gcloud

このコマンドを使用して、指定された優先度のルールを、指定された Google Cloud Armor セキュリティ ポリシーから削除します。一度に変更できる Google Cloud Armor セキュリティ ポリシーは 1 つだけですが、一度に複数のルールを削除できます。

gcloud compute security-policies rules delete PRIORITY [...] [
   --security-policy [POLICY_NAME] \
  ]

例:

gcloud compute security-policies rules delete 1000 \
   --security-policy my-policy

HTTP(S) リクエストのロギングを有効にする

セキュリティ ポリシー名、一致ルールの優先度、関連するアクション、関連情報の Google Cloud Armor ログは、HTTP(S) 負荷分散のロギングの一環として記録されます。新しいバックエンド サービスのロギングはデフォルトで無効になっているため、Google Cloud Armor の全ロギング情報を記録するには、HTTP(S) 負荷分散ロギングを有効にする必要があります。

HTTP(S) 負荷分散のロギングを有効化するには、HTTP(S) 負荷分散のロギングとモニタリングをご覧ください。

ログの表示

ログはコンソールでのみ表示できます。

Console

Google Cloud Armor セキュリティ ポリシーのログを表示するには:

  1. Google Cloud Console の [ネットワーク セキュリティ] ページに移動します。
    ネットワーク セキュリティ ページに移動
    [Google Cloud Armor セキュリティ ポリシー] ページが表示されます。
  2. セキュリティ ポリシーの行で、ログを表示するポリシーに対応するその他メニューをクリックします。
  3. [ログを表示] を選択します。

トラブルシューティング

これらの手順を使用して、Google Cloud Armor セキュリティ ポリシーの問題をトラブルシューティングします。

Google Cloud Armor セキュリティ ポリシーで構成された拒否ルールにもかかわらずトラフィックは許可されます

  1. Google Cloud Armor セキュリティ ポリシーがターゲット バックエンド サービスにアタッチされていることを確認してください。たとえば、次のコマンドは、バックエンド サービスmy-backendに関連付けられているすべてのデータを示しています。返される結果には、このバックエンド サービスに関連付けられている Google Cloud Armor セキュリティ ポリシーの名前が含まれているはずです。

    gcloud compute backend-services describe my-backend
    
  2. Cloud Monitoring Logging の HTTP(S) ログを確認して、関連するアクションによるトラフィックに一致するポリシーとルールを特定します。Cloud Monitoring ログビューアを使用してログを表示します。

    許可されたリクエストの、ログの例を次に示します。注意するフィールドは太字にしています。次のフィールドを確認して、トラフィックを拒否するように構成したルールと一致することを確認します。

    • configuredAction は、ルールで構成されたアクションと一致する必要があります
    • outcome は、上記の configuredAction と一致する必要があります
    • priority は、ルールの優先度の数字と一致する必要があります。
    • nameは、このバックエンド サービスにアタッチされた Google Cloud Armor セキュリティ ポリシーの名前と一致する必要があります
    httpRequest:
     remoteIp: 104.133.0.95
     requestMethod: GET
     requestSize: '801'
     requestUrl: http://74.125.67.38/
     responseSize: '246'
     serverIp: 10.132.0.4
     status: 200
     userAgent: curl/7.35.0
       insertId: ajvis5ev4i60
       internalId:
         projectNumber: '895280006100'
       jsonPayload:
         '@type': type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry
         **enforcedSecurityPolicy:
           configuredAction: ACCEPT
           name: mydev-policy-log-test1
           outcome: ACCEPT
           priority: 2147483647**
         statusDetails: response_sent_by_backend
       logName: projects/mydev-staging/logs/requests
       resource:
         labels:
           backend_service_name: ''
           forwarding_rule_name: mydev-forwarding-rule
           project_id: mydev-staging
           target_proxy_name: mydev-target-http-proxy
           url_map_name: mydev-url-map
           zone: global
         type: http_load_balancer
       severity: INFO
       timestamp: '2017-04-18T18:57:05.845960288Z'
    
  3. ルールの階層を確認して、正しいルールが一致していることを確認します。許可アクションがある優先度の高いルールが、トラフィックと一致している可能性があります。gCloud のセキュリティ ポリシーで describe コマンドを使用して、Google Cloud Armor セキュリティ ポリシーの内容を確認します。

    たとえば、次の例では、優先度の高い許可ルール(優先度 100)が 1.2.3.4 の IP アドレスからのトラフィックと一致し、優先度の低い(優先度 200)拒否ルールがトリガーされてトラフィックをブロックしないようにする方法を示しています。

gcloud compute security-policies describe my-policy
creationTimestamp: '2017-04-18T14:47:58.045-07:00
description: ''
fingerprint: Yu5spBjdoC0=
id: '2560355463394441057'
kind: compute#securityPolicy
name: my-policy
rules:
- action: allow
  description: allow high priority rule
  kind: compute#securityPolicyRule
  match:
    srcIpRanges:
    - '1.2.3.4/32'
  preview: false
  priority: 100
- action: deny
  description: deny lower priority rule
  kind: compute#securityPolicyRule
  match:
    srcIpRanges:
    - '1.2.3.0/24
  preview: false
  priority: 200
- action: deny
  description: default rule
  kind: compute#securityPolicyRule
  match:
    srcIpRanges:
    - '*'
  preview: false
  priority: 2147483647
  selfLink: http://www.googleapis.com/compute/v1/projects/bigclustertestdev0-devconsole/global/securityPolicies/sp

事前設定されたルールが誤検知を返す

XSS と SQLi の検出は、HTTP リクエスト ヘッダーと他の L7 パラメータの静的なシグネチャ マッチングに基づいています。これらの正規表現パターンでは、誤検出する可能性が高くなります。XSS と SQLi の検出に事前構成されたルールをプレビュー モードで使用すると、Cloud Monitoring のログで誤検出の有無を確認できます。

誤検出が見つかった場合は、トラフィックの内容を ModSecurity CRS のルールと比較できます。ルールが無効か不適切な場合は、evaluatePreconfiguredExpr 式を使用してルールを無効にし、exclude ID list 引数でルールの ID を指定します。

ログを確認してすべての誤検知を削除した後、プレビュー モードを無効にします。

事前設定済みのルールをプレビュー モードで追加するには:

  1. プレビューモードで事前設定された式セットとともにセキュリティ ポリシーを作成します。

    gcloud compute security-policies rules create 1000
       --security-policy my-policy
       --expression "evaluatePreconfiguredExpr('xss-stable')"
       --action deny-403
       --preview
    
  2. Cloud Monitoring Logging の HTTP(S) ログで、urlcookie などの HTTP リクエスト フィールドを確認します。たとえば、requestUrlは ModSecurity CRS ルール ID 941180 に対して検知されます。

    httpRequest:
      remoteIp: 104.133.0.95
      requestMethod: GET
      requestSize: '801'
      requestUrl: http://74.125.67.38/foo?document.cookie=1010"
      responseSize: '246'
      serverIp: 10.132.0.4
      status: 200
      userAgent: curl/7.35.0
    insertId: ajvis5ev4i60
    internalId:
      projectNumber: '895280006100'
    jsonPayload:
      '@type': type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry
      enforcedSecurityPolicy:
        configuredAction: ACCEPT
        name: my-policy
        outcome: ACCEPT
        priority: 2147483647
        preconfiguredExprIds: [ 'owasp-crs-v030001-id941180-xss' ]
      statusDetails: response_sent_by_backend
    logName: projects/mydev-staging/logs/requests
    resource:
      labels:
        backend_service_name: ''
        forwarding_rule_name: mydev-forwarding-rule
        project_id: mydev-staging
        target_proxy_name: mydev-target-http-proxy
        url_map_name: mydev-url-map
        zone: global
      type: http_load_balancer
    severity: INFO
    timestamp: '2017-04-18T18:57:05.845960288Z'
    
  3. Google Cloud Armor セキュリティ ポリシーのルールを更新して、ModSecurity CRS ルール ID 941180 を除外します。

    gcloud compute security-policies rules update 1000 \
       --security-policy my-policy \
       --expression "evaluatePreconfiguredExpr('xss-stable', ['owasp-crs-v030001-id941180-xss'])" \
       --action deny-403 \
       --preview
    
  4. Cloud Monitoring ログをもう一度確認し、ルールを実装するためのプレビュー モードを無効にします。

シグネチャが拒否されたクライアントがブロックまたは拒否されない

Cloud CDN で Google Cloud Armor を使用している場合、セキュリティ ポリシーは、動的コンテンツのリクエスト、キャッシュミス、または CDN 送信元サーバー宛てのその他のリクエストに対してのみ適用されます。ダウンストリームの Google Cloud Armor のセキュリティ ポリシーによってそのリクエストが CDN 送信元サーバーに到達できない場合でも、キャッシュヒットは処理されます。

次のステップ