設定 pgAudit 擴充功能 - Amazon Aurora

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

設定 pgAudit 擴充功能

若要在 Aurora PostgreSQL 資料庫叢集上設定 PgAudit 擴充功能,您必須先將 PgAudit 新增至 Aurora PostgreSQL 資料庫叢集的自訂資料庫叢集參數群組上的共用程式庫。如需建立自訂資料庫參數群組的相關資訊,請參閱 Amazon Aurora 的參數群組接下來,您會安裝 pgAudit 擴充功能。最後,您會指定要稽核的資料庫和物件。本節中的程序展示做法。您可以使用 AWS Management Console 或 AWS CLI。

您必須具有做為 rds_superuser 角色的許可,才能執行所有這些任務。

以下步驟假設您的 Aurora PostgreSQL 資料庫叢集與自訂資料庫叢集參數群組相關聯。

設定 pgAudit 擴充功能
  1. 登入 AWS Management Console,開啟位於 https://console.aws.amazon.com/rds/ 的 Amazon RDS 主控台。

  2. 在導覽窗格中,選擇您的 Aurora PostgreSQL 資料庫叢集的寫入器執行個體

  3. 針對您的 Aurora PostgreSQL 資料庫叢集的寫入器執行個體開啟 Configuration (組態) 索引標籤。在執行個體詳細資訊之間,尋找 Parameter group (參數群組) 連結。

  4. 選擇連結以開啟與 Aurora PostgreSQL 資料庫叢集相關聯的自訂參數。

  5. Parameters (參數) 搜尋欄位中,輸入 shared_pre 以尋找 shared_preload_libraries 參數。

  6. 選擇 Edit parameters (編輯參數) 以存取屬性值。

  7. Values (值) 欄位中,將 pgaudit 新增至清單。使用逗號區隔值清單中的項目。

    已新增 pgAudit 之 shared_preload_libaries 參數的影像。
  8. 重新啟動 Aurora PostgreSQL 資料庫叢集的寫入器執行個體,以便您對 shared_preload_libraries 參數所做的變更生效。

  9. 當執行個體可用時,請驗證 pgAudit 是否已初始化。使用 psql 連線至 Aurora PostgreSQL 資料庫叢集的寫入器執行個體,然後執行下列命令。

    SHOW shared_preload_libraries; shared_preload_libraries -------------------------- rdsutils,pgaudit (1 row)
  10. 在初始化 pgAudit 之後,您現在可以建立擴充功能。您必須在初始化程式庫之後建立擴充功能,因為 pgaudit 擴充功能會安裝事件觸發條件,以稽核資料定義語言 (DDL) 陳述式。

    CREATE EXTENSION pgaudit;
  11. 關閉 psql 工作階段。

    labdb=> \q
  12. 登入 AWS Management Console,開啟位於 https://console.aws.amazon.com/rds/ 的 Amazon RDS 主控台。

  13. 在清單中尋找 pgaudit.log 參數,並設定為適合您使用案例的適當值。例如,將 pgaudit.log 參數設定為 write (如下圖所示) 會擷取日誌的插入、更新、刪除,以及其他一些類型的變更。

    pgaudit.log 參數與設定的影像。

    您也可以針對 pgaudit.log 參數選擇下列其中一個值。

    • none – 這是預設值。不會記錄任何資料庫變更。

    • all – 記錄一切 (read、write、function、role、ddl、misc)。

    • ddl – 記錄未包含在 ROLE 類別中的所有資料定義語言 (DDL) 陳述式。

    • function – 記錄函數呼叫和 DO 區塊。

    • misc – 記錄其他命令,例如 DISCARDFETCHCHECKPOINTVACUUMSET

    • read – 來源為關聯 (例如資料表) 或查詢時,記錄 SELECTCOPY

    • role – 記錄與角色和權限相關的陳述式,例如 GRANTREVOKECREATE ROLEALTER ROLEDROP ROLE

    • write – 目的地為關聯 (資料表) 時,記錄 INSERTUPDATEDELETETRUNCATECOPY

  14. 選擇儲存變更

  15. 前往 https://console.aws.amazon.com/rds/,開啟 Amazon RDS 主控台。

  16. 在資料庫清單中,選擇您的 Aurora PostgreSQL 資料庫叢集的寫入器執行個體

設定 pgAudit

若要使用 AWS CLI 設定 pgAudit,請呼叫 modify-db-parameter-group 操作,來修改自訂參數群組中的稽核日誌參數,如下列程序所示。

  1. 使用下列 AWS CLI 命令,將 pgaudit 新增至 shared_preload_libraries 參數。

    aws rds modify-db-parameter-group \ --db-parameter-group-name custom-param-group-name \ --parameters "ParameterName=shared_preload_libraries,ParameterValue=pgaudit,ApplyMethod=pending-reboot" \ --region aws-region
  2. 使用下列 AWS CLI 命令重新啟動 Aurora PostgreSQL 資料庫叢集的寫入器執行個體,以便初始化 pgaudit 程式庫。

    aws rds reboot-db-instance \ --db-instance-identifier writer-instance \ --region aws-region
  3. 當執行個體可用時,您可以驗證 pgaudit 是否已初始化。使用 psql 連線至 Aurora PostgreSQL 資料庫叢集的寫入器執行個體,然後執行下列命令。

    SHOW shared_preload_libraries; shared_preload_libraries -------------------------- rdsutils,pgaudit (1 row)

    在初始化 PgAudit 之後,您現在可以建立擴充功能。

    CREATE EXTENSION pgaudit;
  4. 關閉 psql 工作階段,以便您可以使用 AWS CLI。

    labdb=> \q
  5. 使用下列 AWS CLI 命令,來指定要由工作階段稽核記錄所記錄的陳述式類別。此範例會將 pgaudit.log 參數設定為 write,此參數會擷取日誌的插入、更新和刪除操作。

    aws rds modify-db-parameter-group \ --db-parameter-group-name custom-param-group-name \ --parameters "ParameterName=pgaudit.log,ParameterValue=write,ApplyMethod=pending-reboot" \ --region aws-region

    您也可以針對 pgaudit.log 參數選擇下列其中一個值。

    • none – 這是預設值。不會記錄任何資料庫變更。

    • all – 記錄一切 (read、write、function、role、ddl、misc)。

    • ddl – 記錄未包含在 ROLE 類別中的所有資料定義語言 (DDL) 陳述式。

    • function – 記錄函數呼叫和 DO 區塊。

    • misc – 記錄其他命令,例如 DISCARDFETCHCHECKPOINTVACUUMSET

    • read – 來源為關聯 (例如資料表) 或查詢時,記錄 SELECTCOPY

    • role – 記錄與角色和權限相關的陳述式,例如 GRANTREVOKECREATE ROLEALTER ROLEDROP ROLE

    • write – 目的地為關聯 (資料表) 時,記錄 INSERTUPDATEDELETETRUNCATECOPY

    使用下列 AWS CLI 命令,重新啟動 Aurora PostgreSQL 資料庫叢集的寫入器執行個體

    aws rds reboot-db-instance \ --db-instance-identifier writer-instance \ --region aws-region