Jenkins の設定


Red Hat Trusted Application Pipeline 1.5

セキュアな CI/CD ワークフロー用に Jenkins を設定する方法を学ぶ

Red Hat Trusted Application Pipeline Documentation Team

概要

このドキュメントでは、脆弱性スキャン、イメージ署名、アテステーション生成などの重要なセキュリティータスクを実行するために Jenkins をセットアップする手順を説明します。

はじめに

Jenkins パイプラインが脆弱性スキャン、イメージ署名、アテステーションなどの重要なタスクを実行できるようにするには、次の手順に従います。この表には、実行する必要があるアクションと、完了する必要があるタイミングをまとめています。

アクション完了するタイミング

外部ツールとのセキュアな統合のために Jenkins にシークレットを追加する

セキュアなソフトウェアテンプレートを使用してアプリケーションを作成する前に、Jenkins にシークレットを追加します。これにより、ACS、Quay、GitOps とのシームレスな統合が保証されます。

Jenkins にアプリケーションを追加する

アプリケーションとソースリポジトリーを作成したら、それらを Jenkins に追加します。これにより、Red Hat Developer Hub プラットフォームで Jenkins パイプラインのさまざまな側面を確認できるようになります。

これらの手順を完了すると、Jenkins を ACS (Advanced Cluster Security)、Quay、GitOps とシームレスに統合し、コンテナーイメージの署名と検証に Cosign を利用できます。

第1章 外部ツールとの統合のために Jenkins にシークレットと環境変数を追加する

アプリケーションの作成時に CI プロバイダーとして Jenkins を選択した場合は、外部ツールとの安全な統合のために、シークレットと環境変数を Jenkins に追加する必要があります。これにより、Jenkins は脆弱性スキャン、イメージ署名、アテステーション生成などの重要なタスクを実行できるようになります。

前提条件

  • Jenkins ジョブ、変数、CI パイプラインの作成および管理に必要な権限がある。
  • Quay.io、Jfrog Artifactory、Sonatype Nexus などのイメージレジストリーのユーザー名とパスワードが必要です。
  • 適切な GitOps 認証情報がある。
  • Jenkins パイプラインで実行する特定のタスクに使用するため、次の情報がある。

    • ACS タスクの場合:

      • ROX Central サーバーのエンドポイントとトークン
    • SBOM タスクの場合:

      • 署名鍵のパスワード、秘密鍵、公開鍵に署名する
      • Trustification API と発行者 URL、クライアント ID、クライアントシークレット、サポートされている CycloneDX バージョン
    注記

    これらの認証情報に使用される値はすでに Base64 でエンコードされているため、変換する必要はありません。これらの認証情報は private.env ファイルにあります。

1.1. Jenkins にシークレットを追加する

Jenkins サーバーの UI を使用して必要な認証情報を追加する手順に従います。

手順

  1. Web ブラウザーで Jenkins インスタンスを開き、管理者の認証情報でログインします。
  2. Jenkins ダッシュボードの右上隅にあるユーザー名を選択します。
  3. 左側のサイドバーから Manage Jenkins を選択します。
  4. Security セクションで、Credentials を選択します。
  5. Stores scope to JenkinsSystem を選択します。
  6. 認証情報を追加するドメインを選択します。通常、これは Global credentials (unrestricted) です。このドメイン名をクリックします。
  7. Add Credentials を選択します。
  8. Kind ドロップダウンリストから、Secret text を選択します。
  9. Scope ドロップダウンリストのデフォルト値を Global (Jenkins…​) のままにします。
  10. UI フィールドにシークレットに関連する情報を入力します。
  11. Create を選択します。
  12. 手順 7 - 11 を繰り返して、次の認証情報を追加します。

    注記

    イメージレジストリーの場合、Quay がデフォルトのオプションです。JFrog Artifactory または Sonatype Nexus を使用するには、複製された tssc-sample-templates GitHub リポジトリー内の gitops-template フォルダーと source-repo フォルダーの両方にある 2 つの Jenkinsfiles で、対応する変数を含む行のコメントを解除します。

    表1.1 イメージレジストリーおよび GitOps シークレット
    変数説明

    QUAY_IO_CREDS

    Quay.io リポジトリーにアクセスするためのユーザー名とパスワード。これは、Jenkinsfiles でコメントが解除されているデフォルトのオプションです。

    ARTIFACTORY_IO_CREDS

    JFrog Artifactory リポジトリーにアクセスするためのユーザー名とパスワード。

    NEXUS_IO_CREDS

    Sonatype Nexus リポジトリーにアクセスするためのユーザー名とパスワード。

    GITOPS_AUTH_PASSWORD

    新しくビルドされたイメージの GitOps リポジトリーを更新するためにシステムが使用するトークン。

    表1.2 ACS および SBOM タスクに必要なシークレット
    変数説明

    ROX_API_TOKEN

    ROX サーバーにアクセスするための API トークン。

    COSIGN_SECRET_PASSWORD

    Cosign 署名鍵のパスワード。

    COSIGN_SECRET_KEY

    Cosign の秘密鍵。

    TRUSTIFICATION_OIDC_CLIENT_SECRET

    Trustification Bombastic API への認証にクライアント ID と一緒に使用されるクライアントシークレット。

  13. 最後に実行したパイプラインを再実行します。

    1. または、GitHub でアプリケーションのソースリポジトリーに切り替えて、小さな変更を加え、コミットして新しいパイプラインの実行をトリガーします。

1.2. Jenkins に環境変数を追加する

必要なシークレットをすべて追加したら、以下の手順に従って Jenkins サーバーで UI を使用して環境変数を追加します。

