3.2.7. 相互 TLS 認証
ルーターおよびバックエンドサービスへのクライアントアクセスは、手動の TLS 認証を使用して制限できます。ルーターは、その authenticated
セットではなくクライアントからの要求を拒否します。相互 TLS 認証はクライアント証明書で実装でき、証明書を発行する認証局 (CA)、証明書失効一覧および/または証明書件名フィルターに基づいて制御できます。ルーターの作成時に相互 TLS 設定オプションの --mutual-tls-auth
、--mutual-tls-auth-ca
、--mutual-tls-auth-crl
および --mutual-tls-auth-filter
を使用します。
$ oc adm router --mutual-tls-auth=required \ --mutual-tls-auth-ca=/local/path/to/cacerts.pem ....
--mutual-tls-auth
の値は required
、optional
、または none
であり、none
はデフォルトになります。--mutual-tls-auth-ca
値は 1 つ以上の CA 証明書を含むファイルを指定します。これらの CA 証明書はクライアントの証明書を検証するためにルーターによって使用されます。
--mutual-tls-auth-crl
は、(有効な認証局が発行する) 証明書が取り消されているケースを処理するために証明書失効一覧を指定するために使用できます。
$ oc adm router --mutual-tls-auth=required \ --mutual-tls-auth-ca=/local/path/to/cacerts.pem \ --mutual-tls-auth-filter='^/CN=my.org/ST=CA/C=US/O=Security/OU=OSE$' \ ....
--mutual-tls-auth-filter
値は、証明書件名に基づくきめ細やかなアクセス制御に使用できます。この値は、証明書の件名に一致させるために使用される正規表現です。
上記の相互 TLS 認証フィルターの例では、^
および $
のアンカーが使用された制限的な正規表現 (regex) を示しており、これは証明書件名に 完全に
一致します。制限的な正規表現を使用することにした場合、有効とみなされるすべての CA によって発行された証明書に一致する可能性があることに留意してください。発行された証明書に対してよりきめ細やかな制御を行えるように --mutual-tls-auth-ca
オプションを使用することも推奨されています。
--mutual-tls-auth=required
を使用することにより、バックエンドリソースへのアクセスを認証されたクライアント のみ に許可することができます。これは、クライアントが常に認証情報 (またはクライアント証明書) を提供するために 必要である ことを意味します。相互 TLS 認証を Optional (オプション) にするには、--mutual-tls-auth=optional
を使用 (または、デフォルトの none
を使用) してこれを無効にします。ここで、optional
とは、クライアントに認証情報の提示を要求する必要が ない ことを意味し、クライアントが認証情報を提供する場合は、その情報は X-SSL*
HTTP ヘッダーでバックエンドに渡されることを意味します。
$ oc adm router --mutual-tls-auth=optional \ --mutual-tls-auth-ca=/local/path/to/cacerts.pem \ ....
相互 TLS 認証サポートが有効にされる場合 (--mutual-tls-auth
フラグに required
または optional
値のいずれかを使用)、クライアント認証情報は X-SSL*
HTTP ヘッダーの形式でバックエンドに渡されます。
X-SSL*
HTTP ヘッダー X-SSL-Client-DN
の例: 証明書の件名の完全な識別名 (DN)。X-SSL-Client-NotBefore
: YYMMDDhhmmss[Z] 形式のクライアント証明書の開始日。X-SSL-Client-NotAfter
: YYMMDDhhmmss[Z] 形式のクライアント証明書の開始日。X-SSL-Client-SHA1
: クライアント証明書の SHA-1 フィンガープリント。X-SSL-Client-DER
: クライアント証明書への完全なアクセスを提供します。base-64 形式でエンコードされた DER フォーマットのクライアント証明書が含まれます。