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のユーザー一覧に表示されます。
