Transport Layer Security ポリシー - アウトバウンド

ポリシー名

Transport Layer Security (TLS) - アウトバウンド

概要

API プロキシとアップストリームサービス間の双方向認証を有効にする

カテゴリ

セキュリティ

使用可能な最小 Flex バージョン

v1.4.0

返される状況コード

このポリシーの戻りコードは存在しません。

次のドキュメントは、ローカルモードで実行されている Flex Gateway にのみ適用されます。接続モードで TLS を設定するには、「接続モードでの Flex Gateway の TLS コンテキストの設定」を参照してください。

概要

Flex Gateway では、ローカルモードでアウトバウンド TLS (Transport Layer Security) とアウトバウンド相互認証 TLS (mTLS) がサポートされます。

ローカルモードでアウトバウンド TLS を適用するには、​「ローカルモードでの Flex Gateway の TLS コンテキストの設定」​チュートリアルを使用して、このドキュメントの次の設定ファイルを参照してください。

アウトバウンド TLS コンテキストを設定して API インスタンスとアップストリームサービス間の認証を有効にするには、TLS ポリシーをアップストリームサービスにバインドすることができます。

インバウンド TLS とは異なり、API アップストリームサービスは異なるプロバイダーから提供される可能性があるため、Flex Gateway のすべての API インスタンスに同じアウトバウンド TLS コンテキストを適用することはお勧めできません。そのため、すべてのインスタンスでのアウトバウンド TLS の設定例は提供されていません。

ポート共有はアウトバウンド TLS では懸念になりません。アップストリームサービスごとにアウトバウンド TLS コンテキストを適用できます。

TLS ポリシーでは、ポリシー順序はサポートされません。

アップストリーム証明書にはサブジェクト代替名 (SAN) 拡張機能を含める必要があります。共通名 (CN) 項目は非推奨です。

Flex Gateway では、​dNSName​ 種別の SAN 拡張機能がサポートされます。

アウトバウンド TLS コンテキストを設定する際には、Authority Information Access (AIA) 証明書拡張機能はサポートされません。

ポリシーのパラメーターの設定

Flex Gateway をランタイムとして使用して API インスタンスとアップストリームサービス間のアウトバウンド TLS を有効にするには、YAML 設定ファイルで TLS コンテキストを手動で設定する必要があります。

以下のポリシー定義とパラメーターの表を参照してください。

- policyRef:
    name: tls-outbound
  config:
    skipValidation: <boolean> // REQUIRED
    certificate: // OPTIONAL
        key: <string> // OPTIONAL
        crt: <string> // OPTIONAL
    alpn: <array> // OPTIONAL
    minversion: <string> // OPTIONAL
    maxversion: <string> // OPTIONAL
    ciphers: <array> // OPTIONAL

省略可能なパラメーターを設定ファイルに含めない場合、パラメーターのデフォルト値が TLS コンテキストに適用されます。

ciphers​ パラメーターを設定する場合、リストされている暗号化が API アップストリームでサポートされることを確認してください。サポートされる暗号化については、​「Flex Gateway での TLS 暗号化のサポート」​を参照してください。

パラメーター 必須または省略可能 デフォルト値 説明

skipValidation

必須

false

検証をスキップすると、アウトバウンド mTLS が無効になります

trustedCA

省略可能 (​skipValidation​ が false でない場合)

なし

mTLS で使用するクライアント証明書

certificate

省略可能

なし

TLS 証明書とキーのペア。セキュリティ標準に準拠するには、すべての証明書が 2048 ビット以上である必要があります。

certificate.key

省略可能

なし

証明書の非公開キー部分

certificate.crt

省略可能

なし

証明書の公開キー部分

alpn

省略可能

h2​ および ​http/1.1

サポートされているアプリケーションレベルプロトコルの優先リスト (h2、http/1.1 など)。

minversion

省略可能

1.2

許容される最小 TLS バージョン

maxversion

省略可能

1.3

許容される最大 TLS バージョン

ciphers

省略可能

デフォルトおよび他のサポートされる暗号化については、​「Flex Gateway での TLS 暗号化のサポート」​を参照してください。

サポートされる TLS 暗号化のリスト (IANA 形式)。

リソースの設定例

YAML ファイルを書式設定して、アップストリームサービス用に TLS または mTLS を設定できます。

特定のアップストリームサービスのアウトバウンド TLS コンテキストを追加するためのサンプル設定:

apiVersion: gateway.mulesoft.com/v1alpha1
kind: PolicyBinding
metadata:
  name: tls-outbound
spec:
  targetRef:
    kind: Service
    name: ingress-test-outbound-upstream
  policyRef:
    name: tls-outbound
  config:
    skipValidation: true
    certificate:
      key: |
        # -----BEGIN PRIVATE KEY-----
        # insert certificate key
        # -----END PRIVATE KEY-----
      crt: |
        # -----BEGIN CERTIFICATE-----
        # insert certificate
        # -----END CERTIFICATE-----

