GitLab CI の設定
安全な CI/CD ワークフロー用に GitLab CI を設定する方法を学ぶ
概要
はじめに リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションに GitLab CI を使用している場合、シークレットが欠落しているためにパイプラインの実行が失敗する可能性があります。シークレットがないと、Quay、JFrog Artifactory、Sonatype Nexus Repository、Red Hat Advanced Cluster Security (ACS) との統合が機能せず、脆弱性スキャン、イメージ署名、コンプライアンスのための SBOM 生成などのセキュリティータスクが機能しなくなります。
これを防ぐには、GitLab CI にシークレットをセキュアに保存する必要があります。このガイドでは、パイプラインをスムーズかつセキュアに実行するためのプロセスを順を追って説明します。
第1章 外部ツールとの統合のために GitLab CI にシークレットと変数を追加する リンクのコピーリンクがクリップボードにコピーされました!
前提条件
GitLab CI を設定する前に、次のものがあることを確認してください。
- GitLab リポジトリーと CI/CD 設定への 管理者 アクセス権。
- Quay、JFrog Artifactory、または Sonatype Nexus Repository からコンテナーイメージをプルするための コンテナーレジストリー認証情報。
特定の GitLab CI タスクの 認証の詳細:
ACS セキュリティータスクの場合:
- ROX Central サーバーエンドポイント
- ROX API トークン
SBOM およびアーティファクト署名タスクの場合:
- 署名鍵のパスワード、秘密鍵、公開鍵に署名する
- Trustification API と発行者 URL、クライアント ID、クライアントシークレット、サポートされている CycloneDX バージョン
注記認証情報やその他の詳細は、すでに Base64 でエンコードされているため、再度エンコードする必要はありません。これらの認証情報は、RHADS - SSC のインストール中に作成した
private.envファイルにあります。
1.1. オプション 1: UI を使用して GitLab CI にシークレットと変数を追加する リンクのコピーリンクがクリップボードにコピーされました!
手順
この手順では、必要なシークレットと環境変数の両方を追加します。シークレットの値をマスクする必要があることに注意してください。
- GitLab にログインし、ソースリポジトリーを開きます。
- Setting メニューを展開し、CI/CD を選択します。
- Variables セクションで Expand を選択します。
Add variable を選択し、ポップアップウィンドウで以下を実行します。
- Key と Value フィールドに値を追加します。
- Flags で、Mask variable を選択して機密性の高い値を非表示にします。
- Add variable を選択します。
手順 4 を繰り返して必要なシークレットを追加し、それぞれの Mask variable フラグをチェックします。
Expand 表1.1 イメージレジストリーおよび GitOps シークレット 変数 説明 QUAY_IO_CREDS_PSWQuay リポジトリーにアクセスするためのパスワード。
ARTIFACTORY_IO_CREDS_PSWJFrog Artifactory リポジトリーにアクセスするためのパスワード。
NEXUS_IO_CREDS_PSWSonatype Nexus リポジトリーにアクセスするためのパスワード。
GITOPS_AUTH_PASSWORD新しくビルドされたイメージの GitOps リポジトリーを更新するためにシステムが使用するトークン。
Expand 表1.2 ACS および SBOM タスクに必要なシークレット 変数 説明 ROX_API_TOKENROX サーバーにアクセスするための API トークン。
COSIGN_SECRET_PASSWORDCosign 署名鍵のパスワード。
COSIGN_SECRET_KEYCosign の秘密鍵。
TRUSTIFICATION_OIDC_CLIENT_SECRETTrustification Bombastic API への認証にクライアント ID と一緒に使用されるクライアントシークレット。
通常の環境変数を追加します。
- Add variable を選択します。
- Key と Value フィールドに値を追加します。
- Flags で、Mask variable を選択しないでください。
- Add variable を選択します。
手順 6 を繰り返して、次の変数を追加します。
Expand 表1.3 イメージレジストリーおよび GitOps 変数 変数 説明 QUAY_IO_CREDS_USRQuay リポジトリーにアクセスするためのユーザー名
ARTIFACTORY_IO_CREDS_USRJFrog Artifactory リポジトリーにアクセスするためのユーザー名
NEXUS_IO_CREDS_USRNexus リポジトリーにアクセスするためのユーザー名
GITOPS_AUTH_USERNAMEOpenShift GitOps のユーザー名。
Expand 表1.4 ACS タスクおよび SBOM タスクに必要な変数 変数 説明 ROX_CENTRAL_ENDPOINTROX Central サーバーのエンドポイント。
COSIGN_PUBLIC_KEYCosign の公開鍵。
TRUSTIFICATION_BOMBASTIC_API_URLSBOM 生成で使用される Trustification Bombastic API の URL。
TRUSTIFICATION_OIDC_ISSUER_URLTrustification Bombastic API と対話する際の認証に使用される OIDC 発行者 URL。
TRUSTIFICATION_OIDC_CLIENT_IDOIDC を使用して Trustification Bombastic API に認証するためのクライアント ID。
TRUSTIFICATION_SUPPORTED_CYCLONEDX_VERSIONシステムがサポートして生成する CycloneDX SBOM バージョンを指定します。
オプション: CI プロバイダーランナーが RHADS - SSC インスタンスと同じクラスター上で実行されていない場合は、Rekor および TUF 変数を設定します。
Expand 表1.5 Rekor および TUF 変数 変数 説明 REKOR_HOSTRekor サーバーの URL。
TUF_MIRRORTUF サービスの URL。
最後のパイプライン実行を再実行して、シークレットが正しく適用されていることを確認します。
- または、GitLab でアプリケーションのソースリポジトリーに切り替えて、小さな変更を加え、コミットして新しいパイプラインの実行をトリガーします。
1.2. オプション 2: CLI を使用した GitLab CI へのシークレットおよび変数の追加 リンクのコピーリンクがクリップボードにコピーされました!
手順
Visual Studio Code などの任意のテキストエディターで、次の 2 つのファイルを含むプロジェクトを作成します。
- env_vars.sh
- glab-set-vars
次の環境変数を使用して
env_vars.shファイルを更新します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の情報を使用して
glab-set-varsファイルを更新します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記デフォルトでは、
setVars関数は変数をシークレットとして作成し、この変数の値は UI とログに表示されません。マスクされていない変数を作成するには、設定した行の最後にfalseを追加します。以下に例を示します。setVars COSIGN_PUBLIC_KEY $COSIGN_PUBLIC_KEY false
setVars COSIGN_PUBLIC_KEY $COSIGN_PUBLIC_KEY falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 現在のシェルセッションに環境変数を読み込みます。
source env_vars.sh
source env_vars.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow glab-set-varsスクリプトを実行可能にし、リポジトリー名で実行して、GitLab リポジトリー内の変数を設定します。chmod +x glab-set-vars ./glab-set-vars your_repository_name
chmod +x glab-set-vars ./glab-set-vars your_repository_nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 最後のパイプライン実行を再実行して、シークレットが正しく適用されていることを確認します。
- または、GitLab でアプリケーションのソースリポジトリーに切り替えて、小さな変更を加え、コミットして新しいパイプラインの実行をトリガーします。
改訂日時: 2025-09-06