セキュリティや運用に関して、OSS JenkinsにはないCloudBees CI独自の優れた機能が多数あります。
今回は前回に続き「セキュリティと運用」に関する機能を紹介します。
前回のブログはこちらから
Operations Centerによるセキュリティの一元管理
Client Controllerのセキュリティポリシーの一元管理
接続されているClient Controllerのセキュリティポリシーについて、Operations Centerで一元管理することができます。
通常Client Controllerごとに設定が可能な「”次回から入力を省略”を無効化」「マークアップ記法」「CSRF Protection」の項目について、Operations Centerで一元管理が可能になります。
例えばOperations Centerで制御した場合、Client Controllerの項目はグレーアウトされ、編集ができなくなります。
Operations Centerでは接続されているClient Conttollerに対して以下の3つのパターンでの設定が可能です。
セキュリティレルムとは、ユーザーを識別し、でユーザーがどのグループに属しているかを報告する、CloudBees CIクラスターのセキュリティドメインです。ブラウザ上ではユーザー情報とも表示されます。
- すべてのClient Controllerが独立しており、Client Controllerごとのセキュリティレルムとセキュリティポリシーを設定できる。
- セキュリティレルムはOperations Centerに委任する必要があるが、セキュリティポリシーはClient Controllerごとに選択することができる。
- すべてのClient ControllerはセキュリティレルムとをセキュリティポリシーをOperations Centerに委任しなければならない。
詳細情報は、CloudBeesの公式ドキュメントで確認できます。
https://docs.cloudbees.com/docs/cloudbees-ci/latest/secure/centrally-managing-security-for-controllers
細やかなセキュリティ設定
制限付き認証情報の構成
Jenkinsを用いる際に、外部との連携に用いる認証情報を登録することがあります。
GitやSubversionといったSCMと連携する際に、OSS Jenkinsの場合、設定できるスコープはシステムまたはグローバルとなります。
CloudBees CIの場合、CloudBees Restricted Credentials プラグインを使用すると許可リストと拒否リストを定義し、特定のジョブやフォルダからのみアクセスできるようにしたり、特定のジョブ以外からの利用を拒否したりすることができます。
例えば、本番環境への誤ったデプロイは避けたいところです。
本番環境への認証情報に対して、「my-folder/my-multibranch/main-*」と定義をしておけば、特定のマルチブランチパイプラインかつmain-で始まるブランチ名のみで利用可能といった形での制御が可能です。
詳細情報は、CloudBeesの公式ドキュメントで確認できます。
https://docs.cloudbees.com/docs/release-notes/latest/plugins/cloudbees-restricted-credentials-plugin/
Modern DevOps external secrets management
ユーザー/パスワード、秘密キー、アクセストークン、証明書といった認証情報をJenkinsに保存するのではなく、AWS Secrets Managerといった外部のシークレットマネージャーを活用することも可能です。
またその認証情報が利用可能なスコープについても、Operations Centerのレベル、Client Controllerのレベル、各ジョブのレベルといったスコープを定義しての参照が可能なため、認証情報が漏洩した場合に生じる可能性のある損害が最小限に抑えられます。
詳細な手順は使用するサービスやソリューションによって異なるため、連携可能なサービスや具体的な連携方法については、次の以下のリンクを参照ください。
詳細情報は、CloudBeesの公式ドキュメントで確認できます。
https://docs.cloudbees.com/docs/cloudbees-ci/latest/secure/external-secrets-management#_secrets_management_products
継続的な運用
Jenkinsは基本的に安定して稼働するCI基盤ということもあり、バージョンアップやメンテナンスが疎かになる傾向があります。
ここでは継続的な運用を行っていくうえで、便利な機能を4つ紹介します。
Understanding Beekeeper security warnings
The Security Warnings Administrative Monitor(セキュリティ警告 管理モニター)に現在のCloudBees CIのインスタンスに影響を与える可能性のあるセキュリティ上の脆弱性や問題点について警告を提供します。これにより、システム管理者はセキュリティ上のリスクを迅速に特定し、対応することができます。
どの項目を警告対象とするかはJenkinsの管理 > System > Administrative monitors configurationのセクションで設定可能です。
チェック対象は上記の画面ショットに表示されている以外にも非常に細かく設定が可能です。
問題ない場合は上記のように問題ないことが確認できるので、安心して利用することができます。
詳細情報は、CloudBeesの公式ドキュメントで確認できます。
https://docs.cloudbees.com/docs/cloudbees-ci/latest/secure/beekeeper-security-warnings
Jenkins Health Advisor by CloudBees
Jenkins Health Advisor by CloudBeesは、Jenkinsの自動診断サービスです。
Jenkins Health Advisor by CloudBees は、Jenkinsのサポートバンドルをスキャンすることで問題を特定します。サポートバンドルは日々生成され、Health Advisor by CloudBeesプラグインを介してCloudBeesのサーバーに送られます。
CloudBeesはサポートバンドルを元に、Jenkinsインスタンスの設定、セキュリティ上の問題、ベストプラクティスのからの逸脱など、さまざまな問題を自動的に検出し、それらに関する詳細なレポートと推奨事項を提供します。
これにより、システム管理者は問題をすばやく特定し解決策を適用することが可能になり、システムの安定性とセキュリティを強化することができます。
Jenkins Health Advisor by CloudBeesは、CloudBeesのアカウントに登録し、JenkinsインスタンスにHealth Advisor by CloudBeesプラグインをインストールすることで利用できます。
詳細情報は、CloudBeesの公式ドキュメントで確認できます。
https://docs.cloudbees.com/docs/cloudbees-ci/latest/maintaining/cloudbees-jenkins-advisor
CloudBees Inactive Items Plugin
Jenkinsを活用していると検証用時に使われたジョブやフォルダが増えていくことがあります。
利用されていないジョブが一覧に並んでいるとジョブの管理コストがかかりますし、特に複数人数でJenkinsのジョブを管理している場合、長期間放置されていると削除していいのかの判断もつかなくなってしまいがちです。
CloudBees Inactive Items プラグインは、コントローラー内のジョブ、フォルダ、マルチブランチ パイプライン、および組織フォルダを分析し、非アクティブなアイテムをリストするレポートを生成します。
分析頻度を設定し、自動で非アクティブに設定変更させることも可能です。
詳細情報は、CloudBeesの公式ドキュメントで確認できます。
https://docs.cloudbees.com/docs/cloudbees-ci/latest/maintaining/inactive-items
Plugin Usage Analyzer
ソフトウェア組織が拡大し、アプリケーション開発チームとJenkinsパイプラインのサポートのために必要なプラグインが増えると、DevOpsチームは数百のプラグインを管理するという課題に直面することがあります。使われているプラグインと使われていないプラグインの区別がつかないため、システムの安定性を維持するために、未使用のプラグインが放置されることがよくあります。放置した結果、時間と共にプラグインの肥大化を引き起こし、システムの安定性やアップグレードの実行に影響を与える可能性があります。
この問題に対する解決策として、CloudBees CIのプラグイン使用状況アナライザーの活用が挙げられます。これにより、CloudBees CIの管理者はフリースタイルジョブとパイプラインジョブ全体でのプラグイン使用状況を追跡し、監視することが可能となります。未使用のプラグインを定期的に監査し、レビューすることで、使用しているプラグインの保守とアップグレードが容易になります。
詳細情報は、CloudBeesの公式ドキュメントで確認できます。
https://docs.cloudbees.com/docs/cloudbees-ci/latest/stories/jenkins-at-scale/plugin-usage-analyzer
まとめ
今回は前回に引き続き、セキュリティや管理に役立つ次の機能を紹介しました。
ぜひCloudBees CIを導入し、管理がしやすくセキュリティ性の高い安定稼働するJenkins環境を手に入れてください。
- Client Controllerのセキュリティポリシーの一元管理
概要:Operetions Centerに接続されているClient Controllerのセキュリティーポリシーを一元管理できる。 - 制限付き認証情報の構成
概要:Jenkinsに登録した認証情報の利用範囲をジョブやフォルダ単位で制限できるようになる。 - Modern DevOps external secrets management
概要:外部のシークレットマネージャーを活用し、Jenkinsで認証情報として利用できる - Understanding Beekeeper security warnings
概要:セキュリティ上の脆弱性や問題点についての警告を表示する - Jenkins Health Advisor by CloudBees
概要:自動的にサポートバンドルをCloudBeesに送信し、Jenkinsインスタンスの設定、セキュリティ上の問題、ベストプラクティスのからの逸脱などに関してのレポートを提供する。 - CloudBees Inactive Items Plugin
概要:利用されていないジョブなどのアイテムについて設定した日数に応じてリスト化する。必要に応じて自動で非アクティブ化に設定を変更する - Plugin Usage Analyzer
概要:利用されていないプラグインを一覧化する。
CloudBees CI奮闘記一覧
- 【CloudBees CI奮闘記】第1章:モノリシックなJenkins?野良Jenkins?
- 【CloudBees CI奮闘記】第2章:CloudBees CIをインストールして触ってみる
- 【CloudBees CI奮闘記】第3章:共有エージェントを利用する
- 【CloudBees CI奮闘記】第4章:プラグインを効率的に管理する
- 【CloudBees CI奮闘記】第5章:パイプラインテンプレートを利用する
- 【CloudBees CI奮闘記】第6章:バックアップを取得する
- 【CloudBees CI奮闘記】第7章:バックアップを取得する