14 OneLoginでのSAML設定

概要

このセクションでは、SAML 2.0認証を使用してOneLoginからZabbixへのシングルサインオンおよびユーザーのプロビジョニングを設定するためのガイドラインを提供します。

OneLoginの設定

アプリケーションの作成

1. OneLoginのアカウントにログインします。 テスト目的の場合は、OneLoginで無料の開発者アカウントを作成できます。

2. OneLoginのWebインターフェースで、Applications → Applicationsに移動します。

3. 「Add App」をクリックし、適切なアプリを検索します。 このページのガイドラインは、SCIM Provisioner with SAML (SCIM v2 Enterprise, full SAML)アプリの例に基づいています。

4. まず、アプリの表示名をカスタマイズすることをお勧めします。 アイコンやアプリの詳細を追加することもできます。 その後、Saveをクリックします。

SSO/SCIMプロビジョニングの設定

1. Configuration -> Application detailsで、Zabbixシングルサインオンエンドポイント http://<zabbix-instance-url>/zabbix/index_sso.php?acs を以下のフィールドの値として設定します:

  • ACS (Consumer) URL Validator
  • ACS (Consumer) URL

リクエストでacsパラメータが切り取られないように、"https"ではなく" http"を使用していることに注意してください。

" https"を使用することも可能です。 Zabbixでこれを機能させるには、conf/zabbix.conf.phpに以下の行を追加する必要があります:

$SSO['SETTINGS'] = ['use_proxy_headers' => true];

他のオプションはデフォルト値のままにします。

2. Configuration -> API connectionで、以下の値を設定します:

  • SCIM Base URL: https://<zabbix-instance-url>/zabbix/api_scim.php
  • SCIM JSON Template: SCIM経由でZabbixに渡したいすべてのカスタム属性(user_nameuser_lastnameuser_emailuser_mobileなど)を含める必要があります:
{
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:User"
  ],
  "userName": "{$parameters.scimusername}",
  "name": {
    "familyName": "{$user.lastname}",
    "givenName": "{$user.firstname}"
  },
   "user_name": "{$user.firstname}",
   "user_lastname": "{$user.lastname}",
   "user_mobile": "{$user.phone}",
   "user_email": "{$user.email}"
}

属性名は任意です。 異なる属性名を使用することもできますが、ZabbixのSAML設定の該当フィールド値と一致する必要があります。

ユーザープロビジョニングを機能させるには、OneLoginがレスポンスで'name'属性('givenName'と'familyName'を含む)を受け取る必要があることに注意してください。これはサービスプロバイダーによって必須でなくても必要です。 したがって、アプリケーション設定部分のスキーマでこれを指定する必要があります。

  • SCIM Bearer Token: Super admin権限を持つZabbix APIトークンを入力します。

Enableをクリックして接続を有効にします。

3. Provisioningページで、Provisioningオプションを有効にします:

4. Parametersページにはデフォルトパラメータのリストがあります:

  • 'scimusername'がOneLoginのユーザーログイン値(例:メールアドレス)と一致していることを確認します;
  • 'Groups'パラメータのInclude in User Provisioningオプションにチェックを入れます;
  • "+"をクリックして、user_nameuser_lastnameuser_emailuser_mobileなど、SAMLアサーションやユーザープロビジョニングに必要なカスタムパラメータを作成します:

パラメータを追加する際は、Include in SAML assertionInclude in User Provisioningの両方にチェックを入れてください。

  • OneLoginのユーザーロールに一致する'group'パラメータを追加します。 ユーザーロールはセミコロン;で区切られた文字列として渡されます。 OneLoginのユーザーロールは、Zabbixでユーザーグループを作成する際に使用されます:

パラメータのリストを確認します:

5. Rulesページで、デフォルトのGroupsパラメータにユーザーロールのマッピングを作成します。

特定のロールをグループとして渡すために正規表現を使用することができます。 OneLoginは複数のロールを含む属性を送信する際にセミコロン;を区切り文字として使用するため、ロール名に;を含めないでください。

6. IdP証明書をダウンロードします。 以下のコマンドで644パーミッションを設定します:

chmod 644 idp.crt

Zabbixの設定

1. Zabbixで、SAML設定に移動し、OneLoginの設定に基づいて設定オプションを入力します。

Zabbixフィールド OneLoginの設定フィールド サンプル値
IdP entity ID Issuer URL
(OneLoginのアプリケーションのSSOタブを参照)
SSO service URL SAML 2.0 Endpoint (HTTP)
(OneLoginのアプリケーションのSSOタブを参照)
SLO service URL SLO Endpoint (HTTP)
(OneLoginのアプリケーションのSSOタブを参照)
Username attribute Custom parameter user_email
Group name attribute Custom parameter group
User name attribute Custom parameter user_name
User last name attribute Custom parameter user_lastname

ユーザーグループのマッピングも設定する必要があります。
メディアのマッピングは任意です。
これらの設定を保存するには、Updateをクリックします。

2. OneLoginが提供するBase64証明書を追加します。

zabbix.conf.phpで$SSO['CERT_STORAGE'] = 'database'が設定されている場合、SAML設定中にWebインターフェースで証明書テキストを貼り付けるか、証明書ファイルをアップロードできます。ファイルシステム上にファイルを配置する必要はありません。

zabbix.conf.phpで$SSO['CERT_STORAGE'] = 'file'が設定されている場合、証明書はファイルシステム上で利用可能にしておく必要があります(デフォルトではui/conf/certs、またはzabbix.conf.phpで設定されたパス)。この場合、Webインターフェースは証明書をデータベースに保存しません。
$SSO['CERT_STORAGE']が設定されていない、またはコメントアウトされている場合は、ファイルストレージが使用されるものとみなされ、証明書はui/conf/certsから読み込まれます。

OneLoginで証明書のダウンロードにアクセスするには、Applications -> SSO に移動し、現在の証明書の下にある View details をクリックします。

3. これらの設定を保存するには、Updateボタンを押します。

SCIMユーザーのプロビジョニング

ユーザーのプロビジョニングを有効にすると、OneLoginでユーザーとそのロールを追加/更新し、それらを即座にZabbixにプロビジョニングすることが可能になります。

例えば、新しいユーザーを作成できます。

ユーザーロールとユーザーをプロビジョニングするアプリケーションに追加します。

ユーザーを保存すると、Zabbixにプロビジョニングされます。 [Application] -> [Users]で、現在のアプリケーションユーザーのプロビジョニング状況を確認できます。

正常にプロビジョニングされると、Zabbixのユーザーリストにユーザーが表示されます。