configuring-audit-logging について
Configuring Audit Logging は、CockroachDB クラスターの SQL 監査ログを設定するスキルで、セキュリティやコンプライアンスを担うデータベース管理者向けです。管理者操作やロール単位の監査、設定確認、ログ出力、運用への影響を扱います。
主な機能
- 01管理者 SQL 操作の監査有効化
- 02ロール別監査ポリシーの設定
- 03スロークエリログのしきい値設定
- 04監査設定とログ配送の確認
- 05性能とストレージへの影響確認
活用シーン
- 01コンプライアンス要件に沿った監査ログ設定
- 02機密データにアクセスする特定ロールの監査
- 03監査記録の欠落調査
- 04クラスター監査ログの出力確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ cockroachlabs/ cockroachdb-skills --skill configuring-audit-loggingインストール後、Claude Code で/configuring-audit-loggingを入力して読み込まれたか確認します。
同梱ファイルreferences/sql-queries.md
詳細
監査ログの設定
CockroachDB クラスターで SQL 監査ログを設定し、認証試行、権限の変更、DDL 操作、機密データへのアクセスなど、セキュリティに関わるイベントを記録します。クラスター全体の監査設定と、対象を絞ったログ記録を行うロールベースの監査ポリシーの両方に対応しています。
このスキルを使う場面
- SOC 2、HIPAA、または PCI DSS のコンプライアンス要件を満たすために監査ログを有効にする
- 特定のユーザーまたはロール向けにロールベースの監査ポリシーを設定する
- 監査ログが適切に設定され、イベントを記録していることを確認する
- 監査証跡の欠落に関するセキュリティ監査の指摘に対応する
- 監査ログの設定を確認して、セキュリティインシデントを調査する
前提条件
- SQL アクセス:クラスター設定の変更に必要な admin ロール
- **CockroachDB のバージョン:**ロールベースの監査ログには 22.2 以降が必要です
- ログのエクスポート:永続的な監査証跡を記録するよう設定してください(CockroachDB Cloud はログをクラウドプロバイダーにエクスポートします)
- **ストレージの計画:**監査ログによってログ量が増加するため、追加のストレージを計画してください
アクセス権を確認します:
-- Verify admin role
SELECT member FROM [SHOW GRANTS ON ROLE admin] WHERE member = current_user();
-- Check CockroachDB version
SELECT version();
手順
1. 現在の監査設定を確認する
-- User audit logging configuration
SHOW CLUSTER SETTING sql.log.user_audit;
-- Admin audit logging
SHOW CLUSTER SETTING sql.log.admin_audit.enabled;
-- All audit-related settings
SELECT variable, value
FROM [SHOW ALL CLUSTER SETTINGS]
WHERE variable LIKE '%audit%'
ORDER BY variable;
監査関連のクエリについては、SQL クエリのリファレンスを参照してください。
2. Admin 監査ログを有効にする
Admin 監査ログでは、admin ロールを持つユーザーが実行したすべての SQL 文が記録されます。
-- Enable admin audit logging
SET CLUSTER SETTING sql.log.admin_audit.enabled = true;
記録される内容:
- admin ユーザーが実行したすべての SQL 文
- DDL 操作(CREATE、ALTER、DROP)
- GRANT および REVOKE 操作
- クラスター設定の変更
3. ロールベースの監査ログを設定する
ロールベースの監査ログでは、特定のロールを対象にログを記録できます。クラスター全体を対象とするログ記録より効率的です。
-- Enable audit logging for a specific role
-- Format: <role_name> <audit_mode>
-- Audit modes: ALL (all statements), READ (reads only), WRITE (writes only), NONE (disable)
SET CLUSTER SETTING sql.log.user_audit = 'sensitive_data_reader ALL';
複数のロールを指定する場合:
-- Audit multiple roles (newline-separated)
SET CLUSTER SETTING sql.log.user_audit = 'sensitive_data_reader ALL
security_admin ALL
app_service_account READ';
用途に応じた監査ロールを作成する場合:
-- Create a role for users accessing sensitive data
CREATE ROLE sensitive_data_reader;
GRANT SELECT ON TABLE customers, payments, pii_table TO sensitive_data_reader;
-- Assign users to the audited role
GRANT sensitive_data_reader TO app_user;
-- Enable audit logging for this role
SET CLUSTER SETTING sql.log.user_audit = 'sensitive_data_reader ALL';
4. スロークエリログを設定する(補足)
スロークエリログでは、レイテンシのしきい値を超えるクエリを記録します。これにより、不正なスキャンやデータ持ち出しの試みを検知できる場合があります。
-- Log queries taking longer than 1 second
SET CLUSTER SETTING sql.log.slow_query.latency_threshold = '1s';
-- Log all queries (high overhead — use only for investigation)
-- SET CLUSTER SETTING sql.log.slow_query.latency_threshold = '0';
5. 監査ログを検証する
-- Confirm settings are active
SHOW CLUSTER SETTING sql.log.user_audit;
SHOW CLUSTER SETTING sql.log.admin_audit.enabled;
-- Execute a test statement to generate an audit event
SELECT 1;
ログの配信を検証する: CockroachDB Cloud では、監査ログは設定済みのログシンク(クラウドプロバイダーのロギングサービス)にエクスポートされます。ログのエクスポート先を確認し、イベントが記録されていることを検証してください。
# On CockroachDB Cloud, check log export configuration
ccloud cluster info <cluster-name> -o json
# Look for log_export_config section
安全性に関する考慮事項
**パフォーマンスへの影響:**監査ログによって CPU および I/O のオーバーヘッドが増加します。影響の度合いは監査の範囲によって異なります。
| 監査範囲 | パフォーマンスへの影響 | 推奨事項 |
|---|---|---|
| Admin 監査のみ | 最小限 | あらゆる環境で安全に使用できます |
| ロールベースの監査(対象を絞ったロール) | 低~中程度 | 本番環境に推奨します |
| クラスター全体の全ステートメントのログ記録 | 高い | 調査中にのみ使用してください |
| スロークエリログ(しきい値 > 0) | 最小限 | あらゆる環境で安全に使用できます |
| スロークエリログ(しきい値 = 0) | 非常に高い | 本番環境では絶対に使用しないでください |
**ストレージへの影響:**監査ログによってログ量が増加します。次の増加量を見込んでください。
- Admin 監査:約 1~5% のログ量増加
- ロールベースの監査:監査対象ロールのクエリ量に比例
- 全ステートメントのログ記録:ログ量が 10 倍以上に増加
推奨事項:
- まず Admin 監査ログを有効にします(オーバーヘッドが最小限で、価値が高いため)
- 機密データにアクセスするロールには、ロールベースの監査を追加します
- 本番環境では、クラスター全体の全ステートメントのログ記録を避けます
- ログのローテーションと保持ポリシーを設定します
ロールバック
-- Disable user audit logging
SET CLUSTER SETTING sql.log.user_audit = '';
-- Disable admin audit logging
SET CLUSTER SETTING sql.log.admin_audit.enabled = false;
-- Reset slow query threshold to default
RESET CLUSTER SETTING sql.log.slow_query.latency_threshold;
参考資料
スキルの参考資料:
関連スキル:
- auditing-cloud-cluster-security — セキュリティ態勢の包括的な監査を実行します
- hardening-user-privileges — 目的に応じた監査用のロールを作成します
CockroachDB 公式ドキュメント: