KeycloakのSAML SSOでJIRAやConfluenceにログインする
KeycloakとJIRAやConfluenceでSAML SSOを設定する方法を説明します。KeycloakでID管理を行いながら、JIRAやConfluenceにSSOできるので便利です。
TL;DR
- Keycloakはオープンソースの統合ID管理ツールです。OpenID ConnectやSAMLによる認証を提供しています。(こちらの記事が参考になります)
- JIRA Softwareはプロプライエタリなバックログ管理ツールです。アドオンを利用することでSAMLによるSSOに対応します。
- ConfluenceはプロプライエタリなWikiツールです。アドオンを利用することでSAMLによるSSOに対応します。
- Keycloakとの連携にはSAMLを利用します。
JIRA Software
Keycloakで新しいClientを追加します。認証連携したいユーザがいるRealmで作業してください。
- クライアントID:
https://jira.example.com:443/jiraSAML
- クライアントプロトコル: saml
- クライアント署名が必須: OFF
- ルート URL:
https://jira.example.com
- 有効なリダイレクト URI:
https://jira.example.com/*
- マッパー
Atlassian Marketplaceでは多くのSAMLアドオンが公開されています。ここでは無償で公開されている下記のアドオンをインストールします。
なお、このアドオンは最新のJIRAをサポートしていないと表示されますが、アドオンのJARをダウンロードし、JIRAの管理画面からJARをインストールすると動くようです。
JIRAの管理画面から「SAML 2.0 Plugin Configuration」を開き、以下を設定します。
- Login URL:
https://keycloak.example.com/auth/realms/YOUR_REALM/protocol/saml
- UID Attribute:
NameID
NameID
を指定すると、Keycloakのユーザ名をそのままJIRAのユーザ名に対応付けます。
- X.509 Certificate:
- Entity ID:
https://keycloak.example.com/auth/realms/YOUR_REALM
- Auto-create User: ON
- JIRA側にユーザが存在しない場合は自動的に作成します。
- Default Group for Auto-created Users:
jira-software-users
- ユーザを自動的に作成する場合のデフォルトグループを設定します。デフォルトは一般グループにしておき、必要に応じて管理者グループを割り当てるとよいでしょう。
シークレットウィンドウでJIRAを開いてみましょう。 Use Corporate Login というボタンが追加で表示されるはずです。Keycloakを経由してJIRAにログインできれば成功です。
なお、JIRAのデフォルトでは一般権限から管理者権限に昇格する際にパスワードを確認されます。SSOでログインしたユーザはパスワードを持っていないため、このままでは管理者権限に昇格できない問題があります。一般権限から管理者権限に昇格する際のパスワード確認を無効化するため、JVM引数に -Djira.websudo.is.disabled=true
を追加しておきます*1。
- name: JAVA_OPTS value: "-Djira.websudo.is.disabled=true"
Confluence
上記と同様に、Keycloakで新しいClientを追加します。
- クライアントID:
https://confluence.example.com:443/confluenceSAML
- クライアントプロトコル: saml
- クライアント署名が必須: OFF
- ルート URL:
https://confluence.example.com
- 有効なリダイレクト URI:
https://confluence.example.com/*
- マッパー
Atlassian Marketplaceでは多くのSAMLアドオンが公開されています。ここでは無償で公開されている下記のアドオンをインストールします。
Confluenceの管理画面から「SAML 2.0 Plugin Configuration」を開き、以下を設定します。
- Login URL:
https://keycloak.example.com/auth/realms/YOUR_REALM/protocol/saml
- Logout URL:
https://keycloak.example.com/auth/realms/YOUR_REALM/protocol/saml
- X.509 Certificate:
- Entity ID:
https://keycloak.example.com/auth/realms/YOUR_REALM
- Redirect URL:
https://confluence.example.com
- Auto-create User: ON
- Confluence側にユーザが存在しない場合は自動的に作成します。
- Default Group for Auto-created Users:
confluence-users
- ユーザを自動的に作成する場合のデフォルトグループを設定します。デフォルトは一般グループにしておき、必要に応じて管理者グループを割り当てるとよいでしょう。
シークレットウィンドウでConfluenceを開いてみましょう。 Use Corporate Login というボタンが追加で表示されるはずです。Keycloakを経由してConfluenceにログインできれば成功です。
なお、Confluenceのデフォルトでは一般権限から管理者権限に昇格する際にパスワードを確認されます。JIRAと同様に一般権限から管理者権限に昇格する際のパスワード確認を無効化しておきます。Confluenceの管理画面を開き、Security ConfigurationでSecure administrator sessionsのチェックを外します*2。
まとめ
kubectl completionの遅延実行によるzshの起動時間短縮
kubectl
にはシェルの補完機能が用意されています。 .zshrc
で補完機能を有効化するとzshの起動に時間がかかるため、補完機能の有効化を遅延実行するようにしてみました。
具体的には、 kubectl
コマンドの初回実行時のみ source <(kubectl completion zsh)
を実行します。
function kubectl () { local kubectl="$(whence -p kubectl 2> /dev/null)" [ -z "$_lazy_kubectl_completion" ] && { echo "\e[31m$0 completion zsh\e[0m" > /dev/stderr source <("$kubectl" completion zsh) _lazy_kubectl_completion=1 } "$kubectl" "$@" }
初回実行時:
% time ( kubectl ) kubectl completion zsh kubectl controls the Kubernetes cluster manager. ... ( kubectl; ) 0.98s user 0.38s system 115% cpu 1.168 total
2回目以降:
% time ( _lazy_kubectl_completion=1 kubectl ) kubectl controls the Kubernetes cluster manager. ... ( _lazy_kubectl_completion=1 kubectl; ) 0.13s user 0.02s system 111% cpu 0.141 total
zshの起動に1秒近くかかってしまう問題を解決できました。もっとスマートな解決法を知っていたら教えてください。
- 作者: Kelsey Hightower,Brendan Burns,Joe Beda,松浦隼人
- 出版社/メーカー: オライリージャパン
- 発売日: 2018/03/22
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
2017年の振り返り
2017年のアウトプットを振り返り。
ブクマとスターを合わせて多い順から。
2018年もよろしくお願いします。