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

GitLab Secrets Manager(OpenBao)

  • プラン: Ultimate
  • 提供形態: GitLab Self-Managed
  • ステータス: 実験的機能

GitLab Secrets Managerは、OpenBao(オープンソースのシークレット管理ソリューション)を使用します。OpenBaoは、GitLabインスタンスで使用されるシークレットの安全なストレージ、アクセス制御、ライフサイクル管理を提供します。

OpenBaoアーキテクチャ

OpenBaoは、既存のGitLabサービスと並行して実行されるオプションのコンポーネントとしてGitLabと統合されています。

  • RailsバックエンドとRunnerは、ロードバランサーを介してOpenBao APIに接続します。
  • OpenBaoは、データをPostgreSQLに格納します。Helmチャートは、データをメインのGitLabデータベースにデフォルトで格納するようにOpenBaoを設定します。
  • OpenBaoは、シークレットストアからアンシールキーを取得します。
  • OpenBaoは、HelmチャートによってマウントされたKubernetes Secretからアンシールキーを読み取ります。
  • 監査ログが有効になっている場合、OpenBaoは、監査ログをRailsバックエンドに送信します。
flowchart TB
    SecretStore[Secret store]
    PostgreSQL[PostgreSQL]
    LB[Load balancer]
    OpenBao[OpenBao active node]

    Rails-- Write secrets and permissions -->LB
    Runner-- Get pipeline secrets -->LB
    LB-->OpenBao
    OpenBao-- Get unseal key -->SecretStore
    OpenBao-- Store -->PostgreSQL

OpenBaoは、すべてのリクエストを処理する単一のアクティブノードで実行されます。また、必要に応じて、アクティブノードが失敗した場合に引き継ぐ複数のスタンバイノードで実行されます。

OpenBaoをインストールする

前提条件:

  • インスタンスへの管理者アクセス権が必要です。
  • GitLab 18.8以降を実行している必要があります。
  • Kubernetesクラスターが必要です。

OpenBaoをインストールするには、Kubernetesデプロイ用のOpenBao Helmチャートを使用します。

インストール後、GitLab Secrets Managerのユーザードキュメントに従って、シークレットの操作をテストし、OpenBaoが動作していることを確認します。

OpenBaoのリソース要件は、GitLabインスタンスのサイズとシークレットの使用パターンによって異なります。

デプロイをモニタリングし、必要に応じて、実際の使用パターンに基づいてリソースを調整します。

CPU要件

OpenBaoのCPU使用率は、主に以下によって左右されます:

  • CI/CDジョブがシークレットをフェッチする頻度。
  • GitLab UIを介してシークレットマネージャーにアクセスする頻度。

推奨されるCPUコア数:

デプロイサイズフェッチ頻度CPUコア
小規模100 ops/sec未満1コア
中規模100~200 ops/sec1~2コア
大規模200 ops/sec超2+コア

たとえば、100,000個のシークレットがあるデプロイのテストで、毎秒139回のフェッチ操作が発生しました。つまり、各シークレットがCI/CDジョブによって約12分ごとにフェッチされ、OpenBaoがそのメモリキャッシュを最大限に活用していると考えられます。

メモリ要件

OpenBaoのメモリ使用量は、主として、GitLab Secrets Managerが有効になっているプロジェクトの数によって決まります。200個のプロジェクトあたり少なくとも1 GBのメモリと、1 GBの安全マージンを割り当てる必要があります。

推奨されるメモリ割り当て:

デプロイサイズプロジェクト数メモリ
小規模200個未満2 GB
中規模400~800個5 GB
大規模1,000個超6+ GB

ストレージ要件

PostgreSQLデータベースのストレージ要件は、主として、シークレットの数によって決まります。単一のシークレットバージョンと、対応するメタデータを格納するには、約13 KBかかります。

使用例:

  • 100,000個のシークレット = ~1.5 GB
  • 200,000個のシークレット = ~3 GB

バックアップと復元

OpenBaoのデータはPostgreSQLに格納され、通常のGitLabバックアップ手順に含める必要があります。

OpenBao固有のバックアップと復元の詳細な手順については、OpenBaoのバックアップドキュメントを参照してください。

高可用性

本番環境デプロイの場合は、以下を検討してください:

  • 冗長性のために複数のOpenBaoレプリカを実行する
  • 可用性の高いPostgreSQLバックエンドを使用する
  • 適切なモニタリングとアラートを実装する

ヘルスチェックとモニタリング

OpenBaoは、モニタリング用のヘルスチェックエンドポイントを提供します:

  • openbao.example.com/v1/sys/health: OpenBaoのヘルスステータスを返します
  • openbao.example.com/v1/sys/seal-status: シールステータスを返します

これらのエンドポイントをモニタリングシステムと統合できます。

パフォーマンスの問題

シークレットの操作が遅い場合:

  • OpenBaoのリソース使用量(CPU、メモリ)を確認してください
  • PostgreSQLバックエンドのパフォーマンスを確認してください
  • OpenBaoとそのPostgreSQLバックエンド間のネットワークレイテンシーを確認してください