設定 pgAudit 擴充功能 - Amazon Relational Database Service

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

設定 pgAudit 擴充功能

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

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

以下步驟假設您的 RDS for PostgreSQL 資料庫執行個體與自訂資料庫參數群組相關聯。

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

  2. 在導覽窗格中,選擇您的 RDS for PostgreSQL 資料庫執行個體

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

  4. 選擇連結以開啟與 相關聯的自訂參數。RDS for PostgreSQL 資料庫執行個體。

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

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

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

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

  9. 當執行個體可用時,請驗證 pgAudit 是否已初始化。使用 psql 連線至 RDS for 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. 在資料庫清單中,選擇您的 RDS for 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 命令重新啟動 RDS for PostgreSQL 資料庫執行個體,以便初始化 pgaudit 程式庫。

    aws rds reboot-db-instance \ --db-instance-identifier your-instance \ --region aws-region
  3. 當執行個體可用時,您可以驗證 pgaudit 是否已初始化。使用 psql 連線至 RDS for 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 命令,重新啟動 RDS for PostgreSQL 資料庫執行個體

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