オリジナル: Securing Jenkins
デフォルトの設定では、セキュリティチェックは行いません。つまり、サイトにアクセスする誰もが、Jenkins自身やジョブの設定を行い、ビルドを実行できることを意味します。イントラ内での使用では普通に受け入れられる設定ですが、設定することで、ユーザーを認証し、インターネットのような信頼できない環境にでも公開できるようにすることができます。
設定は、主に2つの軸(設定項目)で制御します。
- ユーザー情報 ... ユーザーやそのパスワードおよびユーザーが属するグループを判断します。
- 権限管理 ... 誰が何にアクセスできるか判断します。
この2つの軸は互いに独立していて、個々に設定する必要があります。例えば、ユーザー情報として外部のLDAPやActive Directoryを選び、権限管理として"全員に許可"を選ぶこともできます。もしくは、"Jenkinsのユーザーデータベース"を選択し、"行列による権限設定"を選ぶこともできます。
トピック
- 素早く簡単なセキュリティ —
"java -jar jenkins.war"
のようにJenkinsを起動していて、簡易な設定のみで良い場合。 - 標準的なセキュリティ — もっとも一般的なJenkins独自のユーザーデータベースと細かく設定できる権限管理。
- Apacheをフロントエンドにしたセキュリティ — ApacheをフロントエンドにしてJenkinsを起動して、権限管理をApacheで行う。
- スクリプトからの認証 — セキュリティが有効化されたJenkinsにプログラムからアクセスする場合は、BASIC認証を使用する。
- 助けて、自分をロックアウトしてしまったみたいですorz — なにかおかしくなって、なにもできなくなった場合。
セキュリティに関する注意
セキュリティが有効化されていても、Jenkinsで実行されるビルドはシステム全体への全権限を持ったままです。なぜなら、(Jenkinsとは)べつのプロセスで起動しているからです。つまり、Jenkinsでビルドされるすべてのプロジェクトのコミッターは、システム全体の全権限をもっているということです。ビルドスクリプトを変更して
、Jenkinsがアクセスできるシステムのいかなるファイルでも参照することも変更することもできます。
また、分散ビルドを行っている場合、Jenkinsに接続するスレーブもマスターに実行されるコードを送信するので、Jenkinsのビルドクラスター全体の権限を持ってしまいます。