JenkinsのLDAP認証設定とジョブ毎の権限設定

概要

Jenkinsは認証設定を行っていないと誰でも全ての操作が出来ます。

1人で使う分には全く問題ないのですが会社やチームなど複数人で使う共用Jenkinsサーバーの場合
ジョブを間違って実行してしまったり消してしまったりなど操作ミスが起きてしまう可能性が出てきます。

そこでJenkinsとLDAPサーバーを連携させて
所属チーム毎&ジョブ毎に認証・権限設定を行いたいと思います。

やりたいこと

  1. Jenkinsサーバー管理者グループに所属するユーザは全権限を持つ
  2. 各チームメンバーはジョブの作成が自由に出来、作成したジョブは参照・実行・削除などなんでも出来るようにする
  3. 他チームのジョブは実行・削除どころか参照すら出来ない


今回の例では

Jenkinsサーバー管理者グループ名 jenkinsadmin
チーム名(グループ名) developers

としています。

LDAP設定

ユーザ及びグループはLDAPサーバーに設定してあることが前提になっています。

LDAPのユーザとグループのエントリー情報は以下を参考に作成してください。

ユーザ
objectClass inetOrgPerson


グループ
objectClass groupOfNames
Attribute member


グローバルセキュリティの設定

まず、LDAPの設定を行います。

[Jenkinsの管理]をクリック

f:id:tsunokawa:20150121144033p:plain

[セキュリティを設定]をクリック

f:id:tsunokawa:20150121144052p:plain
セキュリティ設定を有効にします。

LDAP設定画面を展開

f:id:tsunokawa:20150121144103p:plain

LDAP設定

f:id:tsunokawa:20150121144113p:plain
環境に合わせて適宜変更してください。

サーバー ldap.example.com
root DN dc=example,dc=com
User search base ou=Users
User search filte uid={0}
Group search base ou=Groups
Group search filter 空欄
Group membership filter member={0}
管理者のDN cn=Manager, dc=example,dc=com
管理者のパスワード **********



設定の保存

f:id:tsunokawa:20150121145404p:plain

まずここまで出来たら[保存]ボタンを押して設定を保存してください。
この時[権限管理]の設定が[全員に許可]になっていることを必ず確認してください。

[権限管理]設定

f:id:tsunokawa:20150121152830p:plain
再びグローバルセキュリティの設定画面に戻り行列による権限設定(プロジェクト単位)を選択して設定します。

LDAPサーバーに登録のある

  • jenkinsadminグループ
  • developersグループ

をそれぞれ追加しています。

追加後権限設定をチェックして権限設定を行います。


上記例の場合、

  • jenkinsadminグループは全権限を許可
  • developersグループは[全体]のRead、[ジョブ]のCreateのみ許可

という設定になっています。

それぞれ、
[全体]のReadはJenkinsの管理画面のログインを許可
[ジョブ]のCreateはジョブの作成を許可
という意味です。
上記以外の権限はこれから説明するジョブ毎の権限設定で個別に許可設定を行います。

ジョブ毎に権限を設定

f:id:tsunokawa:20150121174216p:plain
権限設定を行いたいジョブの設定画面を開きます。


f:id:tsunokawa:20150121174403p:plain
ジョブの設定画面から[権限設定(プロジェクト単位)の有効化]のチェックを入れて権限の設定を行います。
これでこのジョブはdevelopersグループに所属するユーザは決められた権限の操作が可能になります。
developersグループ以外のユーザはこのジョブは見えませんし実行も削除も出来ません。


設定は以上です。

■参考
Effy's Blog: Ldap security for Jenkins CI