Jenkinsを勉強する - ユーザー管理はしような
はじめに
前回は Jenkins構築からビルドまで をやりました。
今回は、「ユーザー管理」のお話です。
面倒ですが、エンジニア単位でユーザーを作成してアクセス制限をしましょう。
(当たり前なことです)
ユーザーの作成
Jenkinsの管理
をクリックします。
Securityセクションにある ユーザーの管理
をクリックします。
Create User
をクリックします。
入力してユーザーを作成しましょう。
ロールの設定
初期設定値では、ログインしたユーザー全てにJenkinsの権限がある状態なため権限設定を行います。
Jenkinsのデフォルト機能で権限設定を行うことが可能ですが、プラグインで便利なのがあるのでそれを使って管理してみます。
プラグインのインストール
Role-based Authorization Strategy
インストールを行うため、Jenkinsの管理
> プラグインの管理
> Available plugins
の順にクリックします。
検索ワードに Role-based Authorization Strategy
を入れて、インストールしましょう。
コンテナを起動後にログインし直して、プラグインを確認してみると有効化されていました。
Role-based Authorization Strategyの設定
Jenkinsの管理
> Security
> グローバルセキュリティの設定
の順にクリックします。
権限管理の値を Role-Based Strategy
に変えて保存します。
Manage and Assign Roles
が追加されているのでアクセスします。
Manage Roles
機能は以下の通りです。(公式から翻訳)
- Global roles
管理者、ジョブ作成者、匿名など、全体、エージェント、ジョブ、実行、表示、および SCM 権限をグローバルに設定できます。 - Item roles
ジョブ、パイプライン、フォルダーにアイテム固有のアクセス許可 (ジョブ、実行、資格情報など) を設定できるようにします。 - Agent roles
エージェント固有の権限を設定できるようにします。
例えば、
経験が浅いエンジニアに対して、本番環境のジョブ は触らせないといったケースがあったとします。
この場合、Global rolesでジョブの権限を設定しないことで達成できますが、そうするとその他のジョブが実行できなくなります。
そういった場合に、Item rolesを使ってSTG_*
やDEV_*
がついたジョブの操作を可能に出来ます。
ということで、適当な設定で作ってみました。
developer(Role)に関して補足
- Global roles
Readだけ出来るようにしています - Item roles
STG_ や DEV_ がついているジョブの操作を可能にしています
Assign Roles
先ほど作成したロールにユーザーを紐づけるだけです。
動作確認
意図した結果になっているかを確認します。
ということで、以下のようにジョブを作ってみました。
作成したユーザー(worker_01)でログインしてみます。
ジョブはGlobal rolesでRead
をつけているため全てが表示されている状態です。
ジョブごとに見ていきます。
-
前回記事で作成したジョブ
Global rolesの設定が機能している。
-
DEV_deploy01
Item rolesの設定が機能している。
-
STG_deploy_01
Item rolesの設定が機能している。
-
PROD_deploy_01
Global rolesの設定が機能している。
おわりに
プラグインの Role-based Authorization Strategy
を使ったユーザー管理を試してみました。
Item roles は正規表現が使えるのでいい感じに制御できそうです。
Agent rolesに関しては、コントローラーとエージェントを勉強してから追加しようと思います。
自分の環境で動作確認が行えたので結構満足しております。それでは。
Discussion