正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

クラスター管理プロジェクトで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のドキュメント、およびVaultHelmチャートのvalues.yamlファイルを読むことで行えます。

最低限、ほとんどのユーザーは以下を設定します:

以下は、自動アンシール用にGoogleキーManagement Serviceを構成し、Google Cloud Storageバックエンドを使用し、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のいずれかのポッドにShellを取得します(通常、これはkubectlコマンドラインツールを使用して行われます)。ポッドにShellに入った後、vault operator initコマンドを実行します:

kubectl -n gitlab-managed-apps exec -it vault-0 sh
/ $ vault operator init

これにより、アンシールキーと初期ルートトークンが提供されます。これらはVaultのライフサイクル全体でアンシールするために必要となるため、必ずメモを取り、安全に保管してください。