Flex Gateway新着情報
Governance新着情報
Monitoring API Managerポリシー名 |
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 ポリシーを API インスタンスにバインドすることができます。
Flex Gateway はポートレベルの TLS を実装します。つまり、他のインスタンスとポートを共有する API インスタンスに TLS を適用すると、ポートを共有するすべてのインスタンスに同じ TLS コンテキストが適用されます。Flex Gateway は、1 つのゲートウェイで複数の TLS 証明書をサポートしますが、証明書は一意のポートに適用する必要があります。 TLS を 1 つの API インスタンスに適用する場合、そのポートを共有するインスタンスに同じ TLS コンテキストを適用する必要はありません。したがって、同じポートを共有する API インスタンスに異なる TLS コンテキストを適用することはできません。
インバウンド TLS とは異なり、API アップストリームサービスは異なるプロバイダーから提供される可能性があるため、Flex Gateway のすべての API インスタンスに同じアウトバウンド TLS コンテキストを適用することはお勧めできません。そのため、すべてのインスタンスでのアウトバウンド TLS の設定例は提供されていません。
TLS ポリシーでは、ポリシー順序はサポートされません。 |
アップストリーム証明書にはサブジェクト代替名 (SAN) 拡張機能を含める必要があります。共通名 (CN) 項目は非推奨です。 Flex Gateway では、 |
Flex Gateway をランタイムとして使用して API インスタンスを作成するときにアウトバウンド mTLS を有効にするには、YAML 設定ファイルで TLS コンテキストを手動で設定する必要があります。
以下のポリシー定義とパラメーターの表を参照してください。
- policyRef: name: tls-outbound config: skipValidation: <boolean> // REQUIRED certificate: // REQUIRED key: <string> // REQUIRED crt: <string> // REQUIRED alpn: <array> // OPTIONAL minversion: <string> // OPTIONAL maxversion: <string> // OPTIONAL ciphers: <array> // OPTIONAL
省略可能なパラメーターを設定ファイルに含めない場合、パラメーターのデフォルト値が TLS コンテキストに適用されます。
ciphers
パラメーターを設定する場合、リストされている暗号化が API アップストリームでサポートされることを確認してください。サポートされる暗号化については、「TLS Cipher Support on Flex Gateway (Flex Gateway での TLS 暗号化のサポート)」を参照してください。
パラメーター | 必須または省略可能 | デフォルト値 | 説明 |
---|---|---|---|
|
必須 |
false |
検証をスキップすると、アウトバウンド mTLS が無効になります |
|
省略可能 ( |
なし |
mTLS で使用するクライアント証明書 |
|
必須 |
なし |
TLS 証明書とキーのペア |
|
必須 |
なし |
証明書の非公開キー部分 |
|
必須 |
なし |
証明書の公開キー部分 |
|
省略可能 |
|
サポートされているアプリケーションレベルプロトコルの優先リスト (h2、http/1.1 など)。 |
|
省略可能 |
|
許容される最小 TLS バージョン |
|
省略可能 |
|
許容される最大 TLS バージョン |
|
省略可能 |
デフォルトおよび他のサポートされる暗号化については、「TLS Cipher Support on Flex Gateway (Flex Gateway での TLS 暗号化のサポート)」を参照してください。 |
サポートされる TLS 暗号化のリスト (IANA 形式)。 |
特定の API インスタンスのアウトバウンド TLS コンテキストを追加するためのサンプル設定:
apiVersion: gateway.mulesoft.com/v1alpha1
kind: PolicyBinding
metadata:
name: tls-outbound
spec:
targetRef:
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
のデフォルト値を使用します。
特定の API インスタンスのアウトバウンド mTLS コンテキストを追加するためのサンプル設定:
apiVersion: gateway.mulesoft.com/v1alpha1
kind: PolicyBinding
metadata:
name: mtls-outbound
spec:
targetRef:
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 は、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 では、接続モードとローカルモードで次の 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 |
いいえ |
脆弱 |