13 OktaによるSAMLのセットアップ
このセクションでは、Oktaを設定して、ZabbixのSAML 2.0認証とユーザーのプロビジョニングを有効にするためのガイドラインを提供します。
Oktaの設定
1. https://developer.okta.com/signup/ にアクセスし、アカウントを登録またはサインインします。
2. OktaのWebインターフェースで Applications → Applications に移動します。
3. Create App Integration をクリックします。

サインイン方法として "SAML 2.0" を選択し、Next をクリックします。
4. 一般設定でアプリ名を入力し、Next をクリックします。
5. SAML設定で、以下の値を入力してから Next をクリックします。

-
General で次を追加します:
- Single sign-on URL:
http://<your-zabbix-url>/zabbix/index_sso.php?acs
acsパラメータがリクエストから切り取られないように、"https" ではなく "http" を使用する点に注意してください。 Use this for Recipient URL and Destination URL チェックボックスもオンにする必要があります。 - Audience URI (SP Entity ID):
zabbix
この値は、SAMLアサーション内で一意のサービスプロバイダー識別子として使用されます(一致しない場合、操作は拒否されます)。 このフィールドにはURLまたは任意の文字列を指定できます。 - Default RelayState:
このフィールドは空欄のままにします。カスタムリダイレクトが必要な場合は、Zabbixの Users > Users 設定で追加できます。 - その他のフィールドは必要に応じて入力します。
- Single sign-on URL:
-
Attribute Statements/Group Attribute Statements で次を追加します:

これらの属性ステートメントは、Zabbixと共有されるSAMLアサーションに挿入されます。
ここで使用している属性名は任意の例です。 別の属性名を使用してもかまいませんが、ZabbixのSAML設定にある各フィールド値と一致している必要があります。
JITユーザープロビジョニングを使わずにZabbixへのSAMLサインインを設定する場合は、email属性のみが必要です。
暗号化接続を使用する予定がある場合は、秘密鍵と公開鍵の暗号化証明書を生成し、公開証明書をOktaにアップロードします。 証明書のアップロードフォームは、Assertion Encryption を "Encrypted" に設定すると表示されます(このパラメーターを見つけるには Show Advanced Settings をクリックします)。
6. 次のタブで "I'm a software vendor. I'd like to integrate my app with Okta" を選択し、Finish をクリックします。
7. 新しく作成したアプリケーションの "Assignments" タブに移動し、Assign ボタンをクリックしてから、ドロップダウンから Assign to People を選択します。

8. 表示されるポップアップで、SAML 2.0 を使用してZabbixに認証するユーザーにアプリを割り当て、Save and go back をクリックします。
9. IdP証明書をダウンロードします。 次のコマンドを実行して、権限を644に設定します:
chmod 644 idp.crt
10. "Sign On" タブに移動し、View Setup Instructions ボタンをクリックします。
セットアップ手順が新しいタブで開かれます。Zabbixの設定中はこのタブを開いたままにしてください。
Zabbixの設定
1. Zabbixで、SAML設定に移動し、Oktaのセットアップ手順に基づいて設定オプションを入力します。

| Zabbix field | Setup field in Okta | Sample value |
|---|---|---|
| IdP entity ID | Identity Provider Issuer | |
| SSO service URL | Identity Provider Single Sign-On URL | |
| Username attribute | Attribute name | usrEmail |
| SP entity ID | Audience URI | zabbix |
| Group name attribute | Attribute name | groups |
| User name attribute | Attribute name | user_name |
| User last name attribute | Attribute name | user_lastname |
ユーザーグループとメディアのマッピングも設定する必要があります。
2. OktaのSAMLセットアップ手順で提供される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から読み取られます。
3. OktaでAssertion Encryptionが"Encrypted"に設定されている場合は、ZabbixでもEncryptパラメータの"Assertions"チェックボックスをオンにします。
4. これらの設定を保存するには、Updateボタンをクリックします。
SCIMプロビジョニング
1. SCIMプロビジョニングを有効にするには、Oktaのアプリケーションで "General" -> "App Settings" に移動します。
Enable SCIM provisioning チェックボックスをオンにします。
その結果、新しい Provisioning タブが表示されます。
2. SCIM接続を設定するには、"Provisioning" タブに移動します。
- SCIM connector base URL には ZabbixのWebインターフェースへのパスを指定し、末尾に
api_scim.phpを追加します。つまり、次のようになります:
https://<your-zabbix-url>/zabbix/api_scim.php - Unique identifier field for users:
email - Authentication mode:
HTTP header - Authorization には、Super admin権限を持つ有効なAPIトークンを入力します

認証に問題がある場合は、Authorization header forwarding を参照してください。
3. 接続をテストするには、Test Connector Configuration をクリックします。
すべて正しく設定されていれば、成功メッセージが表示されます。
4. "Provisioning" -> "To App" で、次のチェックボックスがオンになっていることを確認します。
- Create Users
- Update User Attributes
- Deactivate Users
これにより、これらの要求タイプが Zabbix に送信されるようになります。
5. SAMLで定義されているすべての属性がSCIMでも定義されていることを確認します。
アプリケーションのプロファイルエディタには、"Provisioning" -> "To App" で Go to Profile Editor をクリックしてアクセスできます。
Add Attribute をクリックします。
Display name、Variable name、External name には、SAML属性名を入力します。たとえば user_name です。

External namespace はユーザースキーマと同じである必要があります: urn:ietf:params:scim:schemas:core:2.0:User
6. アプリケーションの "Provisioning" -> "To App" -> "Attribute Mappings" に移動します。
下部の Show Unmapped Attributes をクリックします。
新しく追加した属性が表示されます。
7. 追加した各属性をマッピングします。

8. "Assignments" タブでユーザーを追加します。
事前にユーザーは Directory -> People で追加されている必要があります。
これらの割り当てはすべて、Zabbixへの要求として送信されます。
9. "Push Groups" タブでグループを追加します。
ZabbixのSAML設定にあるユーザーグループのマッピングパターンは、ここで指定したグループと一致している必要があります。
一致しない場合、Zabbixでユーザーを作成できません。
グループメンバーに関する情報は、変更が行われるたびに送信されます。