日本zabbixユーザー会LT_in_ZCJ2025

>100 Views

November 10, 25

スライド概要

profile-image

zabbixでいろいろやってるひと

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

HTTP認証機能を利用して Nginx+Oauth2-Proxy+Keycloakで 外部認証を行う t.tsuno フリーランスエンジニア Zabbix6.0 認定プロフェッショナル

2.

ZabbixのHTTP認証機能とは? ● 認証設定で有効にすると以下の3つのサーバー変数のどれかが ZabbixフロントエンドのPHPに渡されるとそのユーザーの アクセスを認証済みとして信用する機能 - AUTH_USER - REMOTE_USER - PHP_AUTH_USER 2

3.

なんで外部認証使うの? ● 複数のZabbixを運用しているけどアカウントをそれぞれで 管理するのが面倒 ● LDAPやSAMLを複数のZabbixにいちいち設定するのが面倒 ● 他のツールとSSOで認証を統合したい 3

4.

Keycloak/Oauth2-Proxy ● Keycloakとは Red HatがサポートをしているオープンソースOIDC IdP。開発は JBoss.orgコミュニティ。 自身が認証プロバイダ(IdP)として動作するだけでなく、 LDAP認証やSAMLのSPとして外部のIdPとの連携も提供。 ● OAuth2-Proxyとは 短縮URLを提供しているBitly社が開発したOSSで既存アプリに OIDCを提供するリバースプロキシ。 2018年以降コミュニティ主体で開発に移行。 4

5.

なんでこんな構成? ● Nginxでパスルーティングとかサーバー名で バックグラウンド振り分け (zabbix.example.com/X/、zabbix-X.example.comなど) ● X-Auth-UserでZabbixに渡すアカウント名をmap機能で加工 ● OSSのNginxは直接OIDCを扱えないのでOauth2-Proxyを利用 5

6.

認証の流れ keycloak ①認証のないアクセス ↓ ②Nginxがauth_requestでoauth2-proxyに問い合わせ401が返却される ↓ ③oauth2-proxyがkeycloakの認証画面にリダイレクト ↓ ④keycloakで認証したらコールバックにリダイレクト ↓ ⑤Nginxからoauth2-proxyのコールバックパスにリバースプロキシ oauth2-proxyがkeycloakから認証情報をもらってセッションクッキー発行 ↓ ⑥認証済みのアクセスが来たら、 ・oauth2-proxyがkeycloakからアカウント情報をもらってヘッダーで返す ・NginxでX-auth-userにZabbix内のアカウント名を入れリバースプロキシ ・ZabbixはX-auth-userを信用してログイン 6

7.

アカウントを作るのが面倒じゃない? ● keycloak側でグループやロールの設定をいれ、 NginxのmapでZabbixのアカウント名を紐づける auth_requestで oauth2-proxyから 返ってきたヘッダー情報 keycloakグループ情報を Zabbixアカウント名に変換 ● Zabbix内アカウントはロールとして権限管理の設定として扱い、 keycloakは認証とアカウント管理で責任分解するのがよい 7

8.

ここで落とし穴 ● ● 公式のzabbix-web-nginxコンテナの設定にX-Auth-Userを PHP-FPMに渡す設定がない! っていうか公式ドキュメントに書いてある - AUTH_USER - REMOTE_USER - PHP_REMOTE_USER が全部fastcgi_paramで設定されていない!!! (セキュリティ上の問題もあるので自分で入れろという方針?) 8

9.

解決策 ● 公式コンテナをFROMにして設定をいれて独自ビルド ● 修正した/etc/nginx/http.d/nginx.confをマウント ● /etc/nginx/fastcgi_paramsに入れたものをマウント 9

10.

まとめ ● ● ● ● アカウントの認証と権限設定を分けて管理できるようになるので Zabbix側の管理もわりと楽になる SaaSなどのIdPの連携設定も一か所にまとめられる PHPに正しくサーバー変数が渡るようにApache/Nginxを設定する のを忘れずに HTTP認証を設定したZabbixフロントエンドはセキュリティの面 から、認証プロキシ以外からのアクセスを遮断しておくこと 10