OpenShift - Jenkins

このページの元の著者は Fares

このページでは、Openshift(またはKubernetes)クラスターで実行されているJenkinsインスタンスを攻撃する方法についていくつかのポインタを示します。

免責事項

JenkinsインスタンスはOpenshiftまたはKubernetesクラスターの両方に展開できます。コンテキストに応じて、表示されるペイロード、yaml、またはテクニックを適応する必要があります。Jenkinsを攻撃する詳細については、このページを参照してください。

前提条件

1a. Jenkinsインスタンスへのユーザーアクセスまたは1b. プッシュ/マージ後に自動ビルドがトリガーされるSCMリポジトリへの書き込み権限を持つユーザーアクセス

動作方法

基本的に、裏側で行われるほとんどすべては、VMで実行されている通常のJenkinsインスタンスと同じように機能します。主な違いは、全体のアーキテクチャとビルドがOpenshift(またはKubernetes)クラスター内でどのように管理されるかです。

ビルド

ビルドがトリガーされると、まずJenkinsマスターノードによって管理/オーケストレーションされ、その後エージェント/スレーブ/ワーカーに委任されます。このコンテキストでは、マスターノードは単なる名前空間内で実行されている通常のポッドであり(ワーカーが実行される場所とは異なる場合があります)、同じことがワーカー/スレーブにも適用されます。ただし、ビルドが終了するとワーカー/スレーブは破棄されますが、マスターは常に稼働しています。通常、ビルドはJenkins管理者によって定義されたデフォルトのポッドテンプレートを使用してポッド内で実行されます。

ビルドのトリガー

ビルドをトリガーする方法はいくつかあります:

  1. JenkinsへのUIアクセスがある場合

非常に簡単で便利な方法は、既存のビルドのReplay機能を使用することです。これにより、以前に実行されたビルドを再生し、Groovyスクリプトを更新できます。これにはJenkinsフォルダへの特権と事前に定義されたパイプラインが必要です。ステルス性が必要な場合は、十分な権限があればトリガーされたビルドを削除できます。

  1. SCMへの書き込みアクセスがあり、自動ビルドがWebhook経由で構成されている場合

ビルドスクリプト(Jenkinsfileなど)を編集し、コミットしてプッシュ(必要に応じてPRを作成する)するだけです。ただし、この方法は非常にノイズが多く、トラックを消すには昇格された権限が必要です。

JenkinsビルドポッドYAMLのオーバーライド

OpenShift - Jenkins Build Pod Override

Last updated