マイクロサービスアーキテクチャは、ネットワーク上のリクエストが増えることと、悪意のある当事者がトラフィックを傍受する機会が増えることを意味します。相互TLS(mTLS)認証は、証明書を使用してサービストラフィックを暗号化する方法です。
Istioを使用すると、すべてのサービスにわたるmTLSの適用を自動化できます。以下では、メッシュ全体に対してmTLSを有効にします。クラスター内の2つのPod( クライアント と サーバー )は、mTLSポリシーを使用してセキュアな接続を確立しているところを示しています。
apiVersion: authentication.istio.io/v1alpha1
kind: MeshPolicy
metadata:
  name: default
spec:
  peers:
  - mtls:
      mode: STRICT
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: default
  namespace: istio-system
spec:
  host: "*.local"
  trafficPolicy:
    tls:
      mode: ISTIO_MUTUAL
ここでは、MeshPolicy はリクエストを受信するすべてのサービス(サーバー側)にTLSを適用し、DestinationRule はリクエストを送信するすべてのサービス(クライアント側)にTLSを適用し、相互(「両方」)のTLSを作成します。
認証フロー:
クライアントアプリケーションコンテナーはプレーンテキストのHTTPリクエストをサーバーに送信します。クライアントプロキシコンテナーが外向けのリクエストを傍受します。クライアントプロキシは、サーバー側プロキシとTLSハンドシェイクを実行します。このハンドシェイクには、証明書の交換が含まれます。これらの証明書は、Istioによってプロキシコンテナーにプリロードされます。クライアントプロキシは、サーバーの証明書に対してセキュアな名前付けチェックを実行し、承認されたIDがサーバーを実行していることを確認します。クライアントとサーバーは相互TLS接続を確立し、サーバープロキシはリクエストをサーバーアプリケーションコンテナーに転送します。
詳しく学ぶ:
