第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 を使用して必要な認証情報を追加する手順に従います。
手順
- Web ブラウザーで Jenkins インスタンスを開き、管理者の認証情報でログインします。
- Jenkins ダッシュボードの右上隅にあるユーザー名を選択します。
- 左側のサイドバーから Manage Jenkins を選択します。
- Security セクションで、Credentials を選択します。
- Stores scope to Jenkins で System を選択します。
- 認証情報を追加するドメインを選択します。通常、これは Global credentials (unrestricted) です。このドメイン名をクリックします。
- Add Credentials を選択します。
- Kind ドロップダウンリストから、Secret text を選択します。
- Scope ドロップダウンリストのデフォルト値を Global (Jenkins…) のままにします。
- UI フィールドにシークレットに関連する情報を入力します。
- Create を選択します。
手順 7 - 11 を繰り返して、次の認証情報を追加します。
注記イメージレジストリーの場合、Quay がデフォルトのオプションです。JFrog Artifactory または Sonatype Nexus を使用するには、複製された tssc-sample-templates GitHub リポジトリー内の gitops-template フォルダーと source-repo フォルダーの両方にある 2 つの Jenkinsfiles で、対応する変数を含む行のコメントを解除します。
Expand 表1.1 イメージレジストリーおよび GitOps シークレット 変数 説明 QUAY_IO_CREDS
Quay.io リポジトリーにアクセスするためのユーザー名とパスワード。これは、Jenkinsfiles でコメントが解除されているデフォルトのオプションです。
ARTIFACTORY_IO_CREDS
JFrog Artifactory リポジトリーにアクセスするためのユーザー名とパスワード。
NEXUS_IO_CREDS
Sonatype Nexus リポジトリーにアクセスするためのユーザー名とパスワード。
GITOPS_AUTH_PASSWORD
新しくビルドされたイメージの GitOps リポジトリーを更新するためにシステムが使用するトークン。
Expand 表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 と一緒に使用されるクライアントシークレット。
最後に実行したパイプラインを再実行します。
- または、GitHub でアプリケーションのソースリポジトリーに切り替えて、小さな変更を加え、コミットして新しいパイプラインの実行をトリガーします。