Jenkins2でジョブごとに権限を設定する

2016年6月23日

Jenkins2 ジョブ毎に権限設定する

前回は Jenkins2 をインストールする方法と、認証周りの設定をまとめました。

Jenkins2初期設定まとめ
Jenkins2インストールと初期設定〜ユーザ、権限、git連携〜

Jenkins2 を試しました。今回から 3 回にわたって Jenkins2 のメモが続きます。初回は Jenkins2 ...

続きを見る

Jenkins を運用してプロジェクトやユーザが増えてくると、プロジェクト(ジョブ)ごとに細かい権限設定をしたいケースが出てくると思います。例えば「プロジェクト A は管理者にしか実行できない」とか「プロジェクト B は管理者以外のユーザは参照のみ」といった具合です。

Jenkins デフォルトではこれらの権限設定ができないので、Role-based Authorization Strategy Plugin というプラグインで対応します。

このプラグインを使うと、トップ画面でログインユーザ全員に表示されていたプロジェクトが

Jenkins2 すべてのプロジェクト

ログインしたユーザの権限に応じて、表示を制限したりできるようになります。

Jenkins2 開発プロジェクト

目次

  1. Role-based Authorization Strategy Plugin をインストール
  2. Role-Based Strategy を有効化
  3. Global roles を登録する
  4. Project roles を登録する
  5. 作成した Role をユーザに関連付ける
  6. 権限を確認

Role-based Authorization Strategy Plugin をインストール

プロジェクト毎の権限設定できるようにするプラグイン Role-based Authorization Strategy Plugin をインストールします。

Jenkinsの管理 > プラグインの管理

  1. 「利用可能」タブを選択
  2. 右上の検索窓に「role based」と入力
  3. 表示された「Role-based Authorization Strategy Plugin」にチェック
  4. 「ダウンロードして再起動後にインストール」をクリック
Jenkins2 Role-based strategy plugin インストール

インストール完了後 Jenkins を再起動します。

Role-Based Strategy を有効化

インストールした Role-based Authorization Strategy Plugin を有効にします。

Jenkinsの管理 > グローバルセキュリティの設定

  1. 「セキュリティを有効化」にチェック
  2. 権限管理 > 「Role-Based Strategy」を選択
Jenkins2 Role-based Strategy を有効化

Role-Based Strategy を有効化すると、Jenkinsの管理に Manage and Assign Roles というメニューが現れます。

Jenkins2 Manage and Assign Roles

Global roles を登録する

表示された Manage and Assign Roles メニューから権限の設定を行います。

Jenkinsの管理 > Manage and Assign Roles > Manage Roles > Global roles

Global roles を登録します。

Jenkins2 Global role 登録

上記の例では admin と dev-operator という Role を定義しています。admin は全権限、dev-operator は全体の Read 権限のみ持っています。dev-operator は開発環境の作業ユーザ用の Role として定義しており、この後の Project Roles でプロジェクト別の設定を行います。

Project roles を登録する

Global roles のすぐ下にある Project roles を登録します。

Jenkinsの管理 > Manage and Assign Roles > Manage Roles > Project roles

Jenkins2 Project role 登録

上記の例では、dev-operator という Role に「dev-」で始まるプロジェクトの閲覧・実行・キャンセル権限を与えています。今回は Pettern に dev-.* という正規表現を書いて複数のプロジェクトをまとめて設定していますが、プロジェクト名を個別に設定することもできます。登録した Role はこの後ユーザに関連付けます。

Project roles より、Global roles のほうが優先されるので、Global roles と設定が重複しないようにしましょう。

作成した Role をユーザに関連付ける

作成した Global roles と Project roles をユーザに関連付けします。

Jenkinsの管理 > Manage and Assign Roles > Assign Roles

Jenkins2 Global roles とユーザを紐付け
Jenkins2 Project roles とユーザを紐付け

上記の例では、admin と suzuki ユーザに管理者権限(admin)として全権限を与え、それ以外のユーザは作業ユーザ(dev-operator)として開発環境用の権限を与えています。

権限を確認

では、ここまでの設定を確認してみましょう。管理者権限の suzuki ユーザでログインすると、すべてのプロジェクトが表示されます。

Jenkins2 すべてのプロジェクト

次に、作業ユーザの sato ユーザでログインすると dev- で始まるプロジェクトのみが表示されていることが確認できます。

Jenkins2 開発プロジェクト

詳細画面を開くと、プロジェクトの実行しかできず、設定変更や削除はできないことが確認できます。

まとめ

ユーザに対し、プロジェクト毎に細かい権限設定をする方法を紹介しました。次回は Jenkins2 の新機能 Pipeline を紹介します。

Jenkins2 JenkinsfileとPipelineで複数日ランチの自動テスト
Jenkins2のPipelineとJenkinsfileの使い方

前回は Jenkins2 でジョブごとに権限を設定する方法を紹介しました。 今回は Jenkins2 になって追加された ...

続きを見る

-技術ブログ
-