手順

  1. 左側のサイドバーから Manage Jenkins を選択します。
  2. System Configuration セクションで、System を選択します。
  3. System ページで下にスクロールして、Global properties セクションを見つけます。
  4. Environment variables > Add を選択します。
  5. 以下の環境変数にキーと値のペアを追加します。

    表1.3 GitOps 変数
    変数説明

    GITOPS_AUTH_USERNAME (任意)

    Jenkins が GitLab と連携するために必要な変数。

    表1.4 ACS タスクおよび SBOM タスクに必要な変数
    変数説明

    ROX_CENTRAL_ENDPOINT

    ROX Central サーバーのエンドポイント。

    COSIGN_PUBLIC_KEY

    Cosign の公開鍵。

    TRUSTIFICATION_BOMBASTIC_API_URL

    SBOM 生成で使用される Trustification Bombastic API の URL。

    TRUSTIFICATION_OIDC_ISSUER_URL

    Trustification Bombastic API と対話する際の認証に使用される OIDC 発行者 URL。

    TRUSTIFICATION_OIDC_CLIENT_ID

    OIDC を使用して Trustification Bombastic API に認証するためのクライアント ID。

    TRUSTIFICATION_SUPPORTED_CYCLONEDX_VERSION

    システムがサポートして生成する CycloneDX SBOM バージョンを指定します。

    オプション: Jenkins がローカル OpenShift インスタンスで実行されず、Rekor サービスと TUF サービスが異なるクラスター上にある場合は、Rekor 変数と TUF 変数を設定します。また、クローンした tssc-sample-templates リポジトリー内の Jenkinsfile で、Rekor および TUF 変数を含む行のコメントを解除します。

    表1.5 Rekor および TUF 変数
    変数説明

    REKOR_HOST

    Rekor サーバーの URL。

    TUF_MIRROR

    TUF サービスの URL。

  1. すべての変数を追加したら、Save を選択します。
  2. 最後に実行したパイプラインを再実行します。

関連情報

第2章 Jenkins にアプリケーションを追加する

アプリケーションの作成時に CI プロバイダーとして Jenkins を選択した場合は、アプリケーションを Jenkins に追加する必要があります。適切な統合により、パイプラインが CI/CD ワークフローと連携し、シームレスに動作するようになります。

前提条件

  • 環境に Jenkins がインストール、設定されている。
  • Jenkins ジョブの作成および管理に必要な権限がある。
  • RHTAP のインストール後のフェーズで、Jenkins パイプラインの 正しい認証情報を追加 している。
  • Jenkinsfile を確認して Jenkins 設定と一致しているようにする。たとえば、パイプラインを実行できる場所を制限するためにエージェント設定を更新する必要がある場合があります。
  • Jenkins エージェントに必要なバイナリーがインストールされている (gitcurljqyqbuildahsyftcosignpython3、および tree)。パイプラインの実行が開始時に失敗する場合は、1 つ以上のバイナリーが欠落していることを示している可能性があります。

手順

  1. Jenkins インスタンスにログインします。
  2. Jenkins ダッシュボードから、New Item を選択します。
  3. パイプラインジョブの名前を入力し、Pipeline プロジェクト (例: secure-jenkins) を選択します。

    注記

    パイプラインジョブの名前は、Jenkins CI を追加するアプリケーションの名前と一致する必要があります。名前が一致しないと、パイプラインは Jenkins 上で実行しれますが、RHDH には表示されません。

    1. (オプション) 別のパイプライン名を使用する場合は、ソースリポジトリーの catalog-info.yaml ファイルの jenkins.io/job-full-name フィールドを、選択したパイプライン名に更新します。
  4. OK を選択してジョブを作成します。
  5. Configure > General ページで Pipeline セクションに移動し、Definition ドロップダウンリストから Pipeline script from SCM を選択します。
  6. SCM ドロップダウンリストから Git を選択します。
  7. Repository URL フィールドに、Jenkins ソースリポジトリーの URL を入力します。

    1. Red Hat Developer Hub プラットフォームで、カタログから適切なアプリケーションを選択します。
    2. Overview タブに移動し、View Source を選択して、アプリケーションのソースコードが格納されているリポジトリーを開きます。
  8. Branches to build セクションで、*/main と入力します。
  9. Save を選択します。システムは live-jenkins (ジョブの名前) ページを表示します。
  10. Build Now を選択します。システムはビルドパイプラインを開始します。ビルドが完了するまで待機します。

    1. Stage View セクションで、Pipeline Overview を選択し、パイプライン実行を視覚化します。
    2. Pipeline Console を選択して、パイプライン実行の各ステージのライブログを確認します。

検証

アプリケーションを Jenkins と統合したら、Red Hat Developer Hub プラットフォームで Jenkins パイプラインのさまざまな側面を確認します。

  1. カタログから適切なアプリケーションまたはコンポーネントを選択します。

    • CI タブに移動して、Jenkins プロジェクトを表示します。適切な Jenkins ジョブは、Actions 列を使用して、ジョブの表示、再実行、および履歴の表示を行うことができます。システムは、最新の実行のステータスを含むジョブの概要を表示します。
    • CD タブに移動し、適切なカードを選択して、コミットメッセージ、作成者名、ArgoCD と GitOps により管理されるデプロイメント履歴などのデプロイメントの詳細を表示します。
    • カタログの Kind ドロップダウンリストから Resource を選択します。システムは Jenkins GitOps ジョブを表示します。適切な GitOps リソースを選択して確認します。
    • Topology タブに移動して、デプロイメント namespace 内でのアプリケーションのデプロイメントを視覚化します。

これらの手順を完了すると、アプリケーションと Jenkins がシームレスに統合され、効率的で信頼性の高い CI/CD ワークフローが実現します。





改訂日時: 2025-05-01

法律上の通知

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.