概要
Jenkinsは認証設定を行っていないと誰でも全ての操作が出来ます。
1人で使う分には全く問題ないのですが、
会社やチームなど複数人で使う共用Jenkinsサーバーの場合、
ジョブを間違って実行してしまったり消してしまったりなど操作ミスが起きてしまう可能性が出てきます。
そこでJenkinsとLDAPサーバーを連携させて所属チーム毎&ジョブ毎に認証・権限設定を行いたいと思います。
やりたいこと
- Jenkinsサーバー管理者グループに所属するユーザは全権限を持つ
- 各チームメンバーはジョブの作成が自由に出来、作成したジョブは参照・実行・削除などなんでも出来るようにする
- 他チームのジョブは実行・削除どころか参照すら出来ない
今回の例では
Jenkinsサーバー管理者グループ名 | jenkinsadmin |
---|---|
チーム名(グループ名) | developers |
としています。
LDAP設定
ユーザ及びグループはLDAPサーバーに設定してあることが前提になっています。
LDAPのユーザとグループのエントリー情報は以下を参考に作成してください。
ユーザ
objectClass | inetOrgPerson |
---|
グループ
objectClass | groupOfNames |
---|---|
Attribute | member |
グローバルセキュリティの設定
まず、LDAPの設定を行います。
[Jenkinsの管理]をクリック
[セキュリティを設定]をクリック
セキュリティ設定を有効にします。
LDAP設定画面を展開
LDAP設定
環境に合わせて適宜変更してください。
サーバー | 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 |
管理者のパスワード | ********** |
設定の保存
まずここまで出来たら[保存]ボタンを押して設定を保存してください。
この時[権限管理]の設定が[全員に許可]になっていることを必ず確認してください。
[権限管理]設定
再びグローバルセキュリティの設定画面に戻り行列による権限設定(プロジェクト単位)
を選択して設定します。
LDAPサーバーに登録のある
- jenkinsadminグループ
- developersグループ
をそれぞれ追加しています。
追加後権限設定をチェックして権限設定を行います。
上記例の場合、
- jenkinsadminグループは全権限を許可
- developersグループは[全体]のRead、[ジョブ]のCreateのみ許可
という設定になっています。
それぞれ、
[全体]のReadはJenkinsの管理画面のログインを許可
[ジョブ]のCreateはジョブの作成を許可
という意味です。
上記以外の権限はこれから説明するジョブ毎の権限設定で個別に許可設定を行います。
ジョブ毎に権限を設定
権限設定を行いたいジョブの設定画面を開きます。
ジョブの設定画面から[権限設定(プロジェクト単位)の有効化]のチェックを入れて権限の設定を行います。
これでこのジョブはdevelopersグループに所属するユーザは決められた権限の操作が可能になります。
developersグループ以外のユーザはこのジョブは見えませんし実行も削除も出来ません。
設定は以上です。