pgAudit のロギング動作を構成するには、pgaudit.log
フラグまたは pgaudit.role
フラグを設定します。
pgaudit.log
を設定して、セッション ロギングを有効にして構成します。このフラグをインスタンス、データベース、ロールに設定して、pgAudit がログに記録するオペレーションの範囲を定義できます。このフラグは、pgAudit がログに記録するオペレーションのタイプを定義する値に設定します。pgaudit.role
を設定してオブジェクト ロギングを有効にして構成します。これにより、特定の関係に影響するステートメントがログに記録されます。このフラグをロールの名前に設定し、ログに記録する特定のオブジェクトに対するステートメント アクセス権を付与します。ステートメント アクセスにはSELECT, INSERT, UPDATE, and DELETE
が含まれます。pgAudit は、任意のユーザーが実行したアクセスとオブジェクトの組み合わせに一致するすべてのオペレーションをログに記録します。
以降のセクションでは、pgAudit のログ記録動作を設定するオプションの例を示します。
拡張機能の追加機能については、pgAudit のドキュメントをご覧ください。
インスタンス内のすべてのデータベースでセッション監査ロギングを構成する
インスタンス内のすべてのデータベースの監査を構成するには、インスタンス レベルで pgaudit.log
フラグを設定します。
次に例を示します。
- インスタンス内のすべてのデータベースに対するすべてのオペレーションの監査を有効にするには:
gcloud alloydb instances update my-instance \ --database-flags pgaudit.log=all[,flag2=value2...] \ --region=us-central1 \ --cluster=my-cluster \ --project=my-project
- インスタンス内のすべてのデータベースに対する読み取り / 書き込みオペレーションのみの監査を有効にするには:
gcloud alloydb instances update my-instance \ --database-flags=^:^pgaudit.log=read,write[:flag2=value2...] \ --region=us-central1 \ --cluster=my-cluster \ --project=my-project
代替区切り文字構文を使用していることに注意してください。これにより、フラグ値内でカンマ文字を使用できます。
データベース フラグの構成については、データベース フラグを構成するをご覧ください。
特定のデータベースのセッション監査ロギングを構成する
特定のデータベースの監査を構成するには、データベース レベルで pgaudit.log
フラグを設定します。
たとえば、データベースの読み取り/書き込み監査を有効にするには、finance に次のコマンドを実行します。
finance=> ALTER DATABASE finance SET pgaudit.log = 'read,write';
1 人のユーザーのセッション監査ロギングを構成する
特定のユーザーの監査を有効にするには、ロールごとに pgaudit.log
を設定します。
たとえば、ユーザー Alice が実行するすべてのデータベース オペレーションの監査を設定するには、次のようにします。
finance=> ALTER ROLE alice SET pgaudit.log = 'all';
オブジェクト監査ロギングを構成する
リレーションの監査は、特定のデータベースの監査よりも範囲が狭くなります。リレーションの監査では、一意の監査ロールが pgaudit.role
パラメータに割り当てられます。このオペレーションは、このロールに付与されたオブジェクトやリレーションをログに記録します。
次に例を示します。
- 従業員データベース内の給与リレーションのすべての
SELECT
クエリの監査を構成するには、次のコマンドを使用します。employee=> CREATE ROLE auditor WITH NOLOGIN;
employee=> ALTER DATABASE employee SET pgaudit.role = 'auditor';
employee=> GRANT SELECT ON salary TO auditor;
特定のリレーションで列のサブセットを監査することもできます。
次に例を示します。
income
列とtax_status
列が salary リレーションからアクセスされた場合にのみ監査ロギングを実行するように構成するには:employee=> GRANT SELECT(income, tax_status) ON salary TO auditor;