5.7.10.2. セキュリティー保護されたルート
セキュリティー保護されたルートは、ルートの TLS 終端を指定し、オプションで鍵と証明書を提供します。
OpenShift Container Platform の TLS 終端は、カスタム証明書を提供する SNI に依存します。ポート 443 で受信する SNI 以外のトラフィックは、TLS 終端およびデフォルトの証明書で処理されます (要求のホスト名と一致せず、バリデーションエラーが発生する可能性があります)。
セキュリティー保護されたルートは、以下の 3 種類のセキュアな TLS 終端を使用できます。
Edge Termination
edge termination では、TLS 終端は、宛先にトラフィックをプロキシー化する前にルーターで発生します。TLS 証明書はルーターのフロントエンドで提供されるので、ルートに設定する必要があります。 設定されていない場合には、ルーターのデフォルトの証明書が TLS 終端に使用されます。
Edge Termination を使用したセキュリティー保護されたルート
apiVersion: v1 kind: Route metadata: name: route-edge-secured 1 spec: host: www.example.com to: kind: Service name: service-name 2 tls: termination: edge 3 key: |- 4 -----BEGIN PRIVATE KEY----- [...] -----END PRIVATE KEY----- certificate: |- 5 -----BEGIN CERTIFICATE----- [...] -----END CERTIFICATE----- caCertificate: |- 6 -----BEGIN CERTIFICATE----- [...] -----END CERTIFICATE-----
TLS がルーターで終端されるので、内部ネットワークを使用したルーターからエンドポイントへの接続は暗号化されません。
Edge termination ルートは insecureEdgeTerminationPolicy
を指定して、セキュアでないスキーム (HTTP
) 上にあるトラフィックを無効化、許可、リダイレクトすることができます。insecureEdgeTerminationPolicy
で使用できる値は None
または空 (無効化する場合)、Allow
または Redirect
です。デフォルトの insecureEdgeTerminationPolicy
は、セキュアでないスキーム上のトラフィックを無効にします。一般的なユースケースは、セキュアなスキームを使用してコンテンツを、セキュアでないスキームを使用してアセット (例のイメージ、スタイルシート、javascript) を提供できるようにします。
Edge Termination を使用したセキュリティー保護されたルートでの HTTP トラフィックの許可
apiVersion: v1 kind: Route metadata: name: route-edge-secured-allow-insecure 1 spec: host: www.example.com to: kind: Service name: service-name 2 tls: termination: edge 3 insecureEdgeTerminationPolicy: Allow 4 [ ... ]
Edge Termination を使用したセキュリティー保護されたルートでの HTTP トラフィックのリダイレクト
apiVersion: v1 kind: Route metadata: name: route-edge-secured-redirect-insecure 1 spec: host: www.example.com to: kind: Service name: service-name 2 tls: termination: edge 3 insecureEdgeTerminationPolicy: Redirect 4 [ ... ]
パススルーの停止
passthrough termination では、暗号化されたトラフィックが TLS 終端を提供するルーターなしに宛先に直接送信されます。そのため、鍵や証明書は必要ありません。
passthrough termination を使用したセキュリティー保護されたルート
apiVersion: v1 kind: Route metadata: name: route-passthrough-secured 1 spec: host: www.example.com to: kind: Service name: service-name 2 tls: termination: passthrough 3
宛先 Pod は、エンドポイントでトラフィックに証明書を提供します。これは、必須となるクライアント証明書をサポートするための唯一の方法です (相互認証とも呼ばれる)。
Passthrough ルートには insecureEdgeTerminationPolicy
を指定できます。唯一有効な値は None
(無効化する場合は空) または Redirect
です。
Re-encryption の停止
Re-encryption は、edge termination の一種で、ルーターが証明書を使用して TLS を終端し、異なる証明書が設定されている可能性のあるエンドポイントへの接続を再暗号化します。そのため、内部ネットワーなどを含め、接続の全パスが暗号化されています。ルーターは、ヘルスチェックを使用して、ホストの信頼性を判断します。
Re-Encrypt の停止を使用したセキュリティー保護されたルート
apiVersion: v1 kind: Route metadata: name: route-pt-secured 1 spec: host: www.example.com to: kind: Service name: service-name 2 tls: termination: reencrypt 3 key: [as in edge termination] certificate: [as in edge termination] caCertificate: [as in edge termination] destinationCACertificate: |- 4 -----BEGIN CERTIFICATE----- [...] -----END CERTIFICATE-----
destinationCACertificate
フィールドが空の場合は、ルーターは自動的に証明書を提供するサービス用に生成される認証局を自動的に活用し、すべての Pod に /var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt
として注入します。これにより、ルートの証明書を生成する必要なしに、新しいルートがエンドツーエンドの暗号化を活用できるようになります。これは、管理者が許可しない限り、destinationCACertificate
が使用できない、カスタムのルーターまたは F5 ルーターの場合に有用です。
Re-encrypt ルートでは insecureEdgeTerminationPolicy
に、edge termination ルートと同じ値にすべて指定することができます。