この例では、​alpn​、​minversion​、​maxversion​、​ciphers​ のデフォルト値を使用します。

特定のアップストリームサービスのアウトバウンド mTLS コンテキストを追加するためのサンプル設定:

apiVersion: gateway.mulesoft.com/v1alpha1
kind: PolicyBinding
metadata:
  name: mtls-outbound
spec:
  targetRef:
    kind: Service
    name: ingress-test-outbound-upstream
  policyRef:
    name: tls-outbound
  config:
    skipValidation: false
    trustedCA: |
      # -----BEGIN CERTIFICATE-----
      # insert certificate
      # -----END CERTIFICATE-----
    certificate:
      key: |
        # -----BEGIN PRIVATE KEY-----
        # insert certificate key
        # -----END PRIVATE KEY-----
      crt: |
        # -----BEGIN CERTIFICATE-----
        # insert certificate
        # -----END CERTIFICATE-----
    alpn:
      - http/1.1
      - h2
    minversion: "1.1"
    maxversion: "1.3"
    ciphers:
      - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
      - TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
      - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
      - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
      - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
      - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

Flex Gateway での TLS 暗号化のサポート

Flex は、TLS 1.1 ~ TLS 1.3 の範囲の TLS バージョンをサポートでき、サポートする暗号化の一部をカスタマイズすることもできます。

TLS 1.3 暗号化のリストをカスタマイズすることはできません。TLS 1.3 をサポートする場合、設定ファイルにリストされている暗号化に関係なく、TLS 1.3 のデフォルトの暗号化がすべてサポートされます。TLS 1.3 をサポートしない場合、これらの暗号化は含まれません。

TLS 1.2 の場合、暗号化をリストすると、TLS 1.2 のデフォルトの暗号化が上書きされます。デフォルトの TLS 1.2 暗号化以外の暗号化をリストする場合は、サポートするデフォルトの暗号化を含め、サポートするすべての暗号化をリストする必要があります。サポートされる暗号化のリストからデフォルトの暗号化を除外すると、それらの暗号化はサポートされなくなります。デフォルトの暗号化のみをサポートする場合は、暗号化リストを空白のままにします。暗号化をリストしても、デフォルトの TLS 1.3 暗号化には影響しません。

TLS 1.1 にはデフォルトの暗号化がありません。TLS 1.1 をサポートするには、サポートする暗号化をリストする必要があります。TLS 1.1 および TLS 1.2 をサポートする場合、TLS 1.1 暗号をリストすると、TLS 1.2 のデフォルトが上書きされます。これらのバージョンの両方をサポートするには、サポートするすべての暗号化をリストします。

アウトバウンド TLS コンテキストの場合、選択した暗号化とバージョンがアップストリームサービスでサポートされることを確認してください。

Flex Gateway でサポートされる暗号化

Flex Gateway では、接続モードとローカルモードで次の TLS 暗号化がサポートされます。

暗号化 TLS バージョン デフォルト アドバイス

TLS_AES_128_GCM_SHA256

1.3

はい

セキュア

TLS_AES_256_GCM_SHA384

1.3

はい

セキュア

TLS_CHACHA20_POLY1305_SHA256

1.3

はい

セキュア

TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256

1.2

はい

推奨

TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384

1.2

はい

推奨

TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256

1.2

はい

推奨

TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256

1.2

いいえ

推奨

TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

1.2

はい

セキュア

TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

1.2

はい

セキュア

TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256

1.2

はい

セキュア

TLS_RSA_WITH_AES_128_GCM_SHA256

1.2

いいえ

脆弱

TLS_RSA_WITH_AES_256_GCM_SHA384

1.2

いいえ

脆弱

TLS_RSA_WITH_NULL_SHA

1.1、1.2

いいえ

非セキュア

TLS_RSA_WITH_AES_128_CBC_SHA

1.1、1.2

いいえ

脆弱

TLS_RSA_WITH_AES_256_CBC_SHA

1.1、1.2

いいえ

脆弱

TLS_PSK_WITH_AES_128_CBC_SHA

1.1、1.2

いいえ

脆弱

TLS_PSK_WITH_AES_256_CBC_SHA

1.1、1.2

いいえ

脆弱

TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA

1.1、1.2

いいえ

脆弱

TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA

1.1、1.2

いいえ

脆弱

TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

1.1、1.2

いいえ

脆弱

TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA

1.1、1.2

いいえ

脆弱

TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA

1.1、1.2

いいえ

脆弱

TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA

1.1、1.2

いいえ

脆弱

TLS_RSA_WITH_3DES_EDE_CBC_SHA

1.1

いいえ

脆弱