このドキュメントでは、OWASP Top 10 で説明されている一般的なアプリケーション レベルの攻撃の防御に役立つ Google Cloud プロダクトと緩和戦略について説明します。OWASP トップ 10 は、Open Web Application Security(OWASP)Foundation によるすべてのアプリケーション オーナーが把握すべきセキュリティ リスクの上位 10 のリストです。これらのリスクに対する完全な保護を保証するセキュリティ プロダクトはありませんが、アーキテクチャに対して有効なプロダクトを適用すると、強力な多層セキュリティ ソリューションを実現できます。
Google のインフラストラクチャは、サービスを安全に構築、デプロイ、運用できるように設計されています。物理的および運用上のセキュリティ、保存データおよび転送データの暗号化、その他の安全なインフラストラクチャの重要な側面が Google によって管理されます。アプリケーションを Google Cloud にデプロイすることで、これらのメリットを継承できますが、特定の攻撃からアプリケーションを保護するためには、さらなる手段を講じなければならない場合があります。
このドキュメントに掲載されている緩和策は、アプリケーションのセキュリティ リスクと Google Cloud プロダクトを基準に分類されています。ウェブ セキュリティ リスクに対する多層防御戦略を策定するうえで役立つプロダクトは数多くあります。このドキュメントでは、さまざまなプロダクトで OWASP トップ 10 リスクを軽減する方法について説明しますが、特に Google Cloud Armor と Apigee がこれらの幅広いリスクを軽減する仕組みについて詳しく説明します。ウェブ アプリケーション ファイアウォール(WAF)として機能する Google Cloud Armor と、API ゲートウェイとして機能する Apigee は、さまざまな種類の攻撃をブロックするのに特に役立ちます。これらのプロダクトはインターネットからのトラフィックが Google Cloud 内のアプリケーションに到達する前に、外部トラフィックをブロックできます。
プロダクトの概要
次の表に、トップ 10 セキュリティ リスクから防御するために利用できる Google Cloud プロダクトを記載します。
プロダクト | 概要 | A01 | A02 | A03 | A04 | A05 | A06 | A07 | A08 | A09 | A10 |
---|---|---|---|---|---|---|---|---|---|---|---|
アクセスの透明性 | 管理者のアクセスログと承認コントロールにより、クラウド プロバイダによるアクセスを可視化して制御 | ✓ | ✓ | ||||||||
Artifact Registry | アーティファクトを一元的に保存し、依存関係を構築 | ✓ | |||||||||
Apigee | アプリケーション プログラミング インターフェースを設計、保護、スケール | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
Binary Authorization | 信頼できるコンテナ イメージのみを Google Kubernetes Engine にデプロイできるようにする | ✓ | ✓ | ||||||||
Google Security Operations | Google のインフラストラクチャ、検出技術、シグナルを利用して、リアルタイムかつ大規模に脅威を自動的に検出 | ✓ | |||||||||
Cloud Asset Inventory | プロジェクトおよびサービスのすべての Google Cloud アセットと Google Distributed Cloud Virtual アセットまたはマルチクラウド アセットの表示、モニタリング、分析 | ✓ | ✓ | ✓ | ✓ | ||||||
Cloud Build | Google Cloud でビルド、テスト、デプロイを行う | ✓ | |||||||||
センシティブ データの保護 | 特に機密性の高いデータを検出、分類、保護 | ✓ | ✓ | ✓ | |||||||
Cloud Load Balancing | SSL プロキシまたは HTTPS ロードバランサがネゴシエートする暗号をコントロール | ✓ | ✓ | ✓ | ✓ | ||||||
Cloud Logging | リアルタイムでのログの管理と大規模な分析 | ✓ | |||||||||
Cloud Monitoring | Google Cloud サービスとさまざまなアプリケーションやサードパーティ サービスから指標、イベント、メタデータを収集して分析 | ✓ | |||||||||
Cloud Source Repositories | チームのコードを一元的に保存、管理、追跡 | ✓ | |||||||||
Container Threat Detection | コンテナ イメージの状態を継続的にモニタリングし、すべての変更を評価して、リモート アクセスの試行をモニタリングし、ランタイム攻撃をほぼリアルタイムに検出 | ✓ | ✓ | ||||||||
Event Threat Detection | 組織の Cloud Logging ストリームをモニタリングして、ほぼリアルタイムで脅威を検出 | ✓ | ✓ | ✓ | |||||||
Forseti Inventory | アーキテクチャのスナップショットを収集して保存 | ✓ | |||||||||
Forseti Scanner | カスタム定義のポリシーに従って在庫データをスキャンし、予期しない偏差についてのアラートを発する | ✓ | |||||||||
Google Cloud Armor | 一般的な攻撃ベクトルを防御するために Google のネットワークのエッジにデプロイされたウェブ アプリケーション ファイアウォール(WAF) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
Google Cloud のセキュリティに関する公開情報 | Google Cloud プロダクトに関連する最新のセキュリティに関する公開情報 | ✓ | |||||||||
Identity-Aware Proxy(IAP) | ID とコンテキストを使用して、アプリケーションや VM へのアクセスを保護 | ✓ | ✓ | ✓ | |||||||
Identity Platform | Identity and Access Management 機能をアプリケーションに追加し、ユーザー アカウントを保護して、ID 管理をスケール | ✓ | ✓ | ||||||||
Cloud Key Management Service | Google Cloud で暗号鍵を管理 | ✓ | ✓ | ||||||||
reCAPTCHA | 不正行為やスパムからウェブサイトを保護 | ✓ | |||||||||
Secret Manager | API キー、パスワード、証明書、その他のセンシティブ データを保存 | ✓ | ✓ | ||||||||
Security Command Center | セキュリティ分析と脅威インテリジェンスの一元的な可視化によって、アプリケーションの脆弱性を表面化させる | ✓ | |||||||||
Security Health Analytics(SHA) | Security Command Center で利用可能な脆弱性の検出結果を生成 | ✓ | ✓ | ✓ | ✓ | ||||||
Titan セキュリティ キー | (Google の設計によるファームウェアとともに)ハードウェア チップが組み込まれたフィッシング耐性のある 2FA デバイスにより、キーの整合性を検証して、価値の高いユーザーを保護 | ✓ | |||||||||
Virtual Private Cloud ファイアウォール | 仮想マシン(VM)インスタンスとの接続を許可または拒否 | ✓ | |||||||||
VPC Service Controls | マルチテナント型 Google Cloud サービスのリソースを分離して、データ漏洩のリスクを軽減 | ✓ | ✓ | ||||||||
VirusTotal | 不審なファイルや URL を分析し、マルウェアのタイプを検出して、セキュリティ コミュニティと自動的に共有 | ✓ | ✓ | ||||||||
Web Security Scanner | Security Command Center で利用可能な脆弱性の検出結果タイプを生成 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
A01: 不完全なアクセス制御
不完全なアクセス制御とは、クライアント側に部分的に適用されている、または実装が不十分なアクセス制御を指します。不完全なアクセス制御を軽減するには、承認されたユーザーのみがリソースにアクセスできるようにアプリケーション側で適切に適用するために必要な変更を行います。
Apigee
ユースケース:
- アクセス制御の適用
- データ操作の制限
Apigee は、悪意のある人物が不正な変更を行うことや、システムにアクセスすることを防ぐために、アクセス制御を実装する階層化アプローチをサポートしています。
ロールベース アクセス制御(RBAC)を構成して、ユーザーが必要な機能と構成にのみアクセスできるようにします。暗号化された Key-Value マップを作成し、機密 Key-Value ペアを保存します。このペアは、Edge UI および管理 API 呼び出しではマスクされて表示されます。会社の ID プロバイダを使用したシングル サインオンを構成します。
ユーザーロールに応じて特定の API プロダクトを表示するようにデベロッパー ポータルを構成します。ユーザーロールに基づいてコンテンツを表示または非表示にするようにポータルを構成します。
Cloud Asset Inventory
ユースケース:
- 未承認の IT のモニタリング(「シャドウ IT」とも呼ばれます)
- 古いコンピューティング インスタンス
データ漏洩の最も一般的なベクトルの一つは、孤立しているか未承認の IT インフラストラクチャです。リアルタイム通知を設定して、保護が不十分なリソースの予期しない実行や、古いソフトウェアの使用についてアラートを発します。
Cloud Load Balancing
ユースケース:
- SSL と TLS 暗号のきめ細かい制御
Cloud Load Balancing で使用可能な事前定義されたグループまたは暗号のカスタムリストを割り当てることで、脆弱な SSL または TLS 暗号の使用を防ぎます。
Forseti Scanner
ユースケース:
- アクセス制御構成のモニタリング
Google Cloud リソースを体系的にモニタリングし、アクセス制御が意図したとおりに設定されていることを確認します。ルールベースのポリシーを作成して、セキュリティ体制を体系化します。構成が予期せず変更された場合は、Forseti Scanner が通知を送信するため、既知の状態に自動的に戻すことができます。
Google Cloud Armor
ユースケース:
- クロスオリジン リクエストをフィルタする
- ローカルまたはリモート ファイル インクルード攻撃をフィルタする
- HTTP パラメータ汚染攻撃をフィルタする
不完全なアクセス制御では多くの場合、ウェブ アプリケーション ファイアウォールを使用して緩和することができません。アプリケーションで必ずしもすべてのリクエストに対してアクセス トークンが必要ではないか、適切にチェックされず、クライアント側でデータを操作できるためです。複数の不完全なアクセス制御に関連する Juice Shop の課題。たとえば、別のユーザー名でフィードバックを投稿する場合は、一部のリクエストはサーバー側で認証されないという事実を使用します。課題の解決策に示されているように、この脆弱性に対する悪用は完全にクライアント側で行われるため、Google Cloud Armor を使用して軽減することはできません。
アプリケーションにすぐにパッチを適用できない場合、一部の課題はサーバー側である程度の緩和は可能です。
たとえば、ウェブサーバーでクロスオリジン リソース シェアリング(CORS)の実装が不十分であるためにクロスサイト リクエスト フォージェリ(CSRF)攻撃が可能である場合、CSRF Juice Shop の課題で示されているように、カスタムルールとともに、予期しない送信元からのリクエストをすべてブロックすることで、この問題に対処できます。次のルールは、example.com と google.com 以外を送信元とするすべてのリクエストに適合します。
has(request.headers['origin']) &&
!((request.headers['origin'] == 'https://example.com')||
(request.headers['origin'] == 'https://google.com') )
このようなルールに適合するトラフィックが拒否された場合、CSRF の課題の解決策が機能しなくなります。
バスケット操作のチャレンジでは、HTTP パラメータ汚染(HPP)を使用して、チャレンジ ソリューションの手順に沿ってショップを攻撃する方法を確認できます。HPP は、プロトコル攻撃ルールセットの一部として検出されます。この種の攻撃をブロックするには、evaluatePreconfiguredExpr('protocolattack-stable')
ルールを使用します。
Identity-Aware Proxy とコンテキストアウェア アクセス
ユースケース:
- 一元化されたアクセス制御
- クラウドやオンプレミスと連携
- HTTP と TCP 接続を保護する
- コンテキストアウェア アクセス
IAP を使用すると、ID とコンテキストを使用してアプリケーションの周囲に安全な認証と認可の壁を形成できます。Cloud Identity と IAM に基づいて構築され、一元管理できる認証と認可システムにより、一般公開アプリケーションに対する不完全な認可やアクセス制御を防ぎます。
従来の VPN を必要としないユーザーの ID とリクエストのコンテキストに基づいて、ウェブ アプリケーション、VM、Google Cloud APIs、Google Workspace アプリケーションにきめ細かいアクセス制御を適用します。クラウドと、オンプレミス アプリケーションとインフラストラクチャ リソースの両方に単一のプラットフォームを使用します。
Security Health Analytics
ユースケース:
- MFA または 2FA の適用
- API キーの保護
- SSL ポリシーのモニタリング
多要素認証のコンプライアンス、SSL ポリシー、API キーの状態をモニタリングすることで、不完全なアクセス制御を防ぎます。
Web Security Scanner
ユースケース:
- リポジトリの一般公開
- 安全でないリクエスト ヘッダーの検証
Web Security Scanner は、ウェブ アプリケーションをスキャンして、一般公開されているコード リポジトリやリクエスト ヘッダーの検証の構成ミスなどの脆弱性を検出します。
A02: 暗号化の失敗
暗号化の失敗は、転送中に暗号化されないことや暗号化の強度が弱いことが原因で、または誤ってセンシティブ データが漏洩した場合に発生することがあります。これらの脆弱性に対する攻撃は、通常はアプリケーションに固有であるため、軽減するには多層防御のアプローチが必要です。
Apigee
ユースケース:
- センシティブ データを保護する
一方向 TLS と双方向 TLS を使用して、プロトコル レベルで機密情報を保護します。
Assign Message ポリシーや JavaScript ポリシーなどのポリシーを使用して、クライアントに返される前にセンシティブ データを削除します。
標準の OAuth 手法を使用し、各リクエストの認証レベルを高めるために、HMAC、ハッシュ、ステート、ノンス、PKCE、またはその他の手法を追加することを検討します。
Edge Trace ツールでセンシティブ データをマスクします。
Key-Value マップに保存されるセンシティブ データを暗号化します。
Cloud Asset Inventory
ユースケース:
- 検索サービス
- アクセス アナライザ
データ漏洩の最も一般的なベクトルの 1 つは、孤立しているか未承認の IT インフラストラクチャです。Cloud Asset 時系列データを分析すると、保守されていないサーバーや、過剰に共有されているルールを持つバケットを特定できます。
リアルタイム通知を設定して、保護が不十分であるか、未承認のリソースに対する予期しないプロビジョニングについてアラートを発します。
Cloud Data Loss Prevention API(Sensitive Data Protection の一部)
ユースケース:
- センシティブ データの検出と分類
- 自動データ マスキング
Cloud Data Loss Prevention API(DLP API)を使用すると、バケットやデータベースに保存されているセンシティブ データを潜在的にスキャンし、意図しない情報の漏洩を防ぐことができます。許可されていないデータが識別された場合は、自動的にフラグを設定するか、秘匿化できます。
Cloud Key Management Service
ユースケース:
- 安全な暗号鍵管理
(Cloud KMS)は暗号鍵の漏洩防止に役立ちます。このクラウドホスト型鍵管理サービスを使用して、オンプレミスと同じ方法でクラウド サービスの対称暗号鍵および非対称暗号鍵を管理します。AES256、RSA 2048、RSA 3072、RSA 4096、EC P256、EC P384 の各規格に対応し、暗号鍵の生成、使用、ローテーション、破棄をサポートしています。
Cloud Load Balancing
ユースケース:
- SSL と TLS 暗号のきめ細かい制御
SSL ポリシーを使用すると、ロードバランサで許可される SSL および TLS 機能と暗号を制御して、センシティブ データの漏洩を回避できます。必要に応じて、未承認または安全でない暗号をブロックします。
Google Cloud Armor
ユースケース:
- 既知の攻撃 URL をフィルタする
- 機密性の高いエンドポイント アクセスを制限する
一般に、センシティブ データの漏洩はソースで阻止することが望ましいものの、それぞれの攻撃はアプリケーション特有であるため、ウェブ アプリケーション ファイアウォールはデータ漏洩を広範囲に阻止するという限られた方法でのみ使用できます。ただし、アプリケーションにすぐにパッチを適用できない場合は、Google Cloud Armor カスタムルールを使用して、脆弱なエンドポイントやリクエスト パターンへのアクセスを制限できます。
たとえば、センシティブ データの漏洩に関する Juice Shop の課題は、安全でないディレクトリ トラバーサルと null バイト インジェクション攻撃によって悪用される可能性があります。次のカスタム式を使用して URL 内の文字列をチェックすることで、これらのインジェクションを緩和できます。
request.path.contains("%00") || request.path.contains("%2500")
Prometheus で使用される /metrics
サブディレクトリにアクセスすることで、指標の公開の課題を解決できます。このように公開されている機密性の高いエンドポイントがあり、直ちにアクセスを削除できない場合は、特定の IP アドレス範囲を除いて、このエンドポイントへのアクセスを制限できます。次のカスタム式のようなルールを使用します。
request.path.contains("/metrics") && !(inIpRange(origin.ip, '1.2.3.4/32')
1.2.3.4/32
は、指標インターフェースへのアクセス権を付与する必要がある IP アドレス範囲に置き換えます。
誤って公開されたログファイルが Juice Shop の課題の解決に使用されます。ログの公開を回避するには、ログファイルへのアクセスを完全に禁止するルール request.path.endsWith(".log")
を設定します。
Identity-Aware Proxy とコンテキストアウェア アクセス
ユースケース:
- 機密性の高いサービスへのリモート アクセスを保護する
- 一元化されたアクセス制御
- コンテキストアウェア アクセス
ID とコンテキストを使用して、アプリケーションの周囲に安全な認証と認可の境界を形成します。インターネット上のどこからでも許可された個人のみにコンテキストアウェア アクセスを許可するには、内部のバグレポート、企業のナレッジベース、IAP の背後にあるメールなどのツールをデプロイします。
コンテキストアウェア アクセスを使用すると、ユーザーの ID と従来の VPN なしでのリクエストのコンテキストに基づいて、ウェブ アプリケーション、仮想マシン(VM)、Google Cloud APIs、Google Workspace アプリケーションに対して、きめ細かいアクセス制御を実施できます。ゼロトラスト セキュリティ モデルと Google の BeyondCorp の実装をベースとするコンテキストアウェア アクセスにより、ユーザーにアクセスを許可し、きめ細かい制御を行い、クラウドとオンプレミスの両方のアプリケーションとインフラストラクチャ リソースの単一のプラットフォームを使用します。
Secret Manager
ユースケース:
- 暗号鍵
- API キー
- その他のシステム認証情報
Secret Manager は、API キー、サービス アカウントのパスワード、暗号アセットなどの最も重要なデータのための安全なストレージ サービスです。シークレットを一元的に保存することで、Google Cloud の認証システムと認可システム(IAM を含む)を利用して、アクセスのリクエストが有効かどうかを判断できます。
Secret Manager は、クレジット カードのトークン化や個々のユーザー パスワード ストレージなどの大規模なオペレーション向けには設計されていません。このような用途には、Identity Platform for CIAM、組織のメンバー用の Cloud Identity、または専用のトークン化ソフトウェアを使用する必要があります。
Security Health Analytics
ユースケース:
- MFA / 2FA の適用
- API キーの保護
- API キーのローテーションの適用
- コンピューティング イメージのプライバシー
- SSH 認証鍵ルールの適用
- セキュアブートのモニタリング
- API アクセスのセキュリティ
- SSL ポリシーのモニタリング
- 無効化されたロギング
- 一般公開バケットの ACL アラート
多要素認証のコンプライアンスと API キーの状態をモニタリングすることで、センシティブ データが漏洩しないようにします。コンテナ イメージ ストレージ、Cloud Storage、SSL ポリシー、SSH 認証鍵ポリシー、ロギング、API アクセスなどの安全でない構成に関するアラートを取得します。
VirusTotal
ユースケース:
- フィッシング防止
VirusTotal を使用すると、悪意のあるコンテンツの URL がユーザー入力、メール、チャット、ログ、その他のロケーションのどこで検出されたかを問わず、ユーザーまたは従業員に提示する前にスキャンできます。
VPC Service Controls
ユースケース:
- マネージド サービス用のファイアウォール
重要なマネージド サービスをファイアウォールでラップして、サービスを呼び出すことができるユーザーと、サービスが応答できるユーザーを制御します。Cloud Functions などのサービスにおける送信境界ルールを使用して、不正な下り(外向き)通信およびデータの引き出しをブロックします。不正なユーザーと場所からマネージド データストアとデータベースへのリクエストを防止します。強力な API または被害を受ける可能性のある API の周囲に安全な境界を作成します。
ウェブ アプリケーション スキャナ
ユースケース:
- ウェブ アプリケーションのセキュリティ リスク スキャナ
- ソース リポジトリの可用性スキャナ
ウェブ アプリケーションでセンシティブ データが公開されないようにするには、パスワードがクリアテキストで送信されないようにしてください。公開された Git と Apache Subversion のソースコード リポジトリを確認して、被害を受ける可能性のある未加工のソースコードの漏洩を防ぎます。これらのスキャンは、特定の OWASP トップ 10 コントロールに対応するように設計されています。
Web Security Scanner
ユースケース:
- 暗号化されていないパスワードをネットワーク経由で送信
Web Security Scanner は、ウェブ アプリケーションをスキャンし、エラーと脆弱性の検出結果を報告します。ユーザーのアプリケーションがパスワードをクリアテキストで送信すると、Web Security Scanner は CLEAR_TEXT_PASSWORD
の検出結果を生成します。
A03: インジェクション
SQL、NoSQL、OS、LDAP インジェクションなどのインジェクションの不具合は、信頼できないデータがコマンドまたはクエリの一部としてインタープリタに送信されたときに発生します。攻撃者の悪意のあるデータにより、インタープリタがだまされ、意図しないコマンドを実行することや、適切な認可なしでデータにアクセスすることがあります。ユーザーデータは、インタープリタに送信する前に、アプリケーションでサニタイズまたはフィルタリングすることをおすすめします。
以降のセクションでは、このリスクを軽減する際に有効な Google Cloud プロダクトについて説明します。
Apigee
ユースケース:
- SQL インジェクションのブロック
- NoSQL インジェクションのブロック
- LDAP インジェクションのブロック
- JavaScript インジェクションのブロック
Apigee は、ポリシーまたはルールをさらに処理する前に、クライアントから提供された値が構成済みの想定された値と一致することを確認するいくつかの入力検証ポリシーを提供します。受信 API リクエスト用のゲートウェイとして機能する Apigee Edge が制限チェックを実行して、ペイロード構造が許容範囲内に収まっていることを確認します。入力検証ルーティンで入力を変換して危険な文字シーケンスを削除し、安全な値に置き換えるように、API プロキシを構成できます。
Apigee プラットフォームで入力を検証するための方法がいくつか用意されています。
- JSONThreatProtection は、JSON ペイロードの脅威をチェックします。
- XMLThreatProtection は、XML ペイロードの脅威をチェックします。
- JavaScript は、パラメータとヘッダーを検証します。
- RegularExpressionProtection ポリシーは、SQL コード インジェクションに対処します。
OASValidation
ポリシーは、受信リクエストまたはレスポンス メッセージを OpenAPI 仕様(JSON または YAML)に照らし合わせて検証します。SOAPMessageValidation
ポリシーは、XML メッセージをその XSD スキーマに対して検証し、SOAP メッセージを WSDL 定義に対して検証します。
Container Threat Detection
ユースケース:
- 悪意のあるスクリプトの検出
- リバースシェル検出
- マルウェアのインストールの検出
Container Threat Detection の Malicious Script Executed
検出機能は、システムで実行されているすべてのシェル スクリプトを分析し、悪意のあるスクリプトを報告します。これは、シェルコマンド インジェクション攻撃を検出する手段となります。シェルコマンド インジェクションが成功すると、攻撃者はリバースシェルを生成します。これによって Reverse Shell
検出機能がトリガーされます。また、マルウェアがインストールされると、Added Binary Executed
検出機能と Added Library Loaded
検出機能がトリガーされます。
Google Cloud Armor
ユースケース:
- SQL インジェクション フィルタリング
- PHP インジェクション フィルタリング
Google Cloud Armor は、一般的なインジェクション攻撃をアプリケーションに到達する前にブロックできます。SQL インジェクション(SQLi)の場合、Google Cloud Armor には OWASP Modsecurity コアルール セットをベースにした事前定義されたルールセットが存在します。evaluatePreconfiguredExpr('sqli-stable')
ルールを単独で、または他のカスタムルールと組み合わせて使用することによって、コアルール セットで定義されている一般的な SQLi 攻撃をブロックするセキュリティ ポリシーを構築することが可能です。たとえば、URL パスフィルタを使用することで、SQLi ブロックを特定のアプリケーションに制限できます。
PHP インジェクションに対しては、別の事前構成済みルールセットが存在します。evaluatePreconfiguredExpr('php-stable')
ルールを使用して、一般的な PHP インジェクション攻撃をブロックできます。
アプリケーションによっては、ルールセットの一部のルールの感度が非常に高いため、事前構成された式を有効にすると偽陽性が発生することがあります。詳細については、偽陽性のトラブルシューティングおよびルールセットを異なる感度レベルに調整する方法をご覧ください。
SQL または PHP をターゲットにした攻撃以外のインジェクション攻撃については、カスタムルールを作成して、これらのプロトコルで特定のキーワードまたはエスケープ パターンがリクエストパスまたはクエリで使用されている場合に、リクエストをブロックできます。有効なリクエストにこれらのパターンが含まれないようにしてください。また、渡されたデータを解釈する可能性がある特定のエンドポイントまたはパスに対してのみ使用されるように、これらのルールを制限することもできます。
さらに、一部のインジェクション攻撃は、リモートコード実行とリモート ファイル インジェクション用に事前構成されたルールを使用することで軽減できます。
Web Security Scanner
ユースケース:
- クロスサイト スクリプティングのモニタリング
- SQL インジェクションのモニタリング
Web Security Scanner はウェブ アプリケーションの脆弱性をスキャンし、クロスサイト スクリプティングと SQL インジェクション攻撃をモニタリングする検出機能を提供します。
A04: 安全性が低い設計
安全性が低い設計は、組織が開発ライフサイクル中に脅威を評価して対処する方法を実装しない場合に発生します。脅威モデリングは、設計フェーズと改善フェーズの早い段階で実施され、開発フェーズとテストフェーズで継続されるため、組織が前提条件と障害の欠陥を分析するのに役立ちます。「間違いから学習する」という過失を責めない文化が、設計の安全性を確保するための鍵となります。
Apigee
ユースケース:
- 入力の検証
- アクセス制御
- 障害の処理
- コンテンツ保護ポリシー
- パスワードの管理
Apigee では、OASValidation ポリシーで、アプリケーションに対する受信リクエストとレスポンスを検証できます。また、アクセスを保護するには、シングル サインオン(SSO)、ロールベース アクセス制御(RBAC)を構成して API へのアクセスを制限し(Auth0 などを使用)、環境にアクセスできる IP アドレスを制限します。障害処理ルールを使用すると、API プロキシがエラーにどのように対処するかをカスタマイズできます。
Apigee は、Apigee グローバル ユーザーの安全でないパスワードから保護するために、パスワードの有効期限、ロックアウト、リセット機能を提供します。さらに、2 要素認証プロセス(2FA)を有効にすることもできます。
Cloud Data Loss Prevention API(Sensitive Data Protection の一部)
ユースケース:
- センシティブ データを特定して削除する
Cloud Data Loss Prevention API を使用して、センシティブ データを特定してトークン化できます。DLP API を使用すると、センシティブ データの公開を制限できます。データをトークン化して保存した後に、アクセス制御を設定して、データを表示できるユーザーを制限することができます。詳しくは、Cloud Storage にアップロードされたデータの分類の自動化と、Sensitive Data Protection を使用した大規模なデータセットの PII の匿名化と再識別をご覧ください。
Secret Manager
ユースケース:
- 認証情報のストレージを保護する
Secret Manager を使用して、アプリケーションとパイプラインが IAM で付与された権限に基づいて名前付きシークレットの値にアクセスできます。また、シークレットにプログラムからアクセスできるため、自動化されたプロセスでシークレット値にアクセスできます。有効にした場合、Secret Manager とのすべてのやり取りから監査証跡が得られます。これらの監査証跡を使用して、フォレンジックやコンプライアンスのニーズに対応できます。
Web Security Scanner
ユースケース:
- アプリケーションに潜むセキュリティ脆弱性を特定する
Web Security Scanner はウェブ アプリケーションをスキャンし脆弱性を検出します。リンクをたどり、できる限り多くのユーザー入力とイベント ハンドラの実行を試みます。CACHEABLE_PASSWORD_INPUT
検出機能を使用すると、ウェブ アプリケーションに入力されたパスワードを安全なパスワード ストレージではなく通常のブラウザ キャッシュに保存できるかどうかを判断できます。
A05: セキュリティの構成ミス
セキュリティの構成ミスとは、一般的にアプリケーションの強化によって回避できるパッチが適用されていないアプリケーションの不具合、有効なデフォルトのアカウント、保護されていないファイルやディレクトリなどを指します。セキュリティの構成ミスは、たとえば、デフォルトの構成を信頼する、安全でない可能性がある部分的な構成を行う、エラー メッセージに機密情報が含まれる、適切なセキュリティ制御なしでデータをクラウドに保存する、HTTP ヘッダーの構成ミスなどといったさまざまな状況で発生します。
Apigee
ユースケース:
- セキュリティ構成を管理する
- セキュリティ構成をモニタリングする
共有フローを使用すれば、API デベロッパーは、ポリシーとリソースを再利用可能なグループにまとめることができます。再利用可能な機能を 1 か所に集約することにより、共有フローは整合性を保証し、開発時間を短縮して、コードをより簡単に管理するのに役立ちます。FlowCallout ポリシーを使用して個々の API プロキシ内に共有フローを含めることも、フローフックに共有フローを配置して、同じ環境にデプロイされたすべての API プロキシの共有フローロジックを自動的に実行することもできます。
Cloud Asset Inventory
ユースケース:
- リアルタイムの通知サービス
リアルタイムの通知により、保護が不十分であるか、未承認のリソースに対する予期しないプロビジョニングについてアラートを発することができます。
Cloud Load Balancing
ユースケース:
- SSL と TLS 暗号のきめ細かい制御
ロードバランサで使用できる事前定義されたグループまたは暗号のカスタムリストを割り当てることで、既知の脆弱な SSL または TLS 暗号の使用を防ぎます。
Google Cloud Armor
ユースケース:
- 安全でないエンドポイントをフィルタする
- ローカルまたはリモート ファイル インクルード攻撃をフィルタする
- プロトコル攻撃をフィルタする
セキュリティの構成ミスはアプリケーション レベルで発生する可能性があるため、OWASP Foundation ではアプリケーションを直接強化し、パッチを適用して、不要な機能をすべて削除することが推奨されています。
Google Cloud Armor などのウェブ アプリケーション ファイアウォール(WAF)は、根本的な構成ミスの解決には役立ちませんが、アプリケーションの一部へのアクセスを完全にブロックすることや、特定の IP アドレスまたは国を除くすべての人へのアクセスをブロックすることができます。アクセスを制限することで、構成ミスが悪用されるリスクを軽減できます。
たとえば、アプリケーションで /admin
などの共通 URL を使用して管理インターフェースを公開する場合は、認証されたインターフェースであっても、このインターフェースへのアクセスを制限できます。これを行うには、次の例のような拒否ルールを使用します。
request.path.contains("/admin") && !(inIpRange(origin.ip, '1.2.3.4/32')
1.2.3.4/32
は、管理インターフェースへのアクセス権を付与する必要がある IP アドレス範囲に置き換えます。
一部の構成ミスは、事前定義されたローカル ファイル インクルード(LFI)またはリモート ファイル インクルード(RFI)のルールセットを使用して部分的に軽減できます。たとえば、LFI ルールセットを適用する場合、Juice Shop のクロスサイト画像処理の悪用の課題に成功しません。evaluatePreconfiguredExpr('lfi-stable') ||
evaluatePreconfiguredExpr('rfi-stable')
ルールを使用し、LFI ルールセットと RFI ルールセットを使用してリクエストをブロックし、必要に応じてルールを調整します。課題の解決策に成功しなくなることを確認できます。
一部の HTTP 攻撃は、事前構成されたルールセットを使用して軽減することもできます。
- HTTP 動詞の改ざんを回避するには、メソッド適用ルールセット(プレビュー)を使用します。
evaluatePreconfiguredExpr('methodenforcement-stable')
ルールを使用して、GET
、HEAD
、POST
、OPTIONS
の各メソッド以外の HTTP リクエスト メソッドを禁止します。 - HTTP リクエスト スマグリング、HTTP レスポンス分割、HTTP ヘッダー インジェクションなどの HTTP 解析とプロキシに対する一般的な攻撃をブロックするには、
evaluatePreconfiguredExpr('protocolattack-stable')
ルールを使用して、プロトコル攻撃ルールセットを使用します。
Security Health Analytics
ユースケース:
- セキュリティ管理のモニタリングとアラート
数十のシグナルを単一のインターフェースを介してモニタリングし、アプリケーションがセキュリティのベスト プラクティスを維持していることを確認します。
Web Security Scanner
ユースケース:
- OWASP トップ 10 向けに調整されたウェブ アプリケーション スキャナ
- HTTP サーバー構成エラー
- HTTP / HTTPS コンテンツの混在
- XML 外部エンティティ(XXE)
Web Security Scanner は、コンテンツ タイプの不一致、無効なセキュリティ ヘッダー、混合コンテンツ配信などの一般的なセキュリティ エラーをモニタリングします。Web Security Scanner は XXE 脆弱性などの脆弱性もモニタリングします。これらのスキャンは、OWASP トップ 10 コントロールに対応するように設計されています。次の検出器は、セキュリティ構成のミスをスキャンします。
INVALID_CONTENT_TYPE
INVALID_HEADER
MISMATCHING_SECURITY_HEADER_VALUES
MISSPELLED_SECURITY_HEADER_NAME
MIXED_CONTENT
XXE_REFLECTED_FILE_LEAKAGE
これらの検出器とその他の検出器の詳細については、Web Security Scanner の概要をご覧ください。
A06: 脆弱で古いコンポーネント
既知の脆弱性のあるコンポーネントは、一般的な攻撃ベクトルのカテゴリの一つです。このような脆弱性は、すべてのアプリケーション コンポーネントをモニタリングし、すばやくアップグレードすることで緩和できます。
Binary Authorization
ユースケース:
- 信頼できるコンテナに GKE クラスタを制限する
Binary Authorization は、信頼できるコンテナ イメージのみが Google Kubernetes Engine(GKE)にデプロイされることを保証する、デプロイ時のセキュリティ制御です。Binary Authorization を使用すると、開発プロセス中に信頼できる機関によるイメージへの署名を必須にして、デプロイ時にその署名を検証できます。検証を適用することで、ビルドとリリースのプロセスで検証済みのイメージのみが使用されるようになります。
Cloud Load Balancing
ユースケース:
- SSL と TLS 暗号のきめ細かい制御
Cloud Load Balancing で使用できる事前定義されたグループまたは暗号のカスタムリストを割り当てることで、既知の脆弱な SSL または TLS 暗号の使用を防ぎます。
Container Threat Detection
ユースケース:
- 悪意のあるスクリプトの検出
- リバースシェル検出
- マルウェアのインストールの検出
攻撃者が脆弱なコンポーネントを悪用して悪意のあるスクリプトを実行した場合、Container Threat Detection の Malicious Script Executed
検出機能が検出結果を生成します。攻撃者がリバースシェルを生成した場合、Reverse Shell
検出機能が検出結果を生成します。攻撃者がマルウェアをインストールすると、Added Binary Executed
と Added Library Loaded
の検出機能が検出結果を生成します。
Event Threat Detection
ユースケース:
- クリプトマイニングの検出
- 不正なソフトウェアの検出
- データの引き出し
- 送信 DoS
Event Threat Detection では、Cloud Logging ストリームをモニタリングし、検出ロジックと脅威インテリジェンスをきめ細かいレベルで適用します。Event Threat Detection は脅威を検出すると、その検出結果を Security Command Center と Cloud Logging プロジェクトに書き込みます。次の検出ルールは、既知の脆弱性があるコンポーネントの使用の影響を検出するのに役立ちます。
- クリプトマイニング。DNS リクエストまたは既知のマイニング アドレスへの接続に基づいて、クリプトマイニングを検出します。
- マルウェア。マルウェアベースの DNS リクエストまたは既知の不正なアドレスへの接続を検出します。
- 外部テーブルへの漏洩。コピー オペレーションや転送オペレーションを含む、組織外に保存されているリソースを検出します。
- 送信 DoS。サービス拒否攻撃を試みるために悪用されている脆弱性を検出します。
Google Cloud Armor
ユースケース:
- 未使用のアプリケーション エンドポイントへのアクセスをブロックする
- 一般的な攻撃ベクトルをブロックする
Google Cloud Armor のようなウェブ アプリケーション ファイアウォール(WAF)は、攻撃がライブラリ固有で、事前構成済みのルールによってブロックできるか、サーバー側でパッチが適用できないことがよくあるため、このカテゴリの攻撃をブロックする単一の軽減策としては使用しないでください。アプリケーションのすべてのコンポーネントを定期的にモニタリングしてアップグレードすることが、この種の脆弱性を軽減するための唯一の選択肢です。
ただし、Google Cloud Armor では、リモートコード実行、ローカル ファイル インクルード、リモート ファイル インクルードの事前構成済みルールによって、脆弱性のあるアプリケーションに対する一般的な攻撃を軽減できます。
アプリケーション内の脆弱なコンポーネントを認識しているものの、直ちにアプリケーションにパッチを適用できない場合は、アプリケーションのこれらの部分へのアクセスをブロックして、コンポーネントが悪用されるリスクを一時的に低減できます。このような脆弱性のあるコンポーネントにアクセスし、アクセスを拒否する URL パスまたはクエリに一致するカスタムルールを作成します。特定のユーザーまたはロケーションからこれらのコンポーネントにアクセスする必要がある場合でも、特定の信頼できる送信元 IP アドレスにこれらのコンポーネントへのアクセスを許可できます。URL パスを使用するルールは、次のようになります。
`request.path.contains("/component") && !(inIpRange(origin.ip, '1.2.3.4/32')
以下を置き換えます。
/component
: 既知の脆弱性があるコンポーネントのパス1.2.3.4/32
: インターフェースへのアクセスを維持する IP アドレス範囲
アプリケーションの一部にエンドユーザーがアクセスする必要がない特定のディレクトリやファイル形式などがある場合は、ブロックまたはブロックすることも、カスタムルールを使用してこれらのリソースへのアクセスを制限することもできます。これらのコンポーネントが将来脆弱になった場合に、プロアクティブにリスクを軽減します。
Google Cloud のセキュリティに関する公開情報
ユースケース:
- セキュリティに関する公開情報のモニタリング
- Google Cloud プロダクトに関する CVE
Google Cloud のセキュリティに関する公開情報は、Google Cloud に影響するセキュリティに関する公開情報の信頼できるソースです。投稿には、背景情報、CVE へのリンク、今後の対応に関する推奨事項が含まれます。
Web Security Scanner
ユースケース:
- 古いライブラリ
- 脆弱性と検出結果のダッシュボード
ウェブ アプリケーションに含まれる古いライブラリをモニタリングします。これらの検出結果を Security Command Center ダッシュボードでモニタリングします。
A07: 識別と認証の失敗
識別と認証の失敗は、アプリケーション認証とセッション管理が正しく実装されないことが多いため、一般的なリスクです。攻撃者が侵害されたパスワード、鍵、セッション トークンなどの実装上の欠陥を悪用して、一時的または永続的に他のユーザーの ID を引き継ぐ可能性があります。
アクセスの透明性
ユースケース:
- サービス プロバイダのモニタリング
- アクセスの理由
通常、外部のベンダーからハンズオン サポートを利用する場合は、一時的な認証情報を付与して共有する必要があります。これによって、認証情報が孤立または漏洩する可能性が生じます。Access Approval は、アカウントのサポートを担当する Google 社員からのアクセス リクエストを承認または拒否できる統合サービスです。各アクセス リクエストにはアクセスの妥当性が含まれているため、各アクセスの理由(サポート チケットへの参照など)を確認できます。
Apigee
ユースケース:
- 鍵の検証
- トークン検証
- OAuth ポリシー
Apigee は、VerifyApiKey、OAuth、JSON Web Token(JWT)ポリシーを提供し、これらはこのリスクに対する保護に役立ちます。
API キー検証は、API 用に構成可能なアプリベースのセキュリティの中で最も簡単な方法です。クライアント アプリケーションはリクエストと一緒に API キーを提供し、Apigee Edge は API プロキシに関連したポリシーにより、リクエストされたリソースに対して API キーが承認状態かどうかをチェックします。
OAuth 2.0 認可フレームワークは、サードパーティのアプリケーションによる HTTP サービスへの限定的なアクセスを可能にします。サードパーティ アプリケーションがアクセス権を取得する際は、リソース所有者と HTTP サービスの間の承認のためのやり取りをリソース所有者の代わりにオーケストレートして行う場合と、自らの権限においてアクセス権を取得する場合があります。
JSON ウェブトークン(JWT)は一般的に、接続されているアプリケーションの間でクレームやアサーションを共有するために使用されます。Apigee は、3 つのポリシーを使用して JWT サポートを提供します。
Event Threat Detection
ユースケース:
- ブルート フォース検出
- IAM の不正使用の検出
Event Threat Detection は、Cloud Logging ストリームをモニタリングし、検出ロジックと独自の脅威の分析情報をきめ細かいレベルで適用します。Event Threat Detection は脅威を検出すると、選択したプロジェクトの Security Command Center と Cloud Logging に検出結果を書き込みます。次のイベントタイプは、不完全な認証を識別するのに便利です。
- ブルート フォース SSH。ホスト上で成功した SSH のブルート フォースを検出します。
- 異常な権限付与。Google Cloud 組織外の Identity and Access Management(IAM)ユーザーに付与された権限を検出します。
Google Cloud Armor
ユースケース:
- 認証エンドポイントのアクセスを制限する
- 不正なトークンの使用を制限する
不完全な認証リスクに分類される脆弱性に対する攻撃は、アプリケーション レベルまたは他の制御によって最も効果的に軽減されます。ただし、Google Cloud Armor を使用すると、攻撃対象領域を制限したり、既知の攻撃ベクトルをブロックしたりできます。
たとえば、アプリケーションのユーザーベースが限られていて、それらのユーザーが既知の IP アドレスや国からアクセスする場合は、アプリケーションへのアクセスをそれらの IP アドレスや国からのユーザーに制限するセキュリティ ポリシーを作成できます。このポリシーにより、これらの領域の外にあるエンドポイントからの自動スキャンを軽減できます。
他のセキュリティ メカニズムが、パスワード、鍵、セッション トークンが不正使用されたことを検出した場合は、カスタムルールを使用して、クエリ文字列にこれらのパラメータを含むリクエストのアクセスをブロックできます。以前に定義したルールを更新するには、securityPolicy.patchRule
メソッドを使用します。HTTP ロード バランシング ログに対して異常検出メカニズムを使用すると、盗難された可能性のあるトークンを識別できる可能性があります。これらのログで一般的なパスワードをスキャンして、潜在的な攻撃者を検出することもできます。
セッション固定攻撃用に事前構成された ModSecurity ルールセットを使用すると、一般的なセッション固定攻撃をブロックできます。セキュリティ ポリシーに事前定義された evaluatePreconfiguredExpr('sessionfixation-stable')
ルールを追加することで、ルールセットを使用できます。
アプリケーションでクエリ文字列にパスワードの変更が含まれている場合、request.query
属性と一致するカスタムルールを使用して、一般的なパスワードの使用をブロックすることもできます。ただし、可能であれば、アプリケーションでそのようなチェックを実装することをおすすめします。
Identity-Aware Proxy(IAP)
ユースケース:
- 一元化されたアクセス制御
- クラウドやオンプレミスと連携
- HTTP 接続と TCP 接続を保護する
- コンテキストアウェア アクセス
IAP は HTTP(S) ロード バランシングと統合されるため、ID とコンテキストを使用して、アプリケーション全体に安全な認証と認可のウォールを形成できます。Identity Platform で外部ユーザーをプロビジョニングすることで、一般向けアプリケーションに対する不完全な認証を防止します(詳細は次のセクションをご覧ください)。
Identity-Aware Proxy で管理インターフェースを保護し、Identity and Access Management または Cloud Identity でプロビジョニングされたユーザーを認証することによって、管理インターフェースに対する不完全な認証を防ぐこともできます。ツールにアクセスしようとすると、認証の試行がログに記録され、認証されたユーザーがリクエストしたリソースにアクセスできるかどうかの認証チェックが行われます。
Identity Platform
ユースケース:
- サービスとしての認証
- 多要素認証
- エンタープライズ SLA
- 幅広いプロトコルのサポート
- Google アカウントの保護に関する情報
Identity Platform は、Google Cloud のお客様向けの Identity and Access Management(CIAM)プラットフォームです。Identity Platform は SDK と API を使用して、マルチプロトコル サポートするサービスとして安全な認証を提供します。多要素認証、サードパーティの認証サービスとの統合、監査可能なアクティビティ追跡も提供します。
reCAPTCHA
ユースケース:
- 自動ログイン試行
- コンテンツ スクレイピング
- クレデンシャル スタッフィング
- 不正取引
- アカウントの乗っ取り
- 偽のアカウント
- 資金洗浄
reCAPTCHA は、アクセス試行のリスクレベルをスコア付けすることで、bot やその他の形式の自動化および一括トラフィックに対して非常に効果的なフィルタリングを実現します。自動フィードバックでサイト固有のモデルを調整できます。reCAPTCHA はサイトに合わせて将来のスコアを調整します。
Security Health Analytics
ユースケース:
- MFA / 2FA の適用
- API キーの保護
- API キーのローテーションの適用
Security Command Center と使用すると、多要素認証のコンプライアンスと API キーの状況のモニタリングによって、不完全な認証を防止できるようになります。不審なリクエストを特定して、そのリクエストをブロックしたり、特別な処理を行うためにフラグを設定したりできます。
Titan セキュリティ キー
ユースケース:
- フィッシング耐性のある 2FA
- モバイルと PC の認証
Titan セキュリティ キーには、ユーザーの本人確認とログインページの URL の確認に公開鍵暗号が使用されています。ユーザーが巧みに誘導されてユーザー名とパスワードを入力したとしても、攻撃者がアカウントにアクセスすることはできません。
Web Security Scanner
ユースケース:
- セッション ID の漏洩
Web Security Scanner は、ウェブ アプリケーションをスキャンして、セッション ID 漏洩などの脆弱性を検出します。セッション ID 漏洩により、第三者がユーザーになりすますことや、ユーザーを一意に識別できます。
A08: ソフトウェアとデータの整合性の失敗
ソフトウェアとデータの整合性の失敗は、ソフトウェアの更新中、センシティブ データの処理中、CI / CD パイプラインのプロセス中に整合性チェックが行われなかった場合に発生します。
Artifact Registry
ユースケース:
- 信頼できる単一の場所でアーティファクトを一元化する
- バージョン管理、脆弱性スキャン、承認ワークフローを使用する
Artifact Registry は、組織がコンテナ イメージと言語パッケージ(Maven や NPM など)を 1 か所で管理できる場所になります。既存の開発ツールと統合でき、Artifact Analysis を使用してコンテナの脆弱性スキャンを実行できます。
Binary Authorization
ユースケース:
- 信頼できるコンテナのみをデプロイする
Binary Authorization はコンテナの整合性を検証して、信頼できるコンテナ イメージのみがデプロイされるようにします。証明書の有無に基づいてデプロイを許可または拒否するポリシーを作成できます。Binary Authorization はクラスタレベルでポリシーを適用するため、環境ごとに異なるポリシーを構成できます。この区別により、環境が本番環境に近づくにつれて構成証明の要件が段階的になります。
Cloud Asset Inventory
ユースケース:
検索サービス
アクセス アナライザ
データ漏洩の最も一般的なベクトルの 1 つは、孤立しているか未承認の IT インフラストラクチャです。Cloud Asset 時系列データを分析すると、保守されていないサーバーや、過剰に共有されているルールを持つバケットを特定できます。
リアルタイム通知を設定して、保護が不十分であるか、未承認のリソースに対する予期しないプロビジョニングについてアラートを発します。
Cloud Build
ユースケース:
コードの変更を確認する
テストを実行する
ビルドのデプロイを標準化する
Cloud Build では、ビルド構成を作成して、静的分析、統合テストなどの実行を含むビルドデプロイの手順を提供できます。
Google Cloud Armor
ユースケース:
- リモートコード実行をブロックする
ソフトウェアとデータの整合性に対する攻撃のほとんどがアプリケーションに固有のものであるため、これらの攻撃を軽減する方法としては、Google Cloud Armor といったウェブ アプリケーション ファイアウォール(WAF)など、ごく限られた方法しかありません。OWASP では、信頼できないソースからのシリアル化されたオブジェクトを受け入れないことが推奨されています。可能な場合は、次のような拒否ルールを使用して、これらのオブジェクトを受け入れるエンドポイントを信頼できる IP アドレスのセットに制限できます。
request.path.contains("/endpoint") && !(inIpRange(origin.ip, '1.2.3.4/32')
以下を置き換えます。
/endpoint
: シリアル化されたオブジェクトを受け入れるエンドポイントへのパス1.2.3.4/32
: インターフェースへのアクセスを維持する IP アドレス範囲
リモートコード実行(RCE)を使用するソフトウェアやデータの整合性に対する一般的な攻撃を軽減するには、RCE 攻撃に対して事前定義されたルールセットを使用します。evaluatePreconfiguredExpr('rce-stable')
ルールを使用して、UNIX シェルと Windows シェルに対する一般的な RCE 攻撃をブロックできます。
安全でないシリアル化解除の Juice Shop の課題で説明されている RCE 攻撃は、サーバー上の Node.js で関数と正規表現を実行します。この種の攻撃は、事前定義された RCE ルールセットと対応する OWASP Modsecurity ルールによってブロックされないため、サーバー側のパッチまたはカスタムルールを使用して軽減する必要があります。
VirusTotal
ユースケース:
- 信頼できないデータスキャン
VirusTotal API を使用すると、マルウェア用のファイルのアップロードやスキャンが可能になります。処理を行う前に、イメージ、ドキュメント、バイナリ、その他の信頼できないデータをスキャンして、特定のカテゴリの悪意のある入力を排除できます。
Web Security Scanner
ユースケース:
- 安全でない逆シリアル化
Web Security Scanner はウェブ アプリケーションをスキャンし脆弱性を検出します。たとえば、アプリケーションがリモート コマンド インジェクション攻撃に対して脆弱な Apache Struts バージョンを使用している場合、Web Security Scanner が STRUTS_INSECURE_DESERIALIZATION
の検出結果を生成します。
A09: セキュリティ ロギングとモニタリングの失敗
システムでインシデントを適切にロギング、モニタリング、管理しないと、攻撃者からデータとソフトウェアに対し、より深い攻撃を長期にわたって受ける可能性があります。
アクセスの透明性
ユースケース:
- サービス プロバイダによるアクセスのモニタリングと監査
- アクセスの理由
- リソースやアクセスの種類の特定
クラウド プロバイダによるアクセスを監査できなければ、それがオンプレミスからクラウドへの移行の妨げになりかねません。アクセスの透明性は、クラウド プロバイダのアクセスを検証できるようにすることで、お客様の監査コントロールをオンプレミスの状態に近づけます。関連するサポート チケットへの参照も含めて、アクセスの理由を記録できます。リソースとメソッドの識別名。どのリソースがアクセスされ、どのメソッドがどの管理者によって実行されたかを示します。Access Approval では、お客様のサービスのサポート任務にあたる Google 社員からのアクセス リクエストを確認した後、必要に応じてこれを承認または拒否できます。
Apigee
ユースケース:
- Apigee ログを SIEM にエクスポートする
- Apigee Monitoring UI を使用する
- モニタリングのベスト プラクティスに従う
Apigee には、ロギング、モニタリング、エラー処理、監査ロギングを行うためのいくつかの方法が用意されています。
- ロギング
- ログメッセージは、MessageLogging ポリシーを使用して、Splunk やその他の syslog エンドポイントに送信できます。
- API 分析データは、Analytics API を介して pull し、他のシステムとの間でインポートまたはエクスポートできます。
- Edge for Private Cloud では、MessageLogging ポリシーを使用してローカル ログファイルに書き込むことができます。実行中のコンポーネントごとのログファイルも利用できます。
- JavaScript ポリシーを使用して、ログメッセージを REST ロギング エンドポイントに同期的または非同期的に送信できます。
- モニタリング
- API Monitoring UI または API を使用し、API とバックエンドを定期的にモニタリングして、アラートをトリガーします。
- ヘルス モニタリングを使用して、ターゲット サーバーのバックエンドを定期的にモニタリングします。
- Apigee は、Edge for Private Cloud をモニタリングするための推奨事項を提供します。
- また、Apigee は、チームが API プログラムのモニタリングに活用可能なベスト プラクティスも提供します。
- エラー処理
- Apigee は、API プロキシ用の強力で汎用性の高い障害処理メカニズムを提供します。Java プログラムが例外をキャッチする方法と同様に、API プロキシは障害をキャッチして、クライアントに適切なレスポンスを返す方法を決定できます。
- Apigee のカスタム障害処理を使用すれば、エラーが発生したらいつでもメッセージログを記録する機能などを追加できます。
- 監査ログ
- Apigee プラットフォームは、API プロキシ、プロダクト、組織履歴に対する変更を追跡する監査ログを保持します。
- このログは、UI を介してまたは Management API を介して入手できます。
Google Security Operations
ユースケース:
- 脅威の検出
- 早期警告
セキュリティ チームは、Google Security Operations にセキュリティ テレメトリーを送信できるため、統一されたデータセットに強力な検出ルールを適用できます。
Sensitive Data Protection
ユースケース:
- センシティブ データの自動マスキング
ログストリーム内でコンプライアンスに影響を及ぼす情報を特定し、その情報をログにアーカイブする前に、適切にマスクまたは変換を行います。たとえば、エラー メッセージやコアダンプに、クレジット カード番号やマスクする必要のある個人情報などの機密情報が含まれている場合があります。
Cloud Key Management Service
ユースケース:
- 暗号鍵リクエスト イベント ロギング
- アクセスの理由
Key Access Justifications では、当該のリクエストと、そのリクエストの承認または拒否をロギングすることで、暗号鍵のすべてのリクエストを可視化できます。
Cloud Logging
ユースケース:
- ログ集計
- ログストレージ
- ログ検索
- ログの分析
Cloud Logging では、Google Cloud とアマゾン ウェブ サービス(AWS)からのロギングデータとイベントの保存、検索、分析、モニタリング、アラート発信を行えます。Cloud Logging を使用する場合は、150 個を超える一般的なアプリケーション コンポーネント、オンプレミス システム、ハイブリッド クラウド システムからロギングデータを収集するために使用できる BindPlane サービスにアクセスする必要があります。
Cloud Monitoring
ユースケース:
- ログ モニタリング
- イベント アラート
Cloud Monitoring を使用して、クラウドで実行されるアプリケーションのパフォーマンスや稼働時間、全般的な動作状況を確認できます。モニタリング ダッシュボード、イベント モニタリング、複数のチャネルを介したアラート機能を備えています。
Cloud Source Repositories
ユースケース:
- コード変更アトリビューション
- 監査ログにアクセスする
Cloud Source Repositories によって生成された Cloud Audit Logs で、リポジトリに対して行われた操作(日時など)に関する分析情報を取得します。
Error Reporting
ユースケース:
- Cloud Logging で社内アプリケーションのエラーをキャプチャする
- クラッシュしたコンピューティング インスタンスの外部でクラッシュ レポートを収集する
内部アプリケーション エラーは、セキュリティの問題、機能の不具合、またはセキュリティの回避の試行を示している可能性があります。Error Reporting は、運用中のクラウド サービスで発生したクラッシュを計数、分析、集計します。結果は一元化されたエラー管理インターフェースに表示され、並べ替えとフィルタリングを行えます。エラーの詳細情報(タイムチャート、発生回数、影響を受けたユーザー数、最初および最後の発生日時、消去された例外スタック トレースなど)は専用のビューに表示されます。新しいエラーが発生したときにメールアラートとモバイル アラートを受け取ることもできます。
Event Threat Detection
ユースケース:
- ブルート フォース
- クリプトマイニング
- IAM の不正使用
- マルウェア
- フィッシング
Event Threat Detection は、Cloud Logging ストリームをモニタリングし、検出ロジックと独自の脅威の分析情報をきめ細かいレベルで適用します。Event Threat Detection は、ログ内の注意すべきエントリを識別し、評価のために昇格します。Event Threat Detection は脅威を検出すると、その検出結果を Security Command Center と Cloud Logging プロジェクトに書き込みます。
Forseti Inventory
ユースケース:
- インベントリの変更のモニタリングとアラート
Forseti Inventory によって Google Cloud リソースのインベントリ スナップショットがデータベースに作成されるので、リソースの履歴レコードを維持できます。この情報により、Google Cloud 内のすべてのリソースを理解し、リソースを節約して、コストを削減し、セキュリティの脅威にさらされる可能性を最小限に抑えるための対策を取ることができます。必要に応じてインベントリを構成でき、リソース スナップショットの更新時にメール通知を送信できます。
Google Cloud Armor
ユースケース:
- セキュリティ ポリシー ロギング
- モニタリング ダッシュボード
- トラフィック異常のアラート
Google Cloud Armor リクエストログは外部アプリケーション ロードバランサ用 Cloud Logging の一部です。ロギング情報(どのセキュリティ ポリシー ルールがトラフィックに一致したかなど)にアクセスするには、セキュリティ ポリシーが適用されているすべてのバックエンド サービスでロギングを有効にします。プレビュー モードのルールを使用すると、その効果を適用することなく、ルールをテストし、結果をログに記録できます。
Google Cloud Armor には、セキュリティ ポリシーのモニタリング ダッシュボードも用意されており、いずれかのセキュリティ ポリシーによって、通過したトラフィックまたは拒否されたトラフィックの量の概要を確認できます。Google Cloud Armor は、許可されたトラフィックや拒否されたトラフィックの急増など、トラフィック異常に関する検出結果を Security Command Center で公開します。
Google Cloud Armor によって書き込まれる管理アクティビティ監査ログには、リソースの構成またはメタデータを変更する操作が記録されます。このサービスは、データアクセス監査ログに書き込むように構成することもできます。このログにはリソースの構成やメタデータを読み取る API 呼び出しや、ユーザー提供のリソースデータの作成、変更、読み取りを行うユーザー提供の API 呼び出しが含まれます。
Identity Platform
ユースケース:
- 管理アクティビティ監査ログ
- データアクセス監査ログ
- システム イベント監査ログ
- ポリシー拒否監査ログ
- 認証アクティビティ ログ
Identity Platform は Google Cloud のユーザー向け Identity and Access Management プラットフォームで、デフォルトで認証アクティビティを記録します。
管理アクティビティ、データアクセス、システム イベント、拒否された認証試行など、いくつかの強力な監査ログを有効にします。
Security Command Center
ユースケース:
- アラートのモニタリング
- 脅威の管理
- 脆弱性スキャン レポート
- コンプライアンス モニタリング
- アセットのモニタリング
- セキュリティ スキャンの検出
概要パネルには、組織の検出結果の合計数が重大度レベルごとに表示されます。脅威ダッシュボードを使用して、組織の Google Cloud リソースに存在する、有害である可能性があるイベントを確認します。Security Health Analytics の検出結果と推奨事項は、[脆弱性] タブで確認できます。
コンプライアンス ダッシュボードを使用すると、PCI-DSS、CIS Google Cloud Computing Foundations Benchmark などでの制御によるコンプライアンスを継続的にモニタリングできます。[アセット] ビューには、組織内のすべての Google Cloud リソース(アセットといいます)の詳細が表示されます。[アセット] タブでは、組織全体のアセットを表示できます。また、特定のプロジェクト内のアセットをアセットタイプまたは変更タイプでフィルタすることもできます。最後に、[検出結果] タブには、すべての組織アセットの詳細な検出結果インベントリが表示され、潜在的なセキュリティ リスクを確認できます。
A10: サーバー側のリクエスト フォージェリ(SSRF)
SSRF 攻撃は、攻撃者が脆弱性のあるサーバーに、サードパーティのサーバーや内部リソースへの悪意のあるリクエストのトリガーを強制する場合に発生します。SSRF の不具合は、ウェブ アプリケーションがユーザー指定の URL を検証せずにリモート リソースをフェッチする場合に発生します。
Apigee
ユースケース:
- LFI または RFI を使用して SSRF 攻撃をブロックする
Apigee には、XPath または JSONPath を使用してデータを抽出する XML パーサーと JSON パーサーが組み込まれています。悪意のある XML ペイロードから保護するための XMLThreatProtection ポリシーと、悪意のある JSON ペイロードから保護するための JSONThreatProtection ポリシーがあります。
Apigee の ExtractVariables ポリシーを使用すれば、リクエストまたはレスポンスからコンテンツを抽出して、そのコンテンツを変数に割り当てることができます。ヘッダー、URI パス、JSON ペイロード、XML ペイロード、フォーム パラメータ、クエリ パラメータなど、メッセージの任意の部分を抽出できます。このポリシーは、メッセージ コンテンツにテキスト パターンを適用し、一致するものを検出すると、指定したメッセージ コンテンツで変数を設定します。
Google Cloud Armor
ユースケース:
- LFI または RFI を使用して SSRF 攻撃をフィルタリングする
SSRF 攻撃は複雑で、形式が異なる可能性があるため、ウェブ アプリケーション ファイアウォールによる緩和策は限られています。XML パーサーまたは JSON パーサーにパッチを適用する、外部エンティティを無効化する、公開ウェブサーバー上での XML データ転送または JSON データ転送を最小限に抑えることで、攻撃をより適切に緩和できます。ただし、アプリケーションと攻撃の種類によっては、Google Cloud Armor を使用することで、データの引き出しやその他の影響から防御できます。
特に SSRF 攻撃から防御するルールは OWASP ModeSecurity のコアルール セットにありませんが、ローカル ファイル インクルード(LFI)ルールとリモート ファイル インクルード(RFI)ルールがこのような攻撃の一部に役立ちます。攻撃者がサーバー上のローカル ファイルを取得できないようにするには、Google Cloud Armor セキュリティ ポリシーで evaluatePreconfiguredExpr('lfi-stable')
ルールを使用します。
SSRF Juice Shop の課題の場合、事前構成されたリモート ファイル インクルード(RFI)またはローカル ファイル インクルード(LFI)のルールセットを使用すると、URL やパス トラバーサルのインクルードをブロックするため、このような攻撃の一部を軽減できる場合があります。たとえば、次のルールでは両方のルールセットを有効にします。
evaluatePreconfiguredExpr('lfi-stable') ||
evaluatePreconfiguredExpr('rfi-stable')
このようなルールを実装すると、SSRF の課題の解決策が機能しなくなります。
VPC Service Controls
ユースケース:
- サーバーをセグメント化するためのネットワーク境界
SSRF 攻撃の影響を軽減するには、VPC Service Controls を使用して、組織内の他のリソースからサーバーをセグメント化する境界を作成します。これらの境界により、データの引き出しを防止できます。自動適用モードで実行すると、境界で必要な上り(内向き)ルールと下り(外向き)ルールの条件が満たされない限り、制限付きサービスへの API リクエストは境界を越えません。
Virtual Private Cloud(VPC)ファイアウォール
ユースケース:
- 「デフォルトで拒否する」ファイアウォール ポリシーまたはネットワーク アクセス制御ルールを適用し、重要なイントラネット トラフィック以外のすべてをブロックします。
VPC ファイアウォールは、プロジェクトと VPC ネットワークの受信トラフィックと送信トラフィックに適用されます。許可するトラフィックを除くすべてのトラフィックをブロックするファイアウォール ルールを作成できます。詳細については、VPC ファイアウォール ルールの概要をご覧ください。
Web Security Scanner
ユースケース:
- ウェブ アプリケーションのモニタリング
Web Security Scanner はウェブ アプリケーションをスキャンし脆弱性を検出します。たとえば、アプリケーションがサーバー側のリクエスト フォージェリに対して脆弱な場合、Web Security Scanner は SERVER_SIDE_REQUEST_FORGERY
の検出結果を生成します。
次のステップ
- Google Cloud 上のウェブ アプリケーションと API 保護
- OWASP トップ 10
- Google Cloud のセキュリティに関する公開情報
- Google Cloud セキュリティ ベスト プラクティス センター
- コンプライアンス状況
- Google Cloud での CIS ベンチマーク
- Security Command Center
- Apigee
- Google Cloud Armor
- すべての Google Cloud セキュリティ プロダクト
- Google Cloud に関するリファレンス アーキテクチャ、図、ベスト プラクティスを確認する。Cloud アーキテクチャ センターをご覧ください。