Okta を使用した SAML の設定
このセクションでは、Zabbix で SAML 2.0 認証とユーザーのプロビジョニングを有効にするために、Okta を設定するためのガイドラインを説明します。
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
httpsではなくhttpを使用してください。これにより、リクエスト内でacsパラメータが切り取られません。 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のフィールド | Oktaのセットアップフィールド | サンプル値 |
|---|---|---|
| IdPエンティティID | Identity Provider Issuer | |
| SSOサービスURL | Identity Provider Single Sign-On URL | |
| ユーザー名属性 | Attribute name | usrEmail |
| SPエンティティID | Audience URI | zabbix |
| グループ名属性 | Attribute name | groups |
| ユーザー名属性 | Attribute name | user_name |
| ユーザー姓属性 | Attribute name | user_lastname |
ユーザーグループとメディアのマッピングも設定する必要があります。
2. OktaのSAMLセットアップ手順で提供された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から読み込まれることに注意してください。
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 に、特権管理者権限を持つ有効な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で作成できません。
グループメンバーに関する情報は、変更が行われるたびに送信されます。