自己管理 Flex Gateway のセキュリティのベストプラクティス

このページでは、Flex Gateway ランタイムデプロイメントでの業界標準への準拠を確保するためのベストプラクティスを提供します。

Flex Gateway デプロイメントはランタイムとコントロールプレーンで構成されます。設定データやログなどの情報は、mTLS 通信を介してコントロールプレーンの Anypoint Platform とランタイムプレーンの Flex Gateway 間で共有されます。ランタイムレイヤーでは、Flex Gateway によって受信トラフィックがオーケストレーションされ、アップストリームまたは API が保護されます。Flex Gateway は、YAML 登録ファイルを使用して Anypoint Platform に登録されます。Flex Gateway では Redis 共有ストレージを使用して他の Flex レプリカと通信するためのデータをキャッシュし、要求データをキャッシュします。次の図は、Flex Gateway デプロイメントを示しています。

security best practices

このページのガイドラインはすべての Flex Gateway ランタイム環境に適用されますが、図は Kubernetes 用にのみ提供されています。

Anypoint Platform での Flex Gateway の保護

Anypoint Platform の Flex Gateway には必ず最小権限の原理を適用してください。Flex Gateway へのアクセス権を持つユーザーは Flex Gateway の設定の詳細やログを参照できます。ランタイムを保守するユーザーのみに Flex Gateway へのアクセス権を制限するには、ユーザーとチームの権限を使用します。ゲートウェイ設定をデプロイまたは管理するユーザー以外には参照のみアクセス権を付与してください。

アクセス権を管理する方法については、アクセス管理についてを参照してください。

Flex Gateway 登録リソースの保護

Flex Gateway では登録情報をローカルに保存します。この登録リソースには、Flex レプリカが Anypoint Platform と通信して自己認証するために使用する証明書が含まれます。Flex Gateway は mTLS を介して Anypoint Platform と通信します。

レプリカの未認証実行を防止するには、登録リソースへのアクセスを制限します。具体的には次の情報が保存されます。

  • 必ず保管時のシークレットを暗号化し、登録リソースシークレットには最小権限を適用してください。

  • ログイン情報や API キーなどの機密データは、AWS Secrets Manager、Azure Key Vault、HashiCorp Vault などのセキュアな Vault に保存してください。

  • シークレットのハードコードは避け、環境変数は機密でない設定のみに使用してください。

  • 設定ファイルの機密情報は暗号化してください。

Kubernetes デプロイメントのベストプラクティスについては、 「Good practices for Kubernetes Secrets (Kubernetes シークレットのグッドプラクティス)」​を参照してください。

Flex 証明書の更新

Anypoint Flex Gateway では、管理された PKI 証明書を使用して Anypoint Platform と通信します。この証明書は、Flex Gateway を登録するときに生成されます。有効期限より前に証明書を更新して、ランタイムがコントロールプレーンに接続できるようにしてください。

登録を更新する方法については、自己管理 Flex Gateway の登録の更新を参照してください。

Flex Gateway の更新

MuleSoft では、Flex Gateway のセキュリティ更新を定期的に提供します。脆弱性を解決できるように、Flex Gateway を常に最新バージョンに更新してください。非互換性のリスクを低減するには、安全な変更プロセスに従って本番より先に Sandbox ランタイムをアップグレードしてください。

Flex Gateway の更新方法についての詳細は、自己管理 Flex Gateway のアップグレードを参照してください。

ペイロードデータの記録の回避

ランタイムログは lex Gateway ポッドの ​stdout​ を介して使用でき、接続モードでは Anypoint コントロールプレーンにあります。

ランタイムログが侵害されてクライアント情報が漏洩しないように、ペイロードデータをランタイムログに記録することは避けてください。

他のサードパーティ監視および分析プラットフォームを使用している場合は、アクセスレビューにかけることを検討してください。

Flex Gateway サービスポッドの保護

権限を持たない人が Flex Gateway 設定データにアクセスしたりランタイムを改ざんしたりできないようにするには、Flex Gateway ランタイムポッドへのアクセスを制限します。

Kubernetes デプロイメントでは、Kubernetes ロールベースのアクセス制御 (RBAC) を使用してポッドでのコマンド実行へのアクセスを制限します。詳細は、 「Using RBAC Authorization (RBAC 認証の使用)」​を参照してください。

Kubernetes 以外のデプロイメントでは、セッションを開くための Flex Gateway 仮想マシンへのアクセスを制限します。

Redis 共有ストレージの保護

Flex Gateway では接続モードでのみ Redis 共有ストレージを使用して要求データやランタイム設定をキャッシュします。未認証ユーザーであっても Flex 設定や要求処理キャッシュなどのキャッシュされた設定データを取得し、ランタイムを中断できます。不正なアクセスを防止するには、Redis サービスを保護する必要があります。

