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 設定で追加できます。
    • その他のフィールドは必要に応じて入力します。
  • 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 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 nameVariable nameExternal 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 で作成できません。

グループメンバーに関する情報は、変更が行われるたびに送信されます。