Keycloakでいろいろ認証してみるシリーズ第4弾
今回はNetBox。ログイン時にユーザー名・パスワードでなく、Keycloakを使って認証してみよう、というもの。
環境は以下の通り
- NetBox Community v4.5.3-Docker-4.0.1 / インストールは公式Helmチャート netbox-8.0.4
- Keycloak: 26.5.3
※ 全てKubernetesの同一クラスタ上で動作し、Ingressでwebアクセスできる構成
Keycloak
いつもの感じでクライアント作成する。
- Client type: OpenID Connect
- Client ID:
netbox - Name:
netbox - Client authentication: check
- Root URL:
https://netbox.example.org/ - Valid redirect URIs: 空欄で良い (自動的にセットされる)
上記項目でclientを作成したら、追加でマッピング設定も行う。
上部タブメニューの「Client scopes」で「netbox-dedicated」リンク、「Configure a new mapper」ボタン押下、リストから「Audience」選択。
- Name: mapper(適当)
- Included Client Audience: netbox
- Add to ID token: check
これを入力したら「Save」押下。
Secretの値等をメモする。
ちなみに、これまでのAWXやHahiCorp Vaultと異なり、マッピング設定が無いと以下のエラーが出るので注意。
<class 'jwt.exceptions.InvalidAudienceError'> Audience doesn't match
NetBox
HelmでインストールしたCommunity版は設定のUIが無いため、HelmのパラメタのremoteAuthに設定して再デプロイを行う。
helm upgradeを実行すればConfigMapが更新・Podが再作成され、Keycloak認証が有効になる。
ただ、現在のバージョンのHelmチャートのはリモート認証を有効にするための設定(remoteAuth)は設定キーに用意されているが、Keycloak特有の設定は無い(LDAPの設定しか無い)ため、Keycloak固有設定はextraConfigに設定する。
Helmチャートのパラメタ(values.yaml)
Keycloak認証を有効にするための設定(抜粋)は以下の通り。
以下はKeycloakのRealm名がlab-ssoの場合のパス(URL)
remoteAuth: enabled: true backends: - social_core.backends.keycloak.KeycloakOAuth2 autoCreateUser: true defaultGroups: - netbox-users extraConfig: - values: SOCIAL_AUTH_KEYCLOAK_KEY: "netbox" SOCIAL_AUTH_KEYCLOAK_SECRET: SOCIAL_AUTH_KEYCLOAK_PUBLIC_KEY: SOCIAL_AUTH_KEYCLOAK_AUTHORIZATION_URL: "https://keycloak.example.org/realms/lab-sso/protocol/openid-connect/auth" SOCIAL_AUTH_KEYCLOAK_ACCESS_TOKEN_URL: "https://keycloak.example.org/realms/lab-sso/protocol/openid-connect/token" SOCIAL_AUTH_VERIFY_SSL: false
設定項目は以下の通り。
| キー | 値 |
|---|---|
| SOCIAL_AUTH_KEYCLOAK_KEY | Keycloakで作成したClient ID |
| SOCIAL_AUTH_KEYCLOAK_SECRET | 指定Client IDのSecret |
| SOCIAL_AUTH_KEYCLOAK_PUBLIC_KEY | [Realm settings]->[Keys]にあるrsa-generatedのPublic Key |
| SOCIAL_AUTH_KEYCLOAK_AUTHORIZATION_URL | 上記の通り |
| SOCIAL_AUTH_KEYCLOAK_ACCESS_TOKEN_URL | 上記の通り |
設定キーの細かい仕様は以下参照。
python-social-auth.readthedocs.io
python-social-auth.readthedocs.io
NetBoxのドキュメント内のKeycloak連携については(2026年3月時点では)情報が少ない。リストにKeycloakの名前はあるけどね。
権限設定
Keycloak認証でログインしたユーザーはデフォルトでは何も権限が付与されていない。
ログインした時点で何らかの権限を付与するには、 NetBox上に事前に権限付与したグループを作成しておき、そのグループに属するように設定 させると楽。
以下は「Keycloakで認証したユーザーはnetbox-usersグループに自動的に所属」という設定。
ただしこのグループは事前に作成しておく必要がある。また、このグループに対して操作可能な権限も設定しておく。
remoteAuth: defaultGroups: - netbox-users
これでNetBoxのログイン画面にKeycloak認証のボタンが表示され、このボタン押下でKeycloak認証が可能になる

ちなみにautoCreateGroupsやsuperuserGroupsというキーはあるけど、この構成での使い方はわからなかった。。名前からしてグループの事前作成が不要っぽいんだけどね。そういう動作はしなかった。
全体の設定は以下参照