WAGBY11 MANUAL / 26
DBの通信と保存データを暗号化する
DB接続の通信暗号化と、DBに保存するデータの暗号化を別々に設定できます。Wagby側で指定する要件と、DB管理者がDB・ストレージ側で準備する作業を区別します。
最終更新日:
1. このページで伝える機能
DB接続の通信暗号化と、DBに保存するデータの暗号化を別々に設定できます。Wagby側で指定する要件と、DB管理者がDB・ストレージ側で準備する作業を区別します。
2. Wagby11で実現できること
2.1 通信と保存時の暗号化を分ける
| 対象 | 保護するもの | Wagby側の設定 |
|---|---|---|
| 通信暗号化 | アプリケーションとDBの間を流れる情報 | connectionEncryption |
| 保存時暗号化 | DBやストレージに保存するファイル等 | atRestEncryption |
通信を暗号化しても、DBファイルが暗号化されるわけではありません。どちらを必要とするかを決め、両方が必要ならそれぞれ準備します。
2.2 証明書を検証してDBへ接続する
通信暗号化を有効にする場合は、DB側のTLS対応と有効なサーバー証明書、接続元が証明書を信頼する設定が必要です。接続先ホスト名と証明書の名前も一致させます。
暗号化接続を要求した場合、暗号化や証明書検証に失敗すれば接続エラーとなり、平文へ切り替えません。DBごとのドライバ設定を使い、証明書検証を省略する設定は使いません。
| DB | 通信暗号化の設定例 |
|---|---|
| PostgreSQL | sslmode: verify-fullとCA証明書 |
| MySQL | sslMode: VERIFY_IDENTITYと信頼するキーストア |
| Oracle Database | TCPS接続とサーバー証明書の名前の検証 |
| SQL Server | encrypt: "true"とtrustServerCertificate: "false" |
2.3 保存時暗号化はDB側でも準備する
atRestEncryption.required: trueは、保存時暗号化を導入・維持する運用要件です。この指定だけでデータファイルを暗号化することはできません。DB管理者が対象のDB・ファイルシステム・クラウドDBなどで暗号化を有効にし、鍵を管理します。
| DB | 対応する方式 |
|---|---|
| PostgreSQL | ファイルシステムやストレージ等の暗号化(filesystem) |
| MySQL | InnoDBの暗号化(innodb) |
| Oracle Database・SQL Server | 透過的データ暗号化(tde) |
| H2のファイルDB | ファイル暗号化(h2-file) |
対象データだけでなく、ログやバックアップが保護される範囲、鍵の保管と復旧方法も確認します。通常の検索ではDBが復号して返すため、参照権限のあるアプリケーションからは元の値を読み取れます。
2.4 設定と実際の保護状態を確認する
証明書の名前不一致や信頼できない証明書で接続が拒否されること、DB・ストレージの保存時暗号化が実際に有効であることを確認します。特にファイルシステムの暗号化はJDBCから一般的に検証できないため、設定値だけで暗号化済みとは判断しません。
H2の組み込みファイルDBにはDBへの通信路がないため、通信暗号化は指定しません。ファイル暗号化ではファイル用パスワードを別の環境変数で管理します。外部DBの準備とライセンスの条件は、外部データベースを使う場合を参照してください。
3. AIへの指示例
最小限の指示例
DBとの通信を暗号化し、保存データも暗号化する構成にしてください。AIはDB製品、証明書と信頼設定、保存時暗号化の方式やDB側の準備を確認します。暗号化したい範囲と、DB管理者が担当する作業を具体的に伝えます。この短い指示だけで、次の詳細例と同じ設定になるとは限りません。
より詳細な指示例
Wagby11のguideと必要なreferenceを確認してください。
PostgreSQLの既存database設定に、TLSと証明書のホスト名検証を必須とするconnectionEncryptionを追加してください。
CA証明書は/etc/wagby/postgresql-ca.pemとする例を用意し、実際の配置に合わせて確認してください。
atRestEncryptionはrequired: true、method: filesystemとします。これは暗号化を要求する設定であり、DB管理者がストレージの暗号化と鍵管理を別途準備することを説明してください。
平文への切替や証明書検証の省略は行わないでください。データ・ログ・バックアップの保護範囲と復旧方法もDB管理者が確認する手順にしてください。
既存のモデル・主キー・固定ID・データ・権限と、関係のない設定を保持してください。接続情報や秘密値を原稿・コードへ埋め込まないでください。設定の検証・必要な再生成・起動確認を行い、変更内容と確認結果を説明してください。4. 編集されるAppSchemaの例
次はDB設定の参考例です。構文を覚えなくても、利用するDBと接続・運用の条件をAIへ伝えられます。
database:
# DB種別・接続先・認証情報など、既存の設定は省略
connectionEncryption:
enabled: true
properties:
sslmode: verify-full
sslrootcert: /etc/wagby/postgresql-ca.pem
atRestEncryption:
required: true
method: filesystemPostgreSQLの既存設定へ追加する抜粋です。他のDBへそのまま転用せず、DBに合う方式・証明書・ドライバ設定を指定します。キーストア等のパスワードが必要な場合は、connectionEncryption.propertyEnvで環境変数から読み取ります。
5. 参考資料
- guide:データベース接続
designer/docs/appschema/html/guide/02-environment/02-database.html- reference:データベース設定
designer/docs/appschema/html/reference/25-database.html