13 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
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. "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セットアップ手順で提供される証明書をダウンロードし、ui/conf/certs フォルダに idp.crt として配置します。
次のコマンドを実行して、権限を644に設定します:
chmod 644 idp.crt
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 でユーザーを作成できません。
グループメンバーに関する情報は、変更が行われるたびに送信されます。