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で使用するには、Webインターフェース設定ファイル(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_name、user_lastname、user_email、user_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が応答で givenName と familyName を含む name 属性を受け取る必要があることに注意してください。 そのため、アプリケーション設定のスキーマでこれを指定する必要があります。

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

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

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

4. Parameters ページには、デフォルトパラメータの一覧が表示されます。

  • scimusername がOneLoginのユーザーログイン値(例: メールアドレス)と一致していることを確認します。
  • Groups パラメータの Include in User Provisioning オプションを選択します。
  • 「+」をクリックして、SAMLアサーションとユーザープロビジョニングに必要な user_name、user_lastname、user_email、user_mobile などのカスタムパラメータを作成します。

パラメータを追加する際は、Include in SAML assertion と Include 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エンティティID Issuer URL
(OneLoginのアプリケーションのSSOタブを参照)
SSOサービスURL SAML 2.0 Endpoint (HTTP)
(OneLoginのアプリケーションのSSOタブを参照)
SLOサービスURL SLO Endpoint (HTTP)
(OneLoginのアプリケーションのSSOタブを参照)
ユーザー名属性 Custom parameter user_email
グループ名属性 Custom parameter group
ユーザー名属性 Custom parameter user_name
ユーザー姓属性 Custom parameter user_lastname

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

2. OneLoginから提供されたBase64証明書を追加します。

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

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

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

3. これらの設定を保存するには、更新ボタンをクリックします。

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

ユーザープロビジョニングを有効にすると、OneLoginでユーザーとそのロールを追加/更新し、それらを直ちにZabbixへプロビジョニングできるようになります。

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

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

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

正常にプロビジョニングされると、そのユーザーはZabbixのユーザー一覧に表示されます。