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

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

# 記載内容
1. 環境情報
1. Jenkinsのセットアップ
1. Jenkinsの初期設定（GUI）
1. Jenkinsの認証関連の確認
1. JenkinsのMWユーザの認証をOS認証に変更

# 1. 環境情報

```console:環境情報
[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のダウンロード&インストール

 https://pkg.jenkins.io/redhat-stable/

```console:yumリポジトリにJenkinsのリポジトリを追加
[root@localhost ~]# sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
```

```console:RPMパッケージの公開鍵をインポート
[root@localhost ~]# sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
```

```console:Jenkinsのインストール
[root@localhost ~]# yum install jenkins
```


```console: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）

## 初回ログイン
![スクリーンショット 2019-06-02 15.15.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142483/4a904808-dd89-27c2-6428-b64736c93665.png)

初回ログイン時のパスワードは以下ファイルに記載されている
 
> /var/lib/jenkins/secrets/initialAdminPassword

## ユーザの作成
![スクリーンショット 2019-06-02 15.18.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142483/1c250716-df8a-c8b5-a43f-f354fad56280.png)

## 初期インストールプラグインの設定
![スクリーンショット 2019-06-02 15.16.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142483/01597e0c-541d-4710-3521-b9cb1844ca11.png)

## 環境ログイン
![スクリーンショット 2019-06-02 15.20.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142483/a681564d-dd72-860f-d6ae-bdf841958031.png)

# 4. Jenkinsの認証関連の確認

## Jenkinsコンソールから認証情報の確認
![スクリーンショット 2019-06-02 15.27.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142483/73a85685-0106-fe99-c752-e0fe3d6a7345.png)

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

## OSユーザの確認
```cnsole
[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コンソールに入れるか確認

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

## Jenkinsに変更したパスワードでGUIログイン
![スクリーンショット 2019-06-02 15.36.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142483/460956a5-d7a2-eb91-3fca-6bdd1e5ca867.png)

## OS上で変更したパスワードではログインできない
![スクリーンショット 2019-06-02 15.36.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142483/4457429b-6c4b-1ddc-91e1-d6d747d31fc1.png)

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

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

[Jenkinsの管理] > [グローバルセキュリティの設定] > [ユーザ情報]
「Unix user/group database」に変更
![スクリーンショット 2019-06-02 15.45.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142483/37a27a37-e6cc-f952-8a2c-bf09c2c11220.png)

## OS上で変更したパスワードでログインできる事を確認
![スクリーンショット 2019-06-02 15.45.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142483/edf3f909-8d30-7edb-e9c5-5a033239b346.png)
![スクリーンショット 2019-06-02 15.45.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142483/d3af8518-7b27-4593-c364-526f51e58c14.png)

## 初回ログイン時にJenkinsのGUIで設定したパスワードではログインできない事を確認
![スクリーンショット 2019-06-02 15.51.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142483/81e39783-6230-655d-8035-22286b9d74f5.png)

![スクリーンショット 2019-06-02 15.51.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142483/2e6eb91b-00bb-7d20-b577-c39c6875a214.png)



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