Deploying and configuring
=========================

EDB Agent
Governance監査ログビューアを展開および構成します。これらの設定の背後にある認証モデルと資格情報の処理については、
:ref:`Securing access and handling credentials <Securing access and handling credentials>` を参照してください。

コンテナスタックを理解する
--------------------------

監査ログビューアは、4つのコンテナのDexフロントスタックとして展開されます。

.. csv-table::
  :header: Service,Role
  :widths: 10,30
  :align: left
  :class: longtable

  `nginx`,"Terminates HTTPS, serves the viewer's static assets, and routes API and single-sign-on requests to the right service so the browser talks to a single origin."
  `bff`,"The backend — OIDC client of Dex, instance management, and the HM/Loki proxy that parses logs and caches sessions."
  `dex`,Identity federation — brokers login to your upstream identity providers.
  `bootstrap`,A one-shot helper that generates secrets and the internal certificates the stack needs on first run.

共有Postgresサービスはスタックをバックし、インスタンス構成とセッションのバックエンドのデータベース、およびIDプロバイダーコネクタのDexデータベースをホストします。

前提条件
--------

- Docker 24以降とCompose v2を使用するコンテナホスト。

- ユーザーが信頼する認証局からの、ドメインのTLS証明書とキー。自己署名証明書は、ローカルテストで使用できます。

- 監査する少なくとも1つのアップストリームデータソース `HM instance with a machine user API key <https://www.enterprisedb.com/docs/edb-postgres-ai/latest/hybrid-manager/using_hybrid_manager/governance/>`_ 
  、またはAIエージェントワークロードからPostgresログを受信するスタンドアロンのLokiインスタンス。

導入前構成
----------

ブートストラップヘルパーを実行する前に、次の値を設定します。ブートストラップヘルパーは、その他すべてを自動的に生成および永続化します。

必須
^^^^

.. csv-table::
  :header: Setting,Required,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  Public base URL,Yes,パブリックオリジン — スキームとホスト、パスと後続のスラッシュなし、`https://governance.example.com`など。 OIDC発行者とリダイレクトURIは、そこから派生します。
  Bootstrap admin email,Yes,最初のブレークグラス管理者のメールアドレス。デフォルトの管理許可リストも。
  Postgres password,Production,共有Postgresサービスのパスワード。
  Image registry,Production,事前構築されたイメージのレジストリ。
  Image tag,Production,イメージタグ — リリースバージョンにピン留めします。

ブートストラップヘルパーが生成する値共有クライアントシークレット、セッション署名キー、トークン暗号化キー、およびブートストラップ管理の識別子とパスワードのハッシュは、自動的に書き込まれ、手動で設定しません。

オプショナル
^^^^^^^^^^^^

運用展開には次の設定をお勧めします。

.. csv-table::
  :header: Setting,Default,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  Database connection,Points at the shared Postgres service,バックエンドのデータベースの接続文字列。
  Upstream egress to private ranges,Blocked,登録されたインスタンスがプライベートネットワーク範囲に到達できるかどうか。 HMまたはLoki上流がプライベートIPに存在するオンプレミス展開にのみ許可されます。  :ref:`Securing access and handling credentials<Securing access and handling credentials>` を参照してください。
  OIDC CA bundle,—,自己署名またはプライベートCA OIDC発行者を信頼するCAバンドル。 OIDC TLS検証はオンのままです。これは、信頼をバイパスするのではなく、追加します。
  Session idle timeout,2h,アイドルセッションの有効期限が切れるまでの時間。
  Session absolute lifetime,12h,アクティビティに関係ないセッションの最大有効期間。
  Admin allowlist,The bootstrap admin email,`groups`クレームに`governance-admin`が含まれるユーザーに加えて、管理者アクセスが付与されたメール。

事前構築されたイメージを使用した展開
------------------------------------

事前にビルドされたEDB公開イメージを使用します。ソースからビルドする必要はありません。

1. **TLS証明書を提供します。**
   スタックが想定する場所に証明書とプライベートキーを配置しますフルチェーンとプライベートキー。

2. **展開を構成します。**
   サンプル環境ファイルをコピーし、必要な値-少なくともパブリックベースURLとブートストラップ管理電子メール、およびイメージレジストリとタグ
   :ref:`必須 <必須>` を参照してください。

3. **シークレットを生成して開始します。**
   運用開始スクリプトを実行します。共有シークレット、セッションキーと暗号化キー、ブートストラップ管理の識別子とパスワード、および内部証明書を生成するブートストラップヘルパーを実行し、スタックをアップします。

4. **サインインとフェデレート。**
   ブラウザーで展開を開き、ブートストラップヘルパーが記録したパスワードを使用して、ブートストラップ管理者としてサインインします。次に、
   **設定→IDプロバイダー**
   の下に上流のIDプロバイダーを追加し、日常のログインをそれに切り替えます。

..  Note::
   `latest` を実行するのではなく、リリースバージョンにイメージタグを固定するため、展開が再現可能です。

IDプロバイダーの管理
--------------------

**設定→IDプロバイダー**
の下の監査ログビューアで、ユーザーがサインインするIDプロバイダーを構成します。

1. 組織のIDプロバイダーのOIDC、SAML、またはLDAPコネクタを追加します。

2. フェデレーション後、日常のログインをブートストラップ管理からフェデレーションプロバイダーに切り替え、ブートストラップ管理をブレークグラスアカウントとして維持します。

3. 管理者許可リストを、管理者アクセスを保持する人に制限します。

デプロイメントの保護とモニタリング
----------------------------------

展開が実行されたら、次のことに注意してください。

- **データボリュームを暗号化します。**
  共有Postgresボリュームには、インスタンスアクセスキー、セッション、およびIDプロバイダーコネクタのシークレットが保持されます。保存時暗号化ストレージに保存します。ボリュームが失われると、データベースは空の状態で再作成されます。インスタンスとコネクタは、バックアップから再追加するか、復元する必要があります。
  :ref:`Securing access and handling credentials <Securing access and handling credentials>` を参照してください。

- **ブートストラップ資格情報を保護します。**
  記録されたブートストラップ管理パスワードを機密として扱い、パスワードを安全に保存したらファイルを削除します。

- **上流のTLS検証をオンのままにします。**
  運用中の上流のHMまたはLokiソースのTLS検証を無効にしないでください。

- **Monitor liveness.**
  Dexは、バックエンドとnginxの起動をゲートするヘルスエンドポイントを公開します。コンテナのステータスとnginx上流エラーを介して全体的な活性度を観察します。
