【CloudBees CI奮闘記】第8章:セキュリティ・運用を考える(2)


セキュリティや運用に関して、OSS JenkinsにはないCloudBees CI独自の優れた機能が多数あります。
今回は前回に続き「セキュリティと運用」に関する機能を紹介します。

前回のブログはこちらから

Operations Centerによるセキュリティの一元管理

Client Controllerのセキュリティポリシーの一元管理

接続されているClient Controllerのセキュリティポリシーについて、Operations Centerで一元管理することができます。

Operations CenterのJenkinsの管理 > Security > Client controller security

通常Client Controllerごとに設定が可能な「”次回から入力を省略”を無効化」「マークアップ記法」「CSRF Protection」の項目について、Operations Centerで一元管理が可能になります。
例えばOperations Centerで制御した場合、Client Controllerの項目はグレーアウトされ、編集ができなくなります。

Client ControllerのJenkinsの管理 > Security > CSRF Protection

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環境を手に入れてください。

CloudBees CI奮闘記一覧

CI環境構築のサービス紹介

CI環境アセスメントサービス

既に構築済のJenkins環境について、継続的な利用や今後のスケールアップ、CI/CDの計画を考慮した適切な構成であるかを明らかにします。

詳細はこちら

CI環境構築サービス

Jenkinsの認定資格保有エンジニアが貴社の環境に合わせて、Jenkinsのインストールからジョブの作成・保守を行います。

詳細はこちら

Jenkinsトレーニング

Jenkinsをこれから利用する方、継続的インテグレーションの導入に取り組んでいる方、さらに、Jenkinsの知識を深めたい方に、オススメの各種トレーニングを開催。

詳細はこちら