⚰️

Jenkinsを勉強する - ユーザー管理はしような

2023/02/18に公開

はじめに

前回は 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