SSOでのSAMLの使用
概要
Yellowfin 9.6には新しいSAML インターフェースが実装されており、(OktaやAuth0など) アイデンティティプロバイダーにより開始されるフローにおいて、セキュアな接続のセットアップや維持がより簡単になりました。新しい設定は、従来のSAML bridge アプリケーションの設定とは若干異なります。なお、従来のSAML bridge アプリケーションは、新しく簡素化されたインターフェースでは提供されない追加機能 (サービスプロバイダーが開始するフローなど) を実装したい場合に、依然として利用することができます。
SAMLは、Security Assertion Markup Languageの頭文字を取ったものであり、アイデンティティプロバイダー (IdP) とサービスプロバイダー (SP) の2つのエンティティ間で、アイデンティティデータをセキュアに転送するためのXMLベースのオープンスタンダードです。アイデンティティプロバイダーの役割は認証を行うことで、有効な場合は、ユーザーのアイデンティティおよび認可レベルをサービスプロバイダーに渡します。サービスプロバイダーの役割は、アイデンティティプロバイダーを信頼し、要求されたリソースへのユーザーのアクセスを許可することです。
署名付きリクエスト
Yellowfinは、セキュリティを強化するために、アイデンティティプロバイダーからの署名付きリクエストを管理することができます。この機能はデフォルトで有効になっていますが、いくつかの設定を必要とします。Yellowfinが受信する署名付きリクエストを復号できるようにするために、アイデンティティプロバイダーの署名付き証明書および署名付きアルゴリズムを提供しなくてはいけません。アイデンティティプロバイダーは、これらの値を構成内で明確にする必要があります。
暗号化されたリクエスト
Yellowfinは、さらにセキュリティを強化するために、アイデンティティプロバイダーからの暗号化されたリクエストを管理するよう設定することができます。これは、署名付きリクエストの設定とは別に有効化することができます。また、Yellowfinに渡すSSLキーペアを生成しなくてはいけません (こちらのwikiページに記載された表から、onelogin.saml2.sp.x509certおよびonelogin.saml2.sp.privatekeyを参照してください)。これは、システムにより提供されません。これらを取得したら、Yellowfinの対応する設定項目に秘密鍵と証明書を提供するとともに、アイデンティティプロバイダーでこの設定を行い、その設定内でSSL暗号化証明書を設定する必要があります。
この設定には、PKCS#8 BEGIN PRIVATE KEY形式が必要です。書式が異なる場合は、変換しなくてはいけません。
SAML実装の準備
YellowfinにSAMLを設定する前に、対応しなくてはいけない項目を十分理解していることを確認します。以下の表では、各項目に関する詳細を示します。
IdPは、以下の項目を必要とします。
パラメーター | 説明 | 必須かどうか | デフォルト |
サービスプロバイダーSSO URL | IdPが、Yellowfin ログインページに到達するために使用する Single Sign OnエンドポイントURLです。これは通常、レポート外部アクセス時BaseURLの後に続く/SAMLLogin.i4を付けたものです。 | 必須 | ext_base_url/SAMLLogin.i4 |
オーディエンス制限 | これは、「サービスプロバイダーエンティティId」または「発行者Id」と呼ばれることもあります。これは、Yellowfin SAML サービスの識別子です。これは通常、レポート外部アクセス時BaseURLの後に続く/SAMLMetadata.i4を付けたものです。 | 必須 | ext_base_url/SAMLMetadata.i4 |
暗号証明書 | この証明書は、IdPがYellowfinに向かうトラフィックを暗号化するために使用します。前述したように、独自のSSLキーペアを生成し、この項目に暗号化証明書を提供する必要があります。 | 受信リクエストの暗号化を有効にしている場合は必須 | なし |
Yellowfinは、以下の項目を必要とします。
パラメーター | 説明 | 必須かどうか | デフォルト |
アイデンティティプロバイダーのEntityId | 「オーディエンスURl」、または「オーディエンス制限」と呼ばれることもあります。これは、サービスプロバイダーのエンティティを特定します。 <your_idp_domain>/<sp_id> 例えば、 www.okta.com/ekti172b2ac0843Xf | 必須 | なし |
アイデンティティプロバイダーのSSO URL | SAMLアイデンティティプロバイダーの Single Sign On エンドポイントURLであり、 IdPは独自の設定ページ内で明確に表示しなくてはいけません。 これは、次のような形式になります。 <your_sso_domain>/<path_to_sp_sso_login> 例えば、 login.mybusiness.com/app/yellowfin1/ekti172b2ac0843Xf/sso | 必須 | なし |
アイデンティティプロバイダーSLO URL | SAML ID プロバイダのシングル・ログアウト・エンドポイントの URL であり、IdP は自身の設定ページに明確に表示する必要があります。このオプションは、YellowfinにSLOのレスポンスをどこに向けるかを指示します。 次のような形式になります。 <your_slo_domain>/<path_to_idp_slo_logout> 例えば、 login.mybusiness.com/app/yellowfin1/ekti172b2ac0843Xf/slo | 必須 | なし |
アイデンティティプロバイダー SLO URL 回答 | これは、IdpのSLO回答のエンドポイントとSLOリクエスト用のエンドポイントが異なる場合のみ必要となるオプションのパラメーターです。何も入力されていない場合、YellowfinはアイデンティティプロバイダーSLO URLフィールドに入力されたURLを使います。 これは、次のような形式になります。 <your_slo_domain>/<path_to_idp_slo_logout_response> 例えば、 login.mybusiness.com/app/yellowfin1/ekti172b2ac0843Xf/sloreponse | 任意 | なし |
アイデンティティプロバイダー証明書 | この証明書は、アイデンティティプロバイダーからのリクエストを復号化します。アイデンティティプロバイダーは、この証明書を設定で明らかにする必要があります。 | 必須 | なし |
サービスプロバイダー秘密鍵 | この秘密鍵は、アイデンティティプロバイダーから受信する暗号化されたSAMLリクエストを復号化します。このパラメーターを有効にする場合、独自のSSLキーペアを生成し、秘密鍵をここで提供する必要があります。 これは任意ではありますが、Yellowfinがリクエストにサインするために、この秘密鍵を提供することをお勧めします。 | 任意 | なし |
サービスプロバイダー証明書 | この証明書はサービスプロバイダーのアイデンティティを確認し、アイデンティティプロバイターがサービス間の通信を暗号化することを可能にします。このパラメーターを有効にする場合、独自のSSLキーペアを生成し、ここで暗号化証明書を提供する必要があります。 これは任意ではありますが、Yellowfinがリクエストにサインするために、この秘密鍵を提供することをお勧めします。 | 任意 | なし |
シグネチャーアルゴリズム | このアルゴリズムは、受信したアイデンティティプロバイダーの証明書を検証します。ハッシュの長さは3種類から選べますので、受信する証明書の種類に合わせてお選びください。
どれか分からない場合は、デフォルトを使用してください。 | 必須 | RSA-SHA256 |
ダイジェストアルゴリズム | このアルゴリズムは、受信したアイデンティティプロバイダーの証明書を検証します。ハッシュの長さは3種類から選べますので、受信する証明書の種類に合わせてお選びください。
どれか分からない場合は、デフォルトを使用してください。 | 必須 | SHA256 |
受信したリクエストの暗号化 | このトグルは、受信する SAML リクエストを ID アイデンティティプロバイダーが暗号化するかどうかを決定します。セキュリティを高めるには、スイッチをオンにしてください。 | トグル | |
ユーザーID 属性 | こちらの項目は、Yellowfin ユーザーIDを保持します (システム構成に応じて、これは通常ユーザー名、または電子メールアドレスになります)。 | 必須 | なし |
クライアント参照ID 属性 | このパラメーターは、ユーザーが所属するクライアント組織のクライアント参照Idの位置を提供します。通常、関連するクライアント組織を持たないYellowfin インスタンスでは、空欄、または「1」に設定します。 | 必須ではない | なし |
SSOエントリーオプション属性 | このパラメータには、SAML SSOプロセスで作成されたセッションに渡されるカンマ区切りのWebサービスセッションパラメータ値を保持するSAML属性を指定します。ユーザーをデフォルトの入力ページに誘導する場合は、空白にします。詳細および例については、「CustomParameters と Parameters でデータをカスタマイズする」セクションを参照してください。 | 必須ではない | なし |
カスタムセッションパラメーター 属性 | このパラメーターは、SSO Webサービスの呼び出しの時に、パラメーターオプションを、SAML SSLプロセスで作成されるセッションに渡すことができます。 | 必須ではない | なし |
新規ユーザー作成 | こちらのトグルを有効にすることで、SAMLは自動的に新規ユーザーをプロビジョニングします。新規ユーザーをプロビジョニングしない場合は、こちらのトグルを有効にしてはいけません。 | 必須ではない | 無効 |
プロバイダーは多数存在し、それぞれに異なる設定プロセスがあるため、こちらのページではアイデンティティプロバイダーの設定方法は紹介しません。今回は、Yellowfin ユーザーにSAMLを実装する場合に必要な基礎的な内容について網羅します。
SAMLの設定
SAML プロバイダーを設定するには、以下の手順に従います。
- Yellowfin レフトサイドメニューから、管理をクリックし、システム構成を選択します。
- 認証タブをクリックし、認証方法項目へ移動します。
- SAML シングルサインオンのトグルをクリックし、有効にします。
SAML 設定という新しい項目が表示されます。こちらから、SAML SSOに関連するすべての設定を行います。
SAML設定をクリックして、項目を展開します。 - 前述の表を参考にして、必要な項目に値を入力します。:IdPのEntityId、IdPのSSO URL、Idp SLO URL、IdPの証明書、シグネチャーアルゴリズム、ダイジェストアルゴリズム、ユーザーアイデンティティ属性
- 前述の表を参考にして、必要に応じて、必須ではないその他項目に値を入力します(以下のイメージを参照してください)。