クラスター管理プロジェクトでVaultをインストール
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
HashiCorp Vaultは、パスワード、認証情報、証明書などを安全に管理および保存するために使用できるシークレット管理ソリューションです。Vaultをインストールすると、アプリケーション、GitLab CI/CDジョブなどで使用される認証情報の一元化された安全なデータストアを提供するために活用できます。また、SSL/TLS証明書をインフラストラクチャ内のシステムとデプロイに提供する方法としても役立ちます。これらのすべての認証情報に対して単一のソースとしてVaultを活用することで、機密性の高い認証情報と証明書に対するアクセス、制御、および可監査性の単一ソースを持つことで、セキュリティが向上します。この機能を使用するには、GitLabに最高レベルのアクセスと制御を許可する必要があります。したがって、GitLabが侵害された場合、このVaultインスタンスのセキュリティも同様に侵害されます。このセキュリティリスクを回避するために、GitLabでは、独自のHashiCorp Vaultを使用して、外部シークレットとCIを活用することをお勧めします。
管理プロジェクトテンプレートから作成されたプロジェクトが既にあると仮定して、Vaultをインストールするには、helmfile.yamlから次の行のコメントを外します:
- path: applications/vault/helmfile.yamlデフォルトでは、スケーラブルなストレージバックエンドがない基本的なVaultセットアップが提供されます。これは、簡単なテストや小規模のデプロイには十分ですが、スケールできる量に制限があり、単一のインスタンスデプロイであるため、Vaultアプリケーションをアップグレードするとダウンタイムが発生します。
本番環境でVaultを最適に使用するには、Vaultの内部構造と設定方法をよく理解しておくことが理想的です。これを行うには、Vault設定ガイド 、Vaultドキュメント 、およびVault Helmチャートのvalues.yamlファイルをお読みください。
少なくとも、ほとんどのユーザーは以下をセットアップします:
- メインキーをさらに暗号化するためのseal。
- 環境およびストレージセキュリティ要件に適したストレージバックエンド。
- HAモード。
- Vault UI。
次に、Google Cloud Storageバックエンドを使用して自動アンシール用にGoogleキーManagement Serviceを設定し、Vault UIを有効にし、3つのポッドレプリカでHAを有効にする値ファイルの例(applications/vault/values.yaml)を示します。以下のstorageおよびsealスタンザは例であり、環境に固有の設定に置き換える必要があります。
# Enable the Vault WebUI
ui:
enabled: true
server:
# Disable the built in data storage volume as it's not safe for High Availability mode
dataStorage:
enabled: false
# Enable High Availability Mode
ha:
enabled: true
# Configure Vault to listen on port 8200 for normal traffic and port 8201 for inter-cluster traffic
config: |
listener "tcp" {
tls_disable = 1
address = "[::]:8200"
cluster_address = "[::]:8201"
}
# Configure Vault to store its data in a GCS Bucket backend
storage "gcs" {
path = "gcs://my-vault-storage/vault-bucket"
ha_enabled = "true"
}
# Configure Vault to unseal storage using a GKMS key
seal "gcpckms" {
project = "vault-helm-dev-246514"
region = "global"
key_ring = "vault-helm-unseal-kr"
crypto_key = "vault-helm-unseal-key"
}Vaultを正常にインストールしたら、Vaultを初期化して、初期ルートトークンを取得する必要があります。これを行うには、VaultがデプロイされたKubernetesクラスターへのアクセスが必要です。Vaultを初期化するには、Kubernetes内で実行されているVaultポッドのいずれかのシェルを取得します(通常、これはkubectlコマンドラインツールを使用して行われます)。シェルをポッドに入れたら、vault operator initコマンドラインを実行します:
kubectl -n gitlab-managed-apps exec -it vault-0 sh
/ $ vault operator initこれにより、アンシールキーと初期ルートトークンが提供されます。これらを書き留めて安全に保管してください。これらは、ライフサイクル全体を通してVaultをアンシールするために必要です。