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

ポリシー名

Transport Layer Security (TLS) - インバウンド

概要

クライアントと API プロキシ間の認証を有効にする

カテゴリ

セキュリティ

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

v1.0.0 (インバウンド mTLS: v1.3.0)

返される状況コード

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

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

概要

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

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

インバウンド TLS コンテキストを設定してクライアントと API インスタンス間の認証 (HTTPS) を有効にするには、TLS ポリシーを対象の API インスタンスまたは Flex Gateway 内のすべてのインスタンスにバインドすることができます。

Flex Gateway はポートレベルのインバウンド TLS を実装します。つまり、他のインスタンスとポートを共有する API インスタンスにインバウンド TLS を適用すると、ポートを共有するすべてのインスタンスに同じインバウンド TLS コンテキストが適用されます。Flex Gateway は、1 つのゲートウェイで複数の TLS 証明書をサポートしますが、証明書は一意のポートに適用する必要があります。インバウンド TLS を 1 つの API インスタンスに適用する場合、そのポートを共有するインスタンスに同じインバウンド TLS コンテキストを適用する必要はありません。したがって、同じポートを共有する API インスタンスに異なるインバウンド TLS コンテキストを適用することはできません。

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

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

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

Flex Gateway をランタイムとして使用して API インスタンスを作成するときに HTTPS をスキーマとして使用するには、YAML 設定ファイルで TLS コンテキストを手動で設定する必要があります。

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

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

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

ciphers​ パラメーターを設定する場合、サポートされる暗号化については、​「TLS Cipher Support on Flex Gateway (Flex Gateway での TLS 暗号化のサポート)」​を参照してください。

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

requireClientCertificate

省略可能

false

インバウンド mTLS の有効化/無効化

trustedCA

省略可能 (​requireClientCertificate​ が true でない場合)

なし

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

省略可能

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

サポートされる TLS 暗号化のリスト (IANA 形式)。サポートされる暗号化については、​「TLS Cipher Support on Flex Gateway (Flex Gateway での TLS 暗号化のサポート)」​を参照してください。

リソースの設定例

YAML ファイルを書式設定して、Flex Gateway で実行されている特定の API インスタンスまたはすべての API インスタンスに対して TLS または mTLS を設定できます。

すべての API インスタンスに TLS 設定を適用

この Flex Gateway で実行されているすべての API インスタンスのインバウンド TLS コンテキストを追加するためのサンプル設定:

apiVersion: gateway.mulesoft.com/v1alpha1
kind: PolicyBinding
metadata:
  name: ingress-https-tls
spec:
  targetRef:
    kind: Selector
    selector:
      kind: ApiInstance
  policyRef:
    name: tls
  config:
    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_CHACHA20_POLY1305_SHA256
      - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
      - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
      - TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
      - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
      - TLS_RSA_WITH_AES_128_GCM_SHA256
      - TLS_RSA_WITH_AES_128_CBC_SHA
      - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
      - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
      - TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
      - TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
      - TLS_RSA_WITH_AES_256_GCM_SHA384
      - TLS_RSA_WITH_AES_256_CBC_SHA

特定の API インスタンスに TLS 設定を適用

特定の API インスタンスのインバウンド TLS コンテキストを追加するためのサンプル設定:

apiVersion: gateway.mulesoft.com/v1alpha1
kind: PolicyBinding
metadata:
  name: ingress-https-tls
spec:
  targetRef:
    kind: ApiInstance
    name: ingress-https
  policyRef:
    name: tls
  config:
    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_CHACHA20_POLY1305_SHA256
      - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
      - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
      - TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
      - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
      - TLS_RSA_WITH_AES_128_GCM_SHA256
      - TLS_RSA_WITH_AES_128_CBC_SHA
      - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
      - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
      - TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
      - TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
      - TLS_RSA_WITH_AES_256_GCM_SHA384
      - TLS_RSA_WITH_AES_256_CBC_SHA

特定の API インスタンスに mTLS インバウンド設定を適用

特定の API インスタンスのインバウンド mTLS コンテキストを追加するためのサンプル設定:

apiVersion: gateway.mulesoft.com/v1alpha1
kind: PolicyBinding
metadata:
  name: mtls
spec:
  targetRef:
    name: ingress-https
  policyRef:
    name: tls
  config:
    requireClientCertificate: true
    trustedCA: |
      # -----BEGIN CERTIFICATE-----
      # insert certificate
      # -----END CERTIFICATE-----
    certificate:
      key: |
        # -----BEGIN RSA PRIVATE KEY-----
        # insert private key
        # -----END RSA PRIVATE KEY-----
      crt: |
        # -----BEGIN CERTIFICATE-----
        # insert certificate
        # -----END CERTIFICATE-----

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

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 のデフォルトが上書きされます。これらのバージョンの両方をサポートするには、サポートするすべての暗号化をリストします。

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

いいえ

脆弱