Redis 共有ストレージを保護するには、 「Redis Recommended security practices (Redis 推奨セキュリティプラクティス)」​を参照してください。アクセス制限を有効にして、Flex Gateway 以外のソースからの Redis アクセスを制限します。脆弱性をさらに制限できるように、Redis は Flex Gateway デプロイメントとできるだけ近い場所にデプロイしてください。

受信トラフィック (API コンシューマーから Flex Gateway) のフローの保護

受信トラフィックのフローを外部からの攻撃から保護する方法は、受信トラフィックのソースに応じて異なります。

公開インターネットから受信する要求の場合、トラフィックが Flex Gateway に到達する前に捕捉できるように最初の防衛線システムを設定します。Flex Gateway では API レベルの保護が提供されますが、最初の防衛線に関しては他の一般的な保護に依存します。次の保護があることを確認してください。

  • ACL や DNS ファイアウォールなどのネットワークレベルの保護。通常のクラウドプロバイダーやサードパーティではこれらの保護を提供しています。

  • DDoS 攻撃や Web アプリケーションファイアウォールに対する脅威保護などの第一線のアプリケーションレベルの保護。

エントリポイントでの外部 TLS の終了

ファイアウォールで L7 トラフィックセキュリティインスペクションを実行できるようにするには、ファイアウォールレベルで外部 TLS 接続を終了します。コンシューマーによって認識される有効な証明機関 (CA) では通常、このエントリポイントの証明書を提供しています。

ファイアウォール、Flex Gateway、インフラストラクチャのその他のサービス間の内部通信に個別の証明書のセットを使用します。この通信では、内部機関または PKI が発行する両方の証明書で mTLS セキュリティを使用します。

インターネットに公開される証明書は内部では使用されず、内部で使用される証明書はインターネットには公開されません。内部と外部の証明書を分離することで、内部証明書が漏洩するリスクを防止します。

Flex Gateway はランタイム環境イングレスレイヤーと内部環境レイヤーの両方で使用できます。イングレスレイヤーの Flex Gateway の場合、ゲートウェイのスコープを TLS の終了、ルーティング、およびその他の基本的な保護に制限します。より多くの CPU およびメモリの負荷が大きい操作を内部 Flex Gateway にプッシュします。

ポリシーを使用した API の保護

ポリシーを適用して API の保護を強化します。Flex Gateway では​内部ポリシー​が提供されており、Flex Gateway Policy Development Kit (PDK) Overviewを使用してカスタムポリシーを開発できます。

API Governance を使用した API の管理

Anypoint API Governance​ を使用して、MuleSoft、業種、組織のベストプラクティスに従って API を設計してデプロイできるようにします。

アップストリームサービス (Flex Gateway から API プロバイダー) の保護

Flex からアップストリームへのトラフィックのフローを保護する方法は、アップストリームサービスの場所に応じて異なります。

Flex Gateway がローカルで使用可能なサービスの保護

Flex Gateway と同じネットワークを共有するサービスでは、通常、セキュリティ制限が緩くなっています。

組織はプレーンまたは TLS 接続が適切であるかどうかを定義する必要があります。TLS を使用している場合は、Flex Gateway アウトバウンド TLS コンテキストを介して mTLS を設定します。TLS の設定についての詳細は、以下を参照してください。

同じネットワークの他のサービスからアップストリームサービスを保護するには、Flex Gateway からトラフィックを受け入れるようにアップストリームサービスを設定します。Kubernetes の場合は、ネットワークポリシーを使用してこれを設定します。

外部サービスの保護

同じネットワークにない外部サービスを保護する場合は、mTLS 通信を使用してサービスを接続します。ネットワーク間で非公開 VPC などの信頼済みネットワークリンクを設定し、Flex Gateway がサービスを公開インターネットに公開せずに安全にアップストリームサービスにアクセスできるようにします。

定期的なテストの実行

定期的な侵入および脆弱性テストを実行し、Flex Gateway デプロイメントや公開される API の新たな問題や再発した問題を特定してください。テストの際には、セキュリティに関する次の側面を考慮してください。

  • Runtime Manager の Flex 登録、Anypoint Monitoring のログ、API Manager の API にアクセスできるようにする Anypoint Platform のユーザーアクセス制御。

  • 機能やデータに影響するデプロイ済みの Flex Gateway へのアクセス。

  • Flex ランタイム画使用する設定ファイル、特に登録ファイルへのアクセス。

  • Redis 共有ストレージサービスへのアクセス。

  • Flex Gateway でデプロイされる API へのアクセス。

  • Flex Gateway API によって保護されるアップストリームサービスへのアクセス。