オブジェクト・ストレージへのPostgreSQLログのエクスポート

pgaudit拡張によって生成された監査ログを含むPostgreSQLログをOracle Cloud Infrastructure Object Storageバケットにエクスポートして、アクセシビリティおよびログ管理の側面を強化するために、オブジェクト・ストレージから直接アーカイブ、ダウンロードおよびアクセスできるようにします。

前提条件

PostgreSQLログをオブジェクト・ストレージ・バケットにエクスポートするようにデータベース・システムを構成する前に、バケットが存在し、バケットにアップロードするためのPostgreSQLOCI Database with PostgreSQLリソース・アクセス権をOCI Databaseに付与する必要があります。新しいバケットを作成する必要がある場合は、オブジェクト・ストレージ・バケットの作成を参照してください。バケットへのリソース・アクセスを許可するポリシーを作成するには、必要なIAMポリシーを参照してください。

必要なIAMポリシー

OCI Database with PostgreSQLでは、リソース・プリンシパルを使用して、オブジェクト・ストレージ・バケットなどの他のOracle Cloud Infrastructureリソースを認証およびアクセスします。データベース・システム、特定のデータベース・システムのセット、またはすべてのデータベース・システムにオブジェクト・ストレージ・バケットへのアクセス権を付与できます。

バケットの読取りおよびバケットへのオブジェクトの書込みに対する特定のデータベース・システム・アクセス権を付与するには、次のポリシーを使用します:

allow any-user to read buckets in compartment <compartment-name> where ALL {request.principal.id = '<dbsystem_OCID>', target.bucket.name = '<bucket_name>'}
allow any-user to manage objects in compartment <compartment-name> where ALL {request.principal.id = '<dbsystem_OCID>', target.bucket.name = '<bucket_name>'}

すべてのデータベース・システムに読取りバケットへのアクセス権を付与し、バケットにオブジェクトを書き込むには、次のポリシーを使用します:

allow any-user to read buckets in compartment <compartment-name> where ALL {request.resource.type = 'postgresqldbsystem', target.bucket.name = '<bucket name>'}
allow any-user to manage objects in compartment <compartment-name> where ALL {request.resource.type = 'postgresqldbsystem', target.bucket.name = '<bucket name>'}

動的グループでは、ユーザー・グループと同様に、OCI Database with PostgreSQLデータベース・システムをプリンシパル・アクターとしてグループ化できます。まず、アクセスが必要なデータベース・システムを動的グループに配置し、次に動的グループにバケットにオブジェクトをアップロードするためのアクセス権を付与します。

動的グループのメンバーシップは、定義した一連の条件(マッチング ルール)によって異なります。次の例は、定義済コンパートメント内のすべてのデータベース・システムを含む一致ルールを示しています:

all { resource.type='postgresqldbsystem', resource.compartment.id = 'ocid1.compartment.oc1..exampleuniqueID'}

より具体的なアクセス制御のために動的グループを作成するときに、定義済タグを使用することもできます。次に例を示します。

all { resource.type = 'postgresqldbsystem', tag.<tagnamespace>.<tagkey>.value='<tagvalue>'}

詳細は、動的グループの管理および動的グループの作成を参照してください。

バケットの読取りおよびバケットへのオブジェクトの書込みに対する動的グループ・アクセス権を付与するには、次のようなポリシーを使用します:

Allow dynamic-group <PSQL_DynamicGroup> to read buckets in compartment <compartment-name> where ALL {target.bucket.name = '<bucket name>'}
Allow dynamic-group <PSQL_DynamicGroup> to manage objects in compartment <compartment-name> where ALL {target.bucket.name = '<bucket name>'}

ログ・エクスポート用のデータベース・システムの構成

リソース・プリンシパル・アクセスを設定した後、カスタム構成パラメータを定義してログをオブジェクト・ストレージにエクスポートするように、PostgreSQLOCI Database with PostgreSQLデータベース・システムでOCI Databaseを構成します。次の構成パラメータを指定するために、構成を作成またはコピーする必要がある場合があります。

  • oci.log_destination: oci_object_storage
  • oci.log_destination_os_namespace: テナンシのオブジェクト・ストレージ・ネームスペース
  • oci.log_destination_os_bucket_name: ログのエクスポート先のオブジェクト・ストレージ・バケット名

ログ・エクスポートの詳細を指定した構成が終わったら、その構成をデータベース・システムに適用します。詳細は、データベース・システムに適用される構成の変更を参照してください。

オブジェクトの詳細

ログは、次の命名規則を使用して、指定されたオブジェクト・ストレージ・バケットにアップロードされます:

<DBSYSTEM_ID>/<DB_INSTANCEID>/postgresql-<DATE>_######.csv.gz

  • <DBSYSTEM_ID>: The ID of the OCI Database with PostgreSQL database system.
  • <DB_INSTANCEID>: PostgreSQLデータベースのインスタンスID。
  • <DATE>: ログが生成された日付(YYYY-MM-DD形式)。
  • ######: 順序番号。

たとえば:

mydbsystem/instance123/postgresql-2025-01-27_000001.csv.gz