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 設定で追加できます。
    • その他のフィールドは、必要に応じて設定してください。
  • 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. IdP証明書をダウンロードします。 次のコマンドを実行して、これに644の権限を設定します:

chmod 644 idp.crt

10. 「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セットアップ手順で提供される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 nameVariable nameExternal 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 に作成できません。

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