無効化してしまったmasterレルムをもう一度有効化する

無効化してしまった master レルムをもう一度有効化する手順をメモ

始まり

マスタレルムはレルムをまたいだ設定が可能なため特殊なレルムになってます。
各レルムに管理者ユーザを作成しなくても、マスタレルムでの管理者がいれば何でもできるわけです。
そのため実運用時にはマスタレルムにログインできないようにしたいなと考えました。

しかし、各レルムに管理者ユーザーがいない状態で安易に無効化してしまったため、
全てのレルム設定ができなくなりました。

復旧

調査

まず復旧するためにできる方法を調べてみました。
結論から言うと、GUIや管理シェル群での復旧は難しそうであること
復旧するにはDBを直接編集する必要があることがわかりました

見つかった資料

https://issues.jboss.org/browse/KEYCLOAK-5436
http://lists.jboss.org/pipermail/keycloak-user/2017-September/011770.html
https://swazzy.com/2019/02/20/disabling-the-master-realm/

復旧作業

DBを弄ります

今回は postgreSQL を使用していたためポスグレでログインします

psql -h <keycloak-db> -p 5432 -U <user> keycloak
password:

keycloak=> update realm set enabled=true where id = 'master';
UPDATE 1

keycloak-> \q

再起動します

keycloak を再起動します。 自分はupstartで動かしているためこんな感じになります

sudo initctl restart keycloak

まとめ

  • 各レルムに管理者ユーザーは作っておこう
  • マスタレルムを無効化するのは復旧が面倒すぎるためあまりおすすめできない
  • マスタレルムへのアクセス制御はレルムの無効化以外の方法を模索しよう