ロギング動作を構成する

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;