相互TLSを使用したクライアント認証
セキュリティのニーズに応じて、オプションでMutual TLS(MTLS)を設定して強力なクライアント認証を実装できます。OAuth 2.0展開の一部としてONTAPで使用される場合、MTLSはアクセストークンが最初に発行されたクライアントによってのみ使用されることを保証します。
OAuth 2.0を使用した相互TLS
Transport Layer Security(TLS)は、2つのアプリケーション(通常はクライアントブラウザとWebサーバ)間にセキュアな通信チャネルを確立するために使用されます。相互TLSは、クライアント証明書を介してクライアントを強力に識別できるようにすることで、これを拡張します。OAuth 2.0を使用したONTAPクラスタで使用する場合、送信者に制約されたアクセストークンを作成して使用することで、基本的なMTLS機能が拡張されます。
送信者に制約されたアクセストークンは、最初に発行されたクライアントのみが使用できます。この機能をサポートするために、新しい確認要求が(`cnf`トークンに挿入されます。このフィールドには、アクセストークンの要求時に使用されるクライアント証明書のダイジェストを保持するプロパティが含まれ `x5t#S256`ます。この値は、トークンの検証の一環としてONTAPによって検証されます。送信者に制約されていない許可サーバーによって発行されたアクセストークンには、追加の確認要求は含まれません。
認可サーバごとにMTLSを個別に使用するようにONTAPを設定する必要があります。たとえば、CLIコマンド `security oauth2 client`には、次の表に示す3つの値に基づいてMTLS処理を制御するパラメータが含まれてい `use-mutual-tls`ます。
各構成で、ONTAPによって実行される結果とアクションは、構成パラメータの値、およびアクセストークンとクライアント証明書の内容によって異なります。テーブル内のパラメータは、最小から最も制限の厳しいものに分類されています。 |
パラメータ | 説明 |
---|---|
なし |
OAuth 2.0相互TLS認証は、認可サーバーでは完全に無効になっています。ONTAPは、確認要求がトークンに含まれている場合やクライアント証明書がTLS接続で提供されている場合でも、MTLSクライアント証明書認証を実行しません。 |
リクエスト |
OAuth 2.0相互TLS認証は、送信者に制約されたアクセストークンがクライアントによって提示された場合に適用されます。つまり、MTLSは、確認要求(with property)がアクセストークンに存在する場合にのみ適用され `x5t#S256`ます。これがデフォルト設定です。 |
必須 |
OAuth 2.0相互TLS認証は、認可サーバーによって発行されたすべてのアクセストークンに適用されます。したがって、すべてのアクセストークンは送信者に制約される必要があります。アクセストークンに確認要求がない場合、または無効なクライアント証明書がある場合、認証およびREST API要求は失敗します。 |
導入フローの概要
ONTAP環境でOAuth 2.0でMTLSを使用する場合の一般的な手順を以下に示します。詳細については、を参照してください "RFC 8705:『OAuth 2.0 Mutual-TLS Client Authentication and Certificate-Bound Access Tokens』"。
クライアントIDの確立は、クライアントの秘密鍵に関する知識の証明に基づいています。対応する公開鍵は、クライアントから提示された署名付きX.509証明書に配置されます。クライアント証明書の作成手順の概要は次のとおりです。
-
公開鍵と秘密鍵のペアを生成する
-
証明書署名要求を作成する
-
CSRファイルを既知のCAに送信する
-
CAが要求を検証し、署名済み証明書を発行
通常、クライアント証明書はローカルのオペレーティングシステムにインストールするか、curlなどの一般的なユーティリティを使用して直接使用できます。
MTLSを使用するようにONTAPを設定する必要があります。この設定は、認可サーバごとに個別に行われます。たとえば、CLIでは、オプションのパラメータを指定してコマンドを `security oauth2 client`使用し `use-mutual-tls`ます。詳細については、を参照してください "ONTAPでのOAuth 2.0の導入" 。
クライアントは、ONTAPに設定された認証サーバからアクセストークンを要求する必要があります。クライアントアプリケーションは、手順1で作成およびインストールした証明書でMTLSを使用する必要があります。
認可サーバはクライアント要求を検証し、アクセストークンを生成します。これの一部として、クライアント証明書のメッセージダイジェストを作成します。このダイジェストは、確認要求(フィールド)としてトークンに含まれ `cnf`ます。
クライアントアプリケーションは、ONTAPクラスタへのREST API呼び出しを実行し、アクセストークンを* bearerトークン*として承認要求ヘッダーに含めます。クライアントは、アクセストークンの要求に使用したのと同じ証明書を持つMTLSを使用する必要があります。
ONTAPは、HTTP要求でアクセストークンと、MTLS処理の一部として使用されるクライアント証明書を受信します。ONTAPは最初にアクセストークンの署名を検証します。設定に基づいて、ONTAPはクライアント証明書のメッセージダイジェストを生成し、トークン内の確認要求* cnf*と比較します。2つの値が一致する場合、ONTAPは、API要求を行うクライアントがアクセストークンが最初に発行されたクライアントと同じであることを確認しました。