Esportazione dei log PostgreSQL nello storage degli oggetti

Esportare i log PostgreSQL, inclusi i log di audit generati dall'estensione pgaudit, in un bucket di Oracle Cloud Infrastructure Object Storage in modo da poter archiviare, scaricare e accedere direttamente dallo storage degli oggetti per migliorare l'accessibilità e gli aspetti di gestione dei log.

Requisiti indispensabili

Prima di poter configurare un sistema di database per esportare i log PostgreSQL in un bucket di storage degli oggetti, è necessario che il bucket esista e che sia necessario concedere a OCI Database l'accesso alle risorse PostgreSQL per il caricamento nel bucket. Se devi creare un nuovo bucket, consulta la sezione relativa alla creazione di un bucket di storage degli oggetti. Per creare criteri che consentono l'accesso delle risorse al bucket, vedere Criteri IAM obbligatori.

Criterio IAM necessario

OCI Database con PostgreSQL utilizza i principal delle risorse per autenticare e accedere ad altre risorse Oracle Cloud Infrastructure, ad esempio i bucket di storage degli oggetti. Puoi concedere a un sistema di database, a un set specifico di sistemi di database o a tutti i sistemi di database l'accesso al bucket di storage degli oggetti.

Per concedere a un sistema di database specifico l'accesso per leggere i bucket e scrivere gli oggetti in un bucket, utilizzare i criteri riportati di seguito.

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>'}

Per concedere a tutti i sistemi di database l'accesso a bucket di lettura e scrittura di oggetti in un bucket, utilizzare i criteri riportati di seguito.

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>'}

I gruppi dinamici consentono di raggruppare il database OCI con i sistemi di database PostgreSQL come attori principali, simili ai gruppi di utenti. In primo luogo, i sistemi di database che richiedono l'accesso devono essere inseriti in un gruppo dinamico, quindi al gruppo dinamico viene concesso l'accesso per caricare gli oggetti nel bucket.

L'appartenenza al gruppo dinamico dipende da un set di criteri definiti, denominati regole di corrispondenza. L'esempio seguente mostra una regola di corrispondenza che include tutti i sistemi di database in un compartimento definito.

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

È inoltre possibile utilizzare tag definite durante la creazione di gruppi dinamici per un controllo dell'accesso più specifico, ad esempio:

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

Per ulteriori informazioni, vedere Gestione dei gruppi dinamici e Creazione di un gruppo dinamico.

Per concedere l'accesso ai gruppi dinamici per leggere i bucket e scrivere gli oggetti in un bucket, utilizzare un criterio come quello riportato di seguito.

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>'}

Configurazione di un sistema di database per l'esportazione dei log

Dopo aver impostato l'accesso al principal risorsa, configurare il database OCI con il sistema di database PostgreSQL per esportare i log nello storage degli oggetti definendo parametri di configurazione personalizzati. Potrebbe essere necessario creare o copia una configurazione per specificare i parametri di configurazione riportati di seguito.

  • oci.log_destination: oci_object_storage
  • oci.log_destination_os_namespace: lo spazio di nomi dello storage degli oggetti per la tenancy
  • oci.log_destination_os_bucket_name: il nome del bucket di storage degli oggetti in cui vengono esportati i log

Dopo aver specificato una configurazione con dettagli di esportazione log, applicare tale configurazione al sistema di database. Per ulteriori informazioni, vedere Modifica della configurazione applicata a un sistema di database.

Dettagli oggetto

I log vengono caricati nel bucket di storage degli oggetti specificato utilizzando la seguente convenzione di denominazione:

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

  • <DBSYSTEM_ID>: l'ID del database OCI con sistema di database PostgreSQL.
  • <DB_INSTANCEID>: l'ID istanza del database PostgreSQL.
  • <DATE>: la data di generazione dei log in formato YYYY-MM-DD.
  • ######: numero di sequenza.

Ad esempio:

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