目的
Jenkinsのセキュリティ対応。
デフォルトの状態だと、JenkinsのURLにアクセス出来る人であれば、全ての機能をいじることが可能で危険すぎるため、以下のセキュリティ対策を行います。
- ユーザーアカウントを作成してログイン必須にする。
- ユーザーに権限を付与して行動を制限する。
手順メモ
権限付与プラグインのインストール
-
メニューから、「Jenkinsの管理」->「プラグインの管理」を選択して、プラグインマネージャーページを開く。
-
「利用可能」タブ内の「その他(security)」カテゴリにある「Role-based Authorization Strategy」をチェックして、「再起動せずにインストール」ボタンを押す。
これでプラグインがインストールされます。
試した感じだと、このプラグインを反映させるために、Jenkinsの再起動は必要なかったです。
プラグインを有効化
- メニュー「Jenkinsの管理」-> 「グローバルセキュリティの設定」を選択して、グローバルセキュリティの設定ページを開く。
- 「セキュリティを有効化」にチェックを入れる。
- チェックを入れると「アクセス制御」という項目が追加されるので、「ユーザー情報」で「Jenkinsのユーザーデータベース」を選択する。
これによりユーザーの登録を行うことが可能になります。 - 見知らぬユーザーにサインアップされないように、「ユーザーにサインアップを許可」のチェックを外す。
- 「アクセス制御」内の「権限管理」で「Role-Based Strategy」を選択する。
これにより、インストールした「Role-based Authorization Strategy」プラグインが有効になり、権限設定可能になります。 - 「保存」ボタンを押して設定を反映する。
ユーザーを登録
権限を付与するテスト用ユーザーを作成します。
例として、admin権限を所持させるtest1と、閲覧・ジョブ実行権限を所持させるtest2を作成します。
- セキュリティを有効にして保存ボタンを押すとユーザー登録ページが表示されるので、権限確認用に「test1」ユーザーを作成する。
権限の作成
プラグインをインストールした直後は、全てのアクションが可能なadmin権限しか無いので、その他の権限を作成します。
例として、閲覧と既存ジョブが実行可能なoperator権限を作成します。
- メニュー「Jenkinsの管理」->「Manage and Assign Roles」->「Manage Roles」を選択して、Manage Rolesページを開く。
- 「Global roles」の「Role to add」に「operator」と入力してAddボタンを押す。
- 一覧にoperatorが追加されるので、以下の権限にチェックする。
- 全体のRead
- ジョブのBuild, Cancel, Read
- ビューのRead
- 「Save」ボタンを押して権限設定を反映させる。
ユーザーに権限を付与
作成したユーザーと権限を紐付けます。
例として、test1ユーザーにadmin権限を、test2ユーザーにoperator権限を付与します。
それと、本来必要ないですが、id入力をミスした例として、存在していないtest3ユーザーにも権限を付与します。
- メニュー「Jenkinsの管理」->「Manage and Assign Roles」->「Assign Roles」を選択して、Assign Rolesページを開く。
- 「User/group to add」に「test1」と入力して、Addボタンを押す。
- 同じく、「test2」と入力して、Addボタンを押す。
- 同じく、「test3」と入力して、Addボタンを押す。
※ test3ユーザーは存在していませんので、本来必要ありません。
追加したのは、存在していないユーザーに権限を付与しようとするとどうなるかを確認するためです。 - Global rolesの各ユーザーに権限を付与する。
- test1ユーザーは、adminにチェック
- test2ユーザーは、operatorにチェック
- test3ユーザーは、admin, operator両方にチェック
※注意
Anonymousユーザーとは、非ログインユーザーのことです。
最終的には全ての権限を外すべきですが、確認が終わるまでは絶対adminのチェックを外さない方がいいです。
このページでのユーザー追加は入力式になっており、しかも登録時に存在チェックが行われていませんので、入力ミスが発生する可能性があります。
ミスをすることにより、admin権限を所持したユーザーが存在しない状態になり、どうすることもできなくなるのを回避するためです。
- 上記を実行するとこの状態になっている。一旦「Save」ボタンを押して設定を反映させる。
動作確認
以上で設定は完了しましたので、動作確認してみます。
Jenkinsのトップページにアクセスすると、権限設定前はジョブの一覧が表示されていましたが、ログインページが表示されるようになります。
まず、test1ユーザーでログインします。
admin権限を所持していますので、Jenkinsの設定を更新可能ですし、新しいジョブも登録可能です。
次に、test2ユーザーでログインします。
operator権限のみ所持していますので、Jenkinsの設定を更新することはできませんし、新しいジョブも作成することが出来ません。