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. 表示されるポップアップで、ZabbixでSAML 2.0を使用して認証するユーザーにアプリを割り当て、Save and go back をクリックします。
9. 「Sign On」タブに移動し、View Setup Instructions ボタンをクリックします。
設定手順が新しいタブで開きます。Zabbixの設定中は、このタブを開いたままにしておいてください。
Zabbixの設定
1. Zabbixで、SAML設定に移動し、Oktaのセットアップ手順に基づいて設定オプションを入力します。

| Zabbixのフィールド | Oktaの設定フィールド | サンプル値 |
|---|---|---|
| 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. 「Provisioning」タブに移動して、SCIM接続を設定します。
- 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 には、たとえば user_name のように、SAML属性名を入力します。

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で作成できません。
グループメンバーに関する情報は、何らかの変更が行われるたびに送信されます。