This documentation is for a release that is no longer maintained
See documentation for the latest supported version.セキュリティー統合のための GitLab の設定
安全な CI/CD ワークフローのために GitLab を設定する方法を学ぶ。
概要
はじめに リンクのコピーリンクがクリップボードにコピーされました!
GitLab パイプラインで脆弱性スキャン、イメージ署名、アテステーション生成などの重要なタスクを実行できるようにするには、次のタスクを完了する必要があります。
- 自動パイプライントリガーを有効にするには、GitLab Webhook を設定します。
- 外部ツールとの安全な統合のために、GitLab CI にシークレットを追加します。
これらの設定により、GitLab は ACS、Quay、GitOps とシームレスに統合し、コンテナーイメージの署名と検証に Cosign を利用できるようになります。
第1章 自動パイプライントリガーを有効にするために GitLab Webhook を設定する リンクのコピーリンクがクリップボードにコピーされました!
GitLab で webhook とシークレットを設定し、コードの更新時に RHDH でパイプラインの実行を自動的にトリガーします。
前提条件
- ソースリポジトリーがある。
-
Webhook URL とシークレットトークンがある。これらの認証情報は
~/install_values.txtファイルにあります。
手順
GitLab ソースリポジトリーに移動します。
- Red Hat Developer Hub プラットフォームで、カタログ に移動し、GitLab がリポジトリーホストとして設定されているアプリケーションを選択します。
- Overview タブに移動し、View Source を選択してソースコードのリポジトリーを開きます。
- Settings > Webhooks に移動します。
- URL フィールドに webhook URL を入力します。
- Secret Token フィールドにシークレットトークンを入力します。
Trigger セクションでは、次の操作を行います。
- Push events を選択します。
- Merge request events を選択します。
- Add Webhook をクリックします。
検証
- GitLab のソースリポジトリーへの変更をコミットします。
- RHDH の CI タブに移動します。
- コードプッシュに対してパイプラインの実行がトリガーされていることを確認します。
第2章 外部ツールとの安全な統合のために GitLab CI にシークレットを追加する リンクのコピーリンクがクリップボードにコピーされました!
CI プロバイダーとして GitLab を選択し、アプリケーションを作成すると、パイプラインの実行が失敗することがあります。この失敗は、パイプラインが必要な GitLab およびその他のシークレットを見つけられないために発生します。必要なシークレットを追加し、パイプラインの障害を解決するには、次の手順を実行します。
前提条件
- GitLab ジョブと GitLab CI 変数を作成および管理するのに必要な権限がある。
- コンテナーイメージにアクセスしてプルするためのイメージレジストリー (Quay.io など) のユーザー名とパスワードがある。
GitLab CI で実行する特定のタスクについては、次の情報が必要です。
ACS タスクの場合:
- ROX Central サーバーのエンドポイントとトークン
SBOM タスクの場合:
- 署名キーのパスワード、秘密鍵、公開鍵に署名する
- 信頼 URL、クライアント ID、シークレット、およびサポートされている CycloneDX バージョン
2.1. UI を使用して GitLab CI にシークレットを追加する リンクのコピーリンクがクリップボードにコピーされました!
手順
- ログインしてソースリポジトリーに移動します。
- Setting メニューを展開し、CI/CD を選択します。
- 変数セクションで、Expand を選択し、Add variable を選択します。
- Flags の下で、Mask variable チェックボックスをオンにします。
- Key フィールドに MY_GITLAB_TOKEN と入力します。
- Value フィールドに、GitLab アカウントに関連付けられているトークンを入力します。
手順 3 - 6 を繰り返して、必要な変数を追加します。
Expand 変数 説明 すべてのパイプライン実行に必要な変数
QUAY_IO_CREDS_USRQuay.io 認証情報にアクセスするためのユーザー名。
QUAY_IO_CREDS_PSWQuay.io 認証情報にアクセスするためのパスワード。
REKOR_HOSTRekor サーバーの URL。
TUF_MIRRORTUF サービスの URL。
ACS タスクに必要な変数
ROX_CENTRAL_ENDPOINTROX Central サーバーのエンドポイント。
ROX_API_TOKENROX サーバーにアクセスするための API トークン。
SBOM タスクに必要な変数
COSIGN_SECRET_PASSWORDCosign 署名鍵のパスワード。
COSIGN_SECRET_KEYCosign の秘密鍵。
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_OIDC_CLIENT_SECRETTrustification Bombastic API への認証にクライアント ID と一緒に使用されるクライアントシークレット。
TRUSTIFICATION_SUPPORTED_CYCLONEDX_VERSIONシステムによってサポートされ生成される CycloneDX SBOM バージョンを指定します。
最後に実行したパイプラインを再実行します。
- または、GitLab でアプリケーションのソースリポジトリーに切り替えて、小さな変更を加え、コミットして新しいパイプラインの実行をトリガーします。
2.2. CLI を使用して GitLab にシークレットを追加する リンクのコピーリンクがクリップボードにコピーされました!
手順
次の 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 現在のシェルセッションに環境変数を読み込みます。
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 でアプリケーションのソースリポジトリーに切り替えて、小さな変更を加え、コミットして新しいパイプラインの実行をトリガーします。
改訂日時: 2024-12-11