ドキュメントに関する現在のご利用体験についてお聞かせください。アンケートにご協力ください。
Vaultとグループアクセストークンのインテグレーション
このドキュメントでは、Omnibus GitLabがHashiCorp Vaultとどのようにインテグレーションして、ビルド中にプライベートリポジトリにアクセスするためのグループアクセストークンを取得するかを説明します。
概要
GitLabのパッケージをビルドする際、Omnibusはセキュリティ上重要なコンポーネントを含むプライベートリポジトリにアクセスする必要があります。以前は、広範な権限を持つgitlab-botユーザーからのCI_JOB_TOKENを使用して処理されていました。ミラー設定のinfra-mgmtへの一元化により、現在ではVaultに格納された専用のグループアクセストークンを使用しています。
グループアクセストークン
このグループアクセストークンは、Vaultの次のパスに保存されています:
ci/metadata/access_tokens/gitlab-com/gitlab-org/security/_group_access_tokens/build-tokenこのトークンには、次のものがあります:
- ロール: デベロッパー
- スコープ:
read_repository - アクセス: GitLab.comのセキュリティグループとそのプロジェクト
CI設定
Vaultインテグレーションテンプレート
.with-build-tokenテンプレートは以下を提供します:
- IDトークン設定: VaultによるJWT認証を設定します。
- 条件付きシークレット取得: セキュリティプロジェクトでは、Vaultから
SECURITY_PRIVATE_TOKENを自動的にフェッチします。 - 環境設定: 必要に応じて安全なリポジトリアクセスを有効にします
テンプレートの動作は、プロジェクトのコンテキストに基づいて自動的に適応します:
- セキュリティプロジェクト (
$SECURITY_PROJECT_PATH): VaultからSECURITY_PRIVATE_TOKENを含めます - その他のプロジェクト: セキュリティトークンなしで基本的なVaultインテグレーションを提供します
ジョブでの使用
Vaultインテグレーションが必要なジョブは、.with-build-tokenテンプレートを拡張する必要があります:
my-build-job:
extends: .with-build-token
script:
- # Your build commands here
- # SECURITY_PRIVATE_TOKEN is automatically available in security builds仕組み
- 認証: ジョブはGitLab JWTトークンを使用してVaultで認証します
- トークン取得: グループアクセストークンはVaultからフェッチされ、
SECURITY_PRIVATE_TOKENとして設定されます。
トラブルシューティング
トークンが利用できません
SECURITY_PRIVATE_TOKENが見つからないというエラーが表示される場合:
- セキュリティプロジェクト (
$CI_PROJECT_PATH == $SECURITY_PROJECT_PATH) で実行していることを確認します - あなたのジョブが
.with-build-tokenを拡張していることを確認します - Vaultのパスが
gitlab-ci-config/vault-security-secrets.ymlで正しいことを確認します
リポジトリへのアクセスが拒否されました
リポジトリにアクセスするときに403エラーが発生する場合:
- グループアクセストークンが正しい権限を持っていることを確認します
ALTERNATIVE_SOURCESまたはSECURITY_SOURCESが有効になっていることを確認します- リポジトリがセキュリティグループのアクセススコープ内にあることを確認します
Vault認証の問題
Vault認証が失敗する場合:
VAULT_ID_TOKENが適切に設定されていることを確認しますaudフィールドがVaultサーバーURLと一致することを確認します- GitLabプロジェクトに必要なVaultロール権限があることを確認します