概要
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キーペアを生成し、その秘密鍵をここで提供する必要があります。 | 必須 | なし |
サービスプロバイダー証明書 | この証明書は、アイデンティティプロバイダーから受信する暗号化されたSAMLリクエストを復号化します。このページで前述したように、独自のSSLキーペアを生成し、その証明書をここで提供する必要があります。 | 必須 | なし |
シグネチャーアルゴリズム | このアルゴリズムは、受信したアイデンティティプロバイダーの証明書を検証します。ハッシュの長さは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の証明書、シグネチャーアルゴリズム、ダイジェストアルゴリズム、ユーザーアイデンティティ属性
- 前述の表を参考にして、必要に応じて、必須ではないその他項目に値を入力します(以下のイメージを参照してください)。
新規ユーザー作成の有効化
Yellowfinは、システム内に存在しないユーザーの新規ユーザーアカウントを作成するよう設定することができます。この機能は「オンボーディング」と呼ばれ、SAMLリクエストから新規ユーザーを作成するために必要な情報と合わせて、Yellowfinにいくつかの追加設定を提供しなくてはいけません。以下のパラメーターはすべて、上記の他の属性マッピングパラメーターと一致するように、アイデンティティプロバイダーおよびYellowfinで設定・構成する必要があります。
パラメーター | 説明 | 必須かどうか | デフォルト |
名(First Name) 属性 | このパラメーターは、新規ユーザーの名を取得するために、SAML属性の名前を定義します。 | 必須 | なし |
姓(Last Name) 属性 | このパラメーターは、新規ユーザーの姓を取得するために、SAML属性の名前を定義します。 | 必須 | なし |
Email 属性 | このパラメーターは、新規ユーザーの電子メールアドレスを取得するために、SAML属性の名前を定義します。 | 必須 | なし |
言語コード Attribute | このパラメーターは、新規ユーザーの言語コードを取得するために、SAML属性の名前を定義します。SAML応答のコンテンツは、管理コンソールの地域設定で既に設定された既存の言語コードと一致しなくてはいけません。言語コードは標準的なISO形式で、言語を2文字で表し、必要に応じてアンダースコアとさらなる2文字で国を表します (例: オランダ語の場合はnl、スイスフランス語の場合はfr_ch)。 | 必須ではない | システムのデフォルト |
パスワード 属性 | このパラメーターは、新規ユーザーのパスワードを取得するために、SAML属性の名前を定義します。こちらを空欄にすると、新規ユーザーにはランダムなパスワードが作成されます。 | 必須ではない | ランダムパスワード (32の英数字文字列) |
ロール Attribute | このパラメーターは、新規ユーザーのロールを取得するために、SAML属性の名前を定義します。こちらを省略した場合、新規ユーザーにはデフォルトロールが割り当てられます。SAML応答のコンテンツは、管理コンソールで既に設定された既存のロールコードと一致しなくてはいけません。 | 必須ではない | デフォルトロール |
予備のロール | こちらのドロップダウンリストには、新規ユーザーのプロビジョニング時に、ロール Attribute項目に入力したロールが利用できない場合、予備のロールを選択する方法を提供します。こちらを省略した場合、新規ユーザーにはデフォルトロールが割り当てられます。 | 必須ではない | デフォルトロール |
新規ユーザー作成を設定するには、以下の手順に従います。
- 前述の手順で説明したのと同じ設定画面にいることを確認します。
- 新規ユーザー作成トグルをクリックして有効化します。
- 前述の表を参考にして、必要な項目に値を入力します。: 名(First Name) 属性、姓(Last Name) 属性、Email 属性
- 前述の表を参考にして、必要に応じて、必須ではないその他の項目に値を入力します (以下のイメージを参照してください)。
CustomParametersおよびParametersを使用したデータのカスタマイズ
SSO web サービスの呼び出しで、既にCustomParametersおよびParameters オプションを使用している場合は、SSO エントリーオプションおよびSSO カスタムセッションパラメーター 属性項目を使用して、これらをSAMLに追加することもできます。
SSO エントリーオプション
このSSOエントリーオプション属性フィールドは、SSO WebサービスのCustomParametersオプションで渡すことができるユーザーごとのカスタムデータを、SAML SSOプロセスで作成されるセッションに渡すことができます。これは属性ベースなので、個々のユーザーに適用することができます。
このSSOエントリーオプション属性フィールドは、SAML Single Sign On使用時にセッションごとにカスタムセッション変数を設定できます。この属性には、SAML SSOプロセスで作成されたセッションに適用されるWebサービスのSSOセッションオプションを含めることができます。
例えば、ユーザーのログイン時に、お気に入りに登録したレポートやダッシュボード、ストーリーが表示されるようにしたい場合、TIMELINEおよびDISABLEHEADER パラメーター (または、ログインセッションオプションの定義ページに表示されている任意のパラメーター) を使用することができます。今回は、こちらの例を使用して説明します。
- YellowfinのSAML設定項目で、SSO エントリーオプション項目に移動します。
- 使用する任意のパラメーターを、カンマ区切りで入力します。
今回の例では、ENTRY=TIMELINE,DISABLEHEADER=TRUEを使用します。 - 保存ボタンをクリックし、変更内容を保存します。
トークンを使用してログインし、指定したログインオプションが表示されていることを確認することで、変更内容が機能していることを確認することができます。
カスタムセッションパラメーター 属性
カスタムセッションパラメーター属性項目は、ユーザーが SAML経由でログインした後に生成されるYellowfin セッションに、カスタム値を渡すことができます。これらは、「Parameters」オプションを使用してweb サービスのSSO ログインに渡すことのできるオプションと同様です。これは属性ベースのため、個別のユーザーに適用することができます。
この項目を使用するためには、独自のJava プラグインを記述しなくてはいけません。Yellowfin セッションには、任意の数の変数を渡すことができるので、カスタム要件にさらなる柔軟性を提供します。
例えば、Yellowfinの一般的なヘッダーを置き換えるために、カスタムヘッダーを実装したい場合、この項目にJSON配列を配置することで、ヘッダーは情報を取得し、ページの上部に表示することができます。これには、ロールやプロフィール写真などのユーザー固有の詳細や、ユーザーが作業をしていた最新の3つのレポートへのリンクなどを含めることができます。
Yellowfinでは、これらの詳細をカスタムセッションパラメーター属性項目に追加するだけです。