SafeGrd: 定期的に復元とチェックが行われるPostgreSQLのバックアップ
2026年10月22日にSafeGrdによって投稿
関連:プロプライエタリ
SafeGrdは、PostgreSQL 13以降向けの新しいバックアップサービスで、すべてのバックアップを定期的に復元し、行数をチェックします。
SafeGrdは、バックアップを取得し、後でそれをメモリまたは一時的なデータベースに復元し、復元されたデータ量をカウントすることで、バックアップが破損しているかどうかを、実際に必要なときに備えて事前に把握できるようにします。
バックアップの取得
safegrdデーモンは、データベースの近くのホスト上で実行され、読み取り専用ロールとして接続します。PostgreSQL 14以降では、このロールに必要な権限はpg_read_all_dataのみです。13の場合は、各スキーマに対して個別に権限を付与します。スキーマはpg_dumpから取得され、行はバイナリCOPYを使用して、1つのトランザクションで転送されます。初回実行後は、変更された部分のみがアップロードされます。
バックアップは、ホスト上でageを使用して暗号化され、その後、Object Lockが有効なS3バケットに書き込まれます。これは、お客様自身のバケットでも、SafeGrdが提供するストレージでも構いません。バックアップデータは、SafeGrdのサーバーを経由しません。
ageキーの管理方法は、お客様が選択できます。お客様が管理するキーを使用する場合、お客様のみがこれらのバックアップを復号化できます。SafeGrdが管理するキーを使用する場合、SafeGrdはキーを安全に保管し、登録されたホストのみに公開します。これにより、ホストを失った場合でも復元できます。
Supabase、Neon、およびAmazon RDSは、接続文字列を使用して動作します。Supabaseのバックアップは、Supabase自身のPostgresイメージに復元されるため、ダンプに含まれる拡張機能もロードされます。
バックアップのテスト
バックアップのテストは、Fire Drillと呼びます。最新のバックアップを取得し、復号化し、以下のいずれかの方法でチェックを行います。
メモリ上でのテスト:サーバーが稼働していない状態で、ダンプを再生し、テーブル、行、列の数、および拡張機能を、バックアップに記録された値と比較します。
サンドボックス上でのテスト:バックアップを一時的なPostgreSQLデータベースに復元し、そこでカウントをチェックします。お客様独自のSQLチェックを追加することもできます。例えば、SELECT count(*) FROM users WHERE email IS NULL は、0を返す必要があります。
各監査プロセスは、カウント数とチェック結果を記録した、署名および日付が記載された記録を作成します。各記録は、前の記録を参照しています。アテスト検証ツールは、ブラウザ上でSafeGrdが公開している署名キーと照合して検証を行います。インストールは不要です。
試してみるには:
`curl -fsSL https://safegrd.dev/install.sh | sh`
`safegrd login`
`safegrd enroll`
CLI(コマンドラインインターフェース)のソースコードは、GitHubでBusiness Source License 1.1の下に公開されています。
無料プランでは、1つのデータベースが利用可能です。毎日、SafeGrdが提供するストレージにバックアップされます。または、ご自身のストレージに毎時バックアップすることも可能です。また、週に一度、メモリ上で監査が行われます。有料プランは月額15ドルからで、毎時のバックアップ、サンドボックス環境での監査、およびより多くのデータベースを利用できます。
ドキュメント:safegrd.dev/docs