Cloud Run for Anthos は、Istio for Ingress を利用しています。そのため、ニーズに合うように Istio をカスタマイズして構成できます。これは、Cloud Run for Anthos が、Istio の既知の問題や脆弱性の影響を受けることも意味します。
このページは、既知のベスト プラクティスを使用して Cloud Run for Anthos を構成し、あらゆる既知の問題に対処できるようにすることで、リソースを誤って脆弱性にさらすことを回避するために作成されました。
他のベスト プラクティス ガイドとリソースは、次のとおりです。
既知の脆弱性
AuthorizationPolicies
でのパスの構成
セキュリティ脆弱性
説明
Istio の AuthorizationPolicies は、Cloud Run for Anthos サービスへのパスを使うアクセス制御に使用できます。CVE-2021-31920 により、パスベースのアクセス制御を構成すると、パスかく乱攻撃に対して脆弱になる可能性があります。
たとえば、yourservice.com/admin
にあるサービスで、パス /admin
へのリクエストを許可するように構成されているとします。//admin
へのアクセスを明示的に拒否しなければ、AuthorizationPolicy
のパスの脆弱性により、不正な形式の //admin
パスを使用するリクエストを阻止できません。サービスがそうしたパスの違いを区別しない可能性があり、不正な形式のパスへのリクエストによる意図しないアクセスが許可されます。
背景:
Cloud Run for Anthos で使用されるデフォルトの Istio Ingress ゲートウェイは、Envoy プロキシで RFC 3986に続く normalize_path
オプションを使用して、デフォルトの URL パターンを正規化します。
残念ながら、いくつかの既知のリクエスト URL パターンの中には、デフォルト URL パターン正規化標準によって正規化されていないものがあります。この脆弱性を緩和する方法については、次のセクションをご覧ください。
対策:
現在、パス混乱攻撃に対する脆弱性を防ぐために実装できる方法が 2 つあります。
推奨オプション: デフォルトですべてのアクセスを拒否する
AuthorizationPolicy
ポリシーでは、default-deny パターンを使用するように Istio を構成します。全体的には、これによってクラスタのセキュリティに対する構えが改善されます。default-deny の認可パターンを構成すると、サービスへのすべてのリクエストはデフォルトで拒否され、リクエストがアクセスを許可されるすべての条件を明示的に定義できます。このパターンを使用すると、特定の条件の許可を間違えた場合に、特定のリクエストが予期せず拒否される可能性があります。その結果、ユーザー エクスペリエンスの低下、サービスの停止、SLO や SLA の不履行の原因となる可能性があります。通常、すべてのアクセスを明示的に定義することに対する代償は、意図しないアクセスによるセキュリティ インシデントよりも優先されます。
例:
ターゲットの名前空間で
allow-nothing
ポリシーを定義することによって、default-deny パターンを使用するAuthorizationPolicy
を作成します。たとえば、default
名前空間内のすべてのサービスに対するトラフィックをすべて拒否するには、次のものを作成します。apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: name: allow-nothing namespace: default spec: {}
AuthorizationPolicy
タイプポリシーの定義については、HTTP トラフィックに対する Istio 認可をご覧ください。別の方法: 問題のある URL バリエーションをすべてサービスに明示的に拒否する
default-deny パターンの実装を回避するには、バックエンド サービスが問題のあるパスをすべて拒否できるようにする必要があります。言語、フレームワーク、およびサービスの実装方法の他の要因に応じて、Istio Ingress ゲートウェイが正規化しないすべての URL パスを明示的に拒否する必要があります。これには以下が含まれます。
- 複数のスラッシュまたはバックスラッシュ:
//
、\\
- スラッシュまたはバックスラッシュのエスケープ シーケンス:
%2F
、%2f
、%5C
、%5c
- 複数のスラッシュまたはバックスラッシュ: