SSO を設定するには、まず OAuth 2.0/OpenID 接続プロファイルを作成する必要があります。次に、プロファイルを使用するようユーザをプロビジョニングする必要があります。以下の記事では、OAuth 2.0/OpenID 接続プロファイルの作成について説明します。

Vault は、複数のプロファイルを作成して、それぞれに異なる認証サーバ (AS) を関連付けることができます。これによって、ユーザが割り当てられたセキュリティポリシーに設定された AS で認証することができます。Vault は、PingFederate、ADFS 4.0、Okta 認証サーバーによる OpenID 接続のみに対応しています。

詳しくは、Vault 製品に対応する IdPs/AS をご覧ください。

OAuth 2.0/OpenID 接続プロファイルを作成するには、次の手順に従います。

  1. 管理者 > 設定 > OAuth 2.0/OpenID 接続プロファイルに進みます。
  2. 作成をクリックします。
  3. プロファイルのラベル名前を入力します。
  4. プロファイルのステータスを選択します。設定が完了するまでプロファイルを無効のままにしておくことが推奨されます。
  5. 任意の作業: プロファイルの説明を追加します。
  6. OAuth 2.0/OpenID 接続設定に、AS Metadata ボタンがある AS Metadata をアップロードします。詳しくは以下を参照してください。
  7. ドロップダウンから認証サーバプロバイダを選択します。20R2.2 以降、ADFS / Azure AD オプションは ADFSAzure AD の 2 つに分割されています。ADFS は値を ADFS として表示し、Azure AD は値を Azure として表示します。
  8. 任意: 前のステップで ADFS を選択した場合は、お気に入りの認証ライブラリを選択することができます。デフォルトの値は MSAL (ADFS 2019 以降) です。ADFS 2019 以降に対しては MSAL を、それ以外の場合は ADAL が推奨されます。この設定は、Vault File Manager がランタイム時に適切な Microsoft Authentication Library を読み込むために使用されます。間違ったオプションを選択すると、カスタムクレームなどの IDP 側の高度な設定オプションを使用できなくなる可能性があります。
  9. 任意の作業: アクセストークン JWKS エンドポイントを入力します。このオプションは、前の手順で PingFederate を選択する場合のみ利用可能です。このフィールドの最大文字数は 500 字です。詳しくは以下を参照してください。
  10. アイデンティティクレームを選択します。アイデンティティは「sub」要求に含まれますを選択すると、AS で id_token または access_token の「sub」要求でユーザの一意識別子を提供できます。アイデンティティは別の要求に含まれますを選択する場合は、要求フィールドに別の要求キーを入力します。このフィールドの最大文字数は 100 字です。詳しくは以下を参照してください。
  11. ユーザ ID タイプと、Vault ユーザ名または連携 ID のいずれかを選択します。詳しくは以下を参照してください。
  12. 任意の作業: オーディエンス制限バリデーションを有効にするには、厳格なオーディエンス制限バリデーションを実行するチェックボックスを選択します。詳しくは以下を参照してください。
  13. 任意の作業: クライアントアプリケーションで、追加をクリックし、必要なフィールドに入力して、認証サーバとクライアントアプリケーション間のクライアント ID マッピングを設定します。詳しくは以下を参照してください。
  14. 保存をクリックします。

PingFederate 認証サーバについて

認証サーバプロバイダドロップダウンから PingFederate を選択すると、Vault にオプションのアクセストークン JWKS エンドポイントフィールドが表示されます。このフィールドは、HTTPS URL 形式の文字列による認証サーバ JSON Web Key Set (JWKS) を許可し、Vault はこれを使って、access_token の署名バリデーションキーを取得します。このエンドポイントは、AS Metadata で指定された JWKS エンドポイントに追加されるもので、Vault はこれを使って id_token 上の署名を検証します。

認証サーバメタデータのアップロード

AS Metadata JSON ファイルをアップロードするか、データが利用できる URL を使用することで、認証サーバメタデータをアップロードすることができます。AS Metadata を変更すると、更新された AS Metadata を Vault OAuth/OpenID 接続プロファイルにインポートする必要があります。

AS Metadata をアップロードするには、次の手順に従います。

  1. AS Metadata のアップロードボタンをクリックします。
  2. JSON ファイルをアップロードして AS Metadata をインポートするには、認証サーバ Metadata に続いてファイルを選択します。
  3. URL を指定して AS Metadata をインポートするには、認証サーバ Metadata URL の提供を選択してから、ファイルの場所を入力します。この URL は HTTPS プロトコルを使用する必要があります。
  4. 続行をクリックします。Vault が AS Metadata JSON を検証し、情報が無効である場合はエラーメッセージを返します。
  5. 設定を完了するには、保存をクリックします。

JSON ファイル構造は、AS Metadata 仕様で定義されます。

以下に必須のメタデータを示します。

メタデータ説明
発行者認証サーバの発行者 ID で、"https" スキームを使用し、クエリまたはフラグメントコンポーネントがない URL です。
authorization_endpoint認証サーバの認証エンドポイントの URL。
token_endpoint認証サーバのトークンエンドポイントの URL。
introspection_endpoint認証サーバの OAuth 2.0 イントロスペクションエンドポイントの URL。認証サーバプロバイダが ADFS に設定されている場合、これは不要です。
jwks_uri認証サーバの JSON Web Key Set (JWKS) の URL。これには、認証サーバが発行した JSON Web Token (JWT) を検証するために使用されるパブリックキーのセットが含まれます。認証サーバプロバイダとして PingFederate を選択する場合は、access_token の検証用に追加の JWKS エンドポイントを指定することができます。

その他の任意のメタデータを含めることができます。任意ですが、推奨されているメタデータを以下に示します。

メタデータ説明
scopes_supportedこの認証サーバがサポートする OAuth 2.0 [RFC6749]「範囲」値を含む JSON アレイ。サーバは、このパラメータが使用されている場合でも、一部サポートされる範囲値の広告を行わないよう選択することができます。

アイデンティティクレーム

id_token または access_token 内のアイデンティティクレームには、認証されたユーザの識別子が含まれます。通常は、認証サーバが「sub」(被験者) 要求で認証されたユーザを一意に識別する値を提供します。しかし、Vault では id_token または access_token 内で別の要求を設定して、ユーザの識別子を取得することができます。

ユーザ ID タイプについて

ユーザ ID タイプには、Vault ユーザ名連携 ID の 2 つのオプションがあります。

Vault ユーザ名

IdP ユーザディレクトリに属性として Vault ユーザ名を格納する予定の場合、または Vault ユーザ名がエンタープライズユーザ名と正確に一致する場合は、Vault ユーザ名を選択します。基本的に、エンタープライズユーザ名を Vault ユーザ名にマッピングするので IdP に負荷がかかります。

連携 ID

Vault ユーザプロファイルの連携 ID にエンタープライズユーザ名を格納する予定の場合は、連携 ID を選択します。エンタープライズユーザ名から Vault ユーザ名にマッピングするので Vault に負荷がかかります。

ClientID マッピング

ClientID マッピングを使うと、認証サーバが定義した Oauth クライアント ID とクライアントアプリケーションが定義したクライアント ID 間のマッピングを管理することができます。これによって、Vault File ManagerVeeva Snap など、組み込み静的クライアント ID のある Vault アプリケーションを、クライアント ID が各アプリケーションについて一意に生成されたものでなければならない認証サーバとの統合が可能になります。

クライアントアプリケーションの追加

新規クライアントアプリケーションを追加するには、次の手順に従います。

  1. クライアントアプリケーションセクションに下にある追加ボタンをクリックします。
  2. アプリケーションのアプリケーションラベルを入力します。
  3. アプリケーションクライアント ID を入力します。
  4. 認証サーバクライアント ID を入力します。
  5. 任意の作業: オーディエンスの値を入力します。このフィールドは、オーディエンス制限バリデーションが有効化されている場合のみ適用されます。
  6. OK をクリックします。

クライアントアプリケーションの編集

既存のクライアントアプリケーションを編集するには、アプリケーションラベルにマウスオーバーして、アクションメニューで編集をクリックします。編集メニューを使うと、アプリケーションの必須フィールドを更新できます。アクションメニューから削除を選択して、クライアントアプリケーションを削除することもできます。

オーディエンスおよびクライアントの ID バリデーション

Oauth トークンバリデーションの間、Vault はオーディエンス制限バリデーションを使って、認証サーバによって生成され、クライアントアプリケーションが示すトークンが 特定の OAuth 2.0/OpenID 接続プロファイルを目的としたものであることを確認します。Vault と通信するクライアントアプリケーションが使用することを目的とする場合のみ、トークンはバリデーションにパスします。

オーディエンスバリデーションを有効化するには、OAuth 2.0/OpenID 接続プロファイルページにある厳格なオーディエンス制限バリデーションを実行するチェックボックスを選択します。

オーディエンス制限バリデーションはどのように機能するか

トークン内の aud (オーディエンス) 要求がトークの意図された受領者を指定します。OAuth 2.0/OpenID 接続プロファイルがトークンを受領すると、Vault は JWT (JSON Web Token) またはイントロスペクション応答からオーディエンス情報を読み取ります。認証サーバで aud 値を id_token のクライアント ID と access_tokenのリソースサーバ URI に設定することが強く推奨されます。Vault では、リソースサーバ URI は各 OAuth 2.0/OpenID 接続プロファイルで一意となっており、プロファイル作成時に Vault セッション ID URL として表示されます。

認証用に id_token または access_token のいずれが表示されるかによって、Vault セッション ID URL かクライアントアプリケーションマッピング表で指定したオーディエンス値のいずれかを使用して、オーディエンス制限の検証が行われます。

Vault では、オーディエンス制限バリデーションの間、以下のバリデーション手順を実行します。

  1. トークンに aud 要求があることを確認します。要求がない場合、Vault ではトークンを却下します。
  2. 要求を受領する OAuth 2.0/OpenID 接続プロファイルの Vault セッション ID URL をトークンの aud 要求から抽出される値と比較します。値が一致しない場合は、クライアントアプリケーションマッピング表で指定されたオーディエンス値に対してオーディエンス制限の検証を行います。
  3. クライアント ID を読み取り、HTTP 要求またはトークンの client_id 要求からそれを抽出します。クライアント ID がない場合、Vault ではトークンを却下します。
  4. 前の手順で取得したクライアント ID に基づいて、OAuth 2.0/OpenID 接続プロファイルのクライアントアプリケーションマッピング表のマッピングレコードの特定を試みます。Vault がオーディエンス値のマッピングレコードを抽出します。クライアント ID に基づく一致するマッピングレコードがない場合、Vault ではトークンを却下します。
  5. 最後に、Vault はオーディエンス値をトークンの aud 要求内に渡された値と比較します。マッピングレコードにオーディエンス値がない、またはマッピングレコードの値がトークンの値と一致しない場合、Vault ではトークンを却下します。

OAuth 2.0/OpenID 接続イベントの記録とトラブルシューティング

ドメイン管理者は OAuth 2.0/OpenID 接続認証イベントを取得して、OAuth 2.0/OpenID 接続プロファイルページのトラブルシューティングタブで、認証や設定に関わる潜在的な問題のトラブルシューティングを行うことができます。各取得アクションによって、最大 10 件までイベントが記録されます。

ログの保持

Vault では、新しい各取得アクションを実行する前に、取得されたイベントログを消去します。管理者は、取得アクションが現在実行されていない限り、取得されたイベントログを手動で消去することができます。

ログイン履歴監査ログで OAuth/OpenID 接続認証の一般的なエラーは表示されなくなりました。Vault は、ドメイン監査履歴ログで取得の開始と終了を記録します。

認証イベントの取得

OAuth/OpenID 接続認証イベントを取得するには、以下の手順に従います。

  1. OAuth 2.0/OpenID 接続プロファイルページで、トラブルシューティングタブをクリックします。
  2. 任意の作業: ユーザフィールドで、イベントログ取得を行うユーザを選択します。ユーザを選択しないと、任意のユーザに対してイベントが取得されます。
  3. 任意の作業: クライアント ID フィールドにクライアント ID を入力します。クライアント ID を入力しないと、任意のクライアント ID についてイベントが取得されます。
  4. 収集開始ボタンをクリックして、取得処理を開始します。プロファイルに前の取得のイベントが含まれる場合は、新しい取得を開始する前に既存のイベントはすべて削除され、削除を確認するダイアログが表示されます。Vault では、イベント表にすべての取得済みイベントを記録します。
  5. 任意の作業: リフレッシュボタンをクリックして、イベント表のコンテンツをリフレッシュします。

イベント取得の終了

イベントの取得を終了するには、収集終了ボタンをクリックして、ダイアログで終了することを確認します。

イベント表について

Vault では、イベント表に取得済みイベントを以下の列とともに表示します。

  • 日付 UTC: UTC における要求の日時。
  • トランザクション ID: イベントのトランザクション ID。トランザクション ID は、各認証要求に対して一意になります。
  • メッセージ: イベントの説明。
  • ユーザ: 取得されたイベントに関連付けられたユーザ名。
  • クライアント: 取得されたイベントに関連付けられたクライアント ID。
  • イベントデータ: バリデーションを実行するため、認証イベントが使用するデータ。この列は、CSV としてダウンロードする場合のみ利用できます。この列をイベント表に追加することはできません。
  • バリデーションステータス: イベントバリデーションの結果。バリデーションが成功した場合は、OK になります。

取得済みイベントの削除

すべての取得済みイベントを削除するには、アクションメニューからすべて削除を選択します。ダイアログではいをクリックして、アクションを確認します。このアクションは取り消すことはできません。

CSV エクスポート

イベント表のアクションメニューから、CSV にエクスポートを選択できます。エクスポートされた CSV には、すべての取得済みイベントに加え、イベント表には存在しないイベントデータ列が含まれます。