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: user_nameuser_lastnameuser_emailuser_mobile など、SCIM 経由で Zabbix に渡したいすべてのカスタム属性を含める必要があります。
{
  "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 は応答として givenNamefamilyName を含む name 属性を受け取る必要がある点に注意してください。
そのため、アプリケーション設定のスキーマ部分でこれを指定する必要があります。

  • 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 field Setup field in OneLogin Sample value
IdP entity ID Issuer URL
(see SSO tab of your application in OneLogin)
SSO service URL SAML 2.0 Endpoint (HTTP)
(see SSO tab of your application in OneLogin)
SLO service URL SLO Endpoint (HTTP)
(see SSO tab of your application in OneLogin)
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のユーザー一覧に表示されます。