標準 TLS は片側のみを認証します。クライアントはサーバー証明書を検証しますが、サーバーはクライアントを検証しません。相互 TLS (mTLS) はこのギャップを埋めます。両側が証明書を提示し、データ交換の前に相互に検証することで、各ホップで認証され、暗号化された通信を提供します。
Alibaba Cloud Service Mesh (ASM) は、ご利用のアプリケーションコードを変更することなく、Kubernetes 環境における 3 つのトラフィックステージ (Ingress、East-West、Egress) すべてで、インフラストラクチャ層に mTLS を実装します。サイドカープロキシは証明書交換と暗号化を透過的に処理し、ASM は完全な証明書ライフサイクルを自動的に管理します。
ASM による mTLS の実装
Kubernetes クラスター内のエンドツーエンドのトラフィックは、3 つのステージを通過します。ASM はそれぞれを mTLS で保護します。
| ステージ | トラフィックパス | ASM が mTLS を適用する方法 |
|---|---|---|
| Ingress | 外部クライアント -> クラスター内のサービス | ASM Ingress Gateway を介して |
| East-West | ワークロード <-> クラスター内のワークロード | サイドカープロキシを介して自動的に |
| Egress | クラスター内のワークロード -> 外部サービス | ASM Egress Gateway を介して |
証明書プロビジョニングワークフロー
ワークロードが起動すると、ASM は次のフローで ID 証明書を自動的にプロビジョニングします。
Pod 内のサイドカープロキシは、ASM コントロールプレーンに証明書署名要求 (CSR) を送信します。
ASM コントロールプレーンはリクエストを検証し、Pod の
ServiceAccountID にバインドされた証明書を発行します。サイドカーがインジェクトされた 2 つの Pod が通信する場合、それらのプロキシは相互 TLS ハンドシェイクを実行し、データ交換の前に相互の ID を検証します。
ASM コントロールプレーンは、手動介入なしでこれらの証明書を定期的にローテーションします。
ASM Ingress Gateway と Egress Gateway も ASM コントロールプレーンに接続するため、ゲートウェイとサイドカープロキシ間のトラフィックも mTLS で暗号化されます。
メリット
| メリット | 説明 |
|---|---|
| ビジネスロジックへの集中 | アプリケーションはビジネスロジックに集中し、セキュリティ機能をサービスメッシュインフラストラクチャに委譲することで、ビジネスの反復を加速できます。 |
| アプリケーションの変更なし | サイドカープロキシは証明書交換と暗号化を透過的に処理します。アプリケーションコードを変更することなく、既存のサービスを ASM に移行できます。 |
| 自動証明書管理 | ASM は各ワークロードの ServiceAccount に基づいて証明書を発行し、自動的にローテーションします。手動での証明書プロビジョニングや更新は不要です。 |
| 詳細なアクセスの制御 | mTLS が提供する ID 証明書は、認可ポリシーを推進し、どのサービスが通信できるかについて詳細な制御を可能にします。 |
Ingress トラフィックの暗号化
外部クライアントは、ASM Ingress Gateway を介してクラスターサービスに到達します。Ingress レイヤーで mTLS を要求するには、ゲートウェイがサーバー証明書を提示し、バックエンドサービスにトラフィックを転送する前にクライアント証明書を検証するように構成します。
詳細な手順については、「ASM Ingress Gateway での mTLS サービスの構成と特定のクライアントアクセス制限」をご参照ください。
East-West トラフィックの暗号化
East-West mTLS は ASM の組み込み機能です。通信する両方のワークロードにサイドカープロキシがインジェクトされると、それらの間のすべてのトラフィックは自動的に mTLS にアップグレードされ、追加の構成は不要です。
ワークロードにサイドカープロキシをインジェクトするには、「サイドカープロキシのインストール」をご参照ください。
PERMISSIVE モードから STRICT モードへの移行
移行中、すべてのワークロードに同時にサイドカープロキシがインジェクトされるとは限りません。ASM は段階的なロールアウトのために 2 つのピア認証モードを提供します。
| モード | 動作 | 使用時期 |
|---|---|---|
PERMISSIVE | プレーンテキストトラフィックと mTLS トラフィックの両方を受け入れます | 移行中、一部のワークロードにまだサイドカープロキシがない場合 |
STRICT | mTLS トラフィックのみを受け入れます | すべてのワークロードにサイドカープロキシがインジェクトされた後 |
推奨される移行パス:
既存のプレーンテキスト接続を中断しないように、
PERMISSIVEモードから開始します。すべてのワークロードにサイドカープロキシをインジェクトします。手順については、「サイドカープロキシのインストール」をご参照ください。
すべてのワークロードがメッシュ化されており、サービス間トラフィックが mTLS を使用していることを確認します。
クラスター全体で完全な暗号化を強制するために、
STRICTモードに切り替えます。
STRICT モードに切り替えた後、サイドカープロキシのないワークロードはメッシュ化されたサービスへの接続を失います。切り替える前に、すべてのワークロードがメッシュ化されていることを確認してください。
Egress トラフィックの暗号化
クラスター内のワークロードが mTLS を必要とする外部サービスに到達する必要がある場合でも、アプリケーションはプレーンテキストリクエストを送信できます。ASM Egress Gateway はこれらのリクエストをインターセプトし、mTLS にアップグレードして、外部サービスに転送します。これにより、mTLS の複雑さがアプリケーションコードから排除されます。
構成の詳細については、「ASM Egress Gateway を使用した外部 mTLS サービスへのアクセス」をご参照ください。
適用範囲
mTLS はデフォルトですべてのトラフィックに適用されるわけではありません。次のシナリオは対象外です。
| シナリオ | 理由 | 軽減策 |
|---|---|---|
| サイドカープロキシのない Pod との間のトラフィック | mTLS は両側にサイドカープロキシが必要です | すべてのワークロードにサイドカープロキシをインジェクトします |