JenkinsログインユーザをOS認証に変更する方法


エンタープライズ環境では、セキュリティ要件からOSやミドルウェア(MW)ユーザのパスワードについて定期的な変更運用が求められることがあると思います。
OSに関しては企業内で利用する種類も限定的であり、パスワード変更の仕組みも標準化が比較的容易であると考えますが、MWに関しては利用するMW毎に独自のGUIやCLIが存在し、それぞれ独自にパスワード変更の仕組みを作る必要が出てきます。
MWユーザの認証方式をOS認証にする事ができれば、OSのユーザ管理ポリシーと平仄を合わせる事ができ、管理負荷を削減する事が可能です。
以下では、Jenkinsのログインユーザ(管理ユーザ)の認証をOS認証に変更する方法と動作確認した内容を記載します。

記載内容

  1. 環境情報
  2. Jenkinsのセットアップ
  3. Jenkinsの初期設定(GUI)
  4. Jenkinsの認証関連の確認
  5. JenkinsのMWユーザの認証をOS認証に変更

1. 環境情報

環境情報
[root@localhost ~]# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 7.6 (Maipo)
[root@localhost ~]# 
[root@localhost ~]# uname -a 
Linux localhost.localdomain 3.10.0-957.1.3.el7.x86_64 #1 SMP Thu Nov 15 17:36:42 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost ~]# 

2. Jenkinsのセットアップ

Jenkins公式サイトの手順に従いJenkinsのRPMのダウンロード&インストール

yumリポジトリにJenkinsのリポジトリを追加
[root@localhost ~]# sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
RPMパッケージの公開鍵をインポート
[root@localhost ~]# sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
Jenkinsのインストール
[root@localhost ~]# yum install jenkins
Jenkinsの起動&起動確認
[root@localhost ~]# systemctl start jenkins
[root@localhost ~]# 
[root@localhost ~]# systemctl status jenkins
● jenkins.service - LSB: Jenkins Automation Server
   Loaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled)
   Active: active (running) since 日 2019-06-02 15:05:24 JST; 6s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 3925 ExecStart=/etc/rc.d/init.d/jenkins start (code=exited, status=0/SUCCESS)
    Tasks: 25
   CGroup: /system.slice/jenkins.service
           └─3944 /etc/alternatives/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=tr...

 6月 02 15:05:22 localhost.localdomain systemd[1]: Starting LSB: Jenkins Automation Server...
 6月 02 15:05:22 localhost.localdomain runuser[3930]: pam_unix(runuser:session): session opene...0)
 6月 02 15:05:24 localhost.localdomain jenkins[3925]: Starting Jenkins [  OK  ]
 6月 02 15:05:24 localhost.localdomain systemd[1]: Started LSB: Jenkins Automation Server.
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost ~]#

3. Jenkinsの初期設定(GUI)

初回ログイン

初回ログイン時のパスワードは以下ファイルに記載されている

/var/lib/jenkins/secrets/initialAdminPassword

ユーザの作成

初期インストールプラグインの設定

環境ログイン

4. Jenkinsの認証関連の確認

Jenkinsコンソールから認証情報の確認

初回ログイン時に作成したjenkinsユーザのみ存在

OSユーザの確認

[root@localhost ~]# cat /etc/passwd | grep jenkins
jenkins:x:993:989:Jenkins Automation Server:/var/lib/jenkins:/bin/false
[root@localhost ~]# 

初回ログイン時に作成した「jenkins」ユーザがOSユーザとしても存在

OSユーザ「jenkins」のパスワードを変更し、Jenkinsコンソールに入れるか確認

[root@localhost ~]# passwd jenkins
ユーザー jenkins のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。
[root@localhost ~]# 

Jenkinsに変更したパスワードでGUIログイン

OS上で変更したパスワードではログインできない

5. JenkinsのMWユーザの認証をOS認証に変更

Jenkinsコンソールから以下の設定変更を実施

[Jenkinsの管理] > [グローバルセキュリティの設定] > [ユーザ情報]
「Unix user/group database」に変更

OS上で変更したパスワードでログインできる事を確認


初回ログイン時にJenkinsのGUIで設定したパスワードではログインできない事を確認

上記の通り設定変更する事で、JenkinsのMWユーザのパスワード管理をOSユーザのパスワード管理の仕組みに合わせる事が可能になると思います。
内容に誤り等があればご指摘ください。