管理及使用 RDS 憑據

更新時間:
Copy as MD

業務應用通常需將資料庫帳號口令配置在代碼或設定檔中,存在泄露風險。通過 KMS 憑據託管 RDS 帳號口令,應用可通過 SDK 動態擷取憑據值,並支援自動輪轉,有效降低憑據泄露風險。

功能介紹

使用 RDS 憑據,應用程式無需在代碼或設定檔中寫入程式碼待用資料庫帳號口令。管理員在 KMS 建立 RDS 憑據後,應用程式調用 GetSecretValue 介面擷取資料庫帳號和口令資訊,用於訪問 RDS 資料庫。常見使用情境如下:

  • 雲上應用程式資料庫訪問:應用部署在 ECS、ACK 等阿里雲產品上,需集中管理資料庫訪問憑證,避免多執行個體部署時分散管理口令。

  • 定期安全合規要求:企業安全規範強制要求定期更換資料庫口令,通過 KMS 憑據自動輪轉可滿足合規審計要求。

  • 多環境憑據管理:生產、測試、開發等多環境需要隔離資料庫訪問憑證,通過憑據標籤功能實現按維度分組管理。

重要

請勿在ApsaraDB RDS修改或刪除帳號口令,以避免業務失敗。

使用說明

  • 支援的資料庫類型:RDS MySQL、RDS MariaDB、RDS SQL Server(2017 叢集版除外)和 RDS PostgreSQL。

  • KMS 密鑰準備:需在 KMS 執行個體中建立用於加密的對稱金鑰,且密鑰與憑據屬於同一執行個體。具體操作,請參見建立密鑰

  • RAM 許可權配置:若使用 RAM 使用者或角色,主帳號需授予其系統策略 AliyunKMSSecretAdminAccess。具體操作,請參見管理RAM使用者的許可權管理RAM角色的許可權

  • 使用限制:請勿將同一 RDS 資料庫帳號的口令託管到多個 RDS 憑據中,憑據輪轉會導致未同步更新的憑據因口令失效而無法登入。

建立 RDS 憑據

建立憑據時可以設定憑據全自動的定期輪轉,從而降低憑據泄露的安全風險。

  1. 登入Key Management Service控制台,在頂部功能表列選擇地區後,在左側導覽列單擊资源 > 凭据管理

  2. 單擊数据库凭据頁簽,選擇实例ID後,單擊创建凭据 > 创建单个凭据,完成各項配置後單擊確定

    說明
    • RDS 憑據不支援大量建立。

    • 建議設定憑據全自動的定期輪轉,從而降低憑據泄露安全風險。

    配置項

    說明

    数据库类型

    選擇RDS凭据

    凭据名称

    自訂憑據名稱,需確保名稱在當前地區內唯一。

    RDS实例

    選擇阿里雲帳號下已有的 RDS 執行個體。

    账号托管

    • 双账号托管(推薦):適用於程式化訪問資料庫情境。託管兩個相同許可權的帳號,保證口令重設切換的瞬間,程式訪問資料庫不被中斷。

      • 單擊新建账号,配置帳號名、選擇資料庫並指定許可權。

        說明
        • 一鍵建立和授權不會立即配置新帳號,需審核確認憑據資訊後才會建立。

        • RDS PostgreSQL 配置後,在建立階段無法擷取資料庫名稱,需手動設定 DBName。

      • 單擊导入已有账号,選擇使用者名稱、配置口令。

        說明

        建議將口令配置為建立 RDS 執行個體使用者帳號時對應的密碼。如果匯入的帳號和口令不匹配,可在憑據首次輪轉後擷取正確的帳號和口令。

    • 单账号托管:適用於高許可權帳號或人工營運帳號託管情境。口令重設切換的瞬間,憑據目前的版本可能暫時無法使用。

      • 單擊新建账号,配置帳號名、選擇帳號類型。

        支援普通账号高权限账号兩種帳號類型。選擇普通账号時,還需選擇資料庫並指定許可權。

      • 單擊导入已有账号頁簽,選擇使用者名稱、配置口令。

    加密主密钥

    選擇用於加密憑據值的對稱金鑰。密鑰和憑據必須屬於同一個 KMS 執行個體。

    重要
    • 密鑰和憑據需要屬於同一個 KMS 執行個體,且密鑰必須為對稱金鑰。關於 KMS 支援哪些對稱金鑰,請參見密鑰管理類型和密鑰規格

    • 如果是 RAM 使用者、RAM 角色,需要具備使用加密主要金鑰執行 GenerateDataKey 操作的許可權。

    標籤

    為憑據添加標籤,便於分類管理。每個標籤由索引值對(Key:Value)組成。

    說明
    • 標籤鍵和標籤值的格式:最多支援 128 個字元,可以包含英文大小寫字母、數字、正斜線(/)、反斜線(\)、底線(_)、短劃線(-)、半形句號(.)、加號(+)、等號(=)、半形冒號(:)、字元 at(@)、空格。

    • 標籤鍵不能以 aliyun 或 acs:開頭。

    • 每個憑據最多可以設定 20 個標籤索引值對。

    自动轮转

    選擇是否啟用自動輪轉功能。啟用後,KMS 將按照設定的周期自動更新憑據值,降低憑據泄露風險。

    轮转周期

    僅在開啟開啟自動輪轉時設定。支援設定為 6 小時~365 天。

    表示輪轉周期,設定後 KMS 將定期更新憑據值。

    描述信息

    填寫憑據的補充描述資訊,便於後續識別和管理。

    高级设置 > 策略配置

    設定憑據的存取權限策略,可控制哪些 RAM 使用者或角色可以讀取或修改此憑據。

    可先選擇預設策略,建立後根據業務需要修改。

  3. 建立完成後,在資料庫憑據列表中查看建立的憑據,狀態顯示為正常即表示建立成功。

    說明

    系統會自動建立服務關聯角色 AliyunServiceRoleForKMSSecretsManagerForRDS,並為其授權權限原則 AliyunServiceRolePolicyForKMSSecretsManagerForRDS。KMS 使用該角色管理 RDS 憑據,完成 RDS 帳號口令的輪轉等任務。

管理 RDS 憑據

輪轉 RDS 憑據

RDS 憑據輪轉機制

KMS(Key Management Service)支援對關聯的 RDS(關係型資料庫服務)執行個體憑據進行自動輪轉。在輪轉過程中,KMS 會重設對應 RDS 帳號的口令,但資料庫帳號名稱保持不變。

  • 輪轉模式:KMS 託管 RDS 憑據支援單帳號託管和雙帳號託管兩種模式。

    對比項

    單帳號託管

    雙帳號託管

    適用情境

    簡單情境,對短暫中斷不敏感的業務。

    高可用情境,對商務持續性要求較高的核心業務。

    輪轉原理

    輪轉時為帳號產生新口令。

    維護兩個交替使用的帳號(User A 和 User B)。

    可用性

    存在短暫不可用視窗:在口令切換瞬間,舊憑據失效而新憑據尚未完全生效,可能導致串連暫時失敗。建議業務配置重試策略。

    全程高可用:輪轉過程中,始終有一個帳號的憑據處於有效狀態,業務無感知。

  • 雙帳號輪轉原理圖:建立憑據時已有第一個使用者的 RDS 帳號口令。第一次輪轉時,KMS 調用 RDS API 建立第二個使用者的帳號口令。第二次輪轉時,修改第一個使用者的口令。此後每次輪轉,KMS 交替修改兩個使用者的口令。

注意事項

  • 應用接入確認:輪轉前,請確保所有業務應用均已配置為從 KMS 動態擷取憑據。若應用寫入程式碼了舊密碼,輪轉後將導致串連失敗。

  • 資源狀態校正:建議在輪轉前使用“檢測憑據帳號”功能,驗證憑據關聯的 RDS 執行個體及帳號是否存在且狀態正常。

  • 嚴禁刪除資源:在輪轉期間或輪轉配置生效後,請勿刪除關聯的 RDS 執行個體或資料庫帳號,否則將直接導致輪轉任務失敗。

操作步驟

通過配置憑據的周期性自動輪轉,可有效降低因長期未更新導致的泄露風險;同時支援控制台即時輪轉功能,以便在發生泄露事件時快速響應,及時阻斷潛在的安全威脅。

  1. 登入Key Management Service控制台,在頂部功能表列選擇地區後,在左側導覽列單擊资源 > 凭据管理

  2. 單擊数据库凭据頁簽,選擇实例ID後,定位到要立即輪轉的憑據名稱,單擊操作列的详情

  3. 在憑據詳情頁面下方的版本列表地區,單擊设置轮转

    • 定時自動輪轉:開啟後需選擇輪轉周期,支援設定為 6 小時~365 天。

      說明

      也可在建立憑據時,開啟自動輪轉並配置轮转周期

    • 立即輪轉:手動觸發立即輪轉。

檢測憑據帳號

KMS 檢測憑據保護的 RDS 資料庫帳號是否屬於配置的RDS 執行個體。檢測成功說明憑據可正常輪轉,否則需刪除後重新建立 RDS 憑據。

  1. 登入Key Management Service控制台,在頂部功能表列選擇地區後,在左側導覽列單擊资源 > 凭据管理

  2. 單擊数据库凭据頁簽,選擇实例ID後,定位到目標憑據,單擊操作列的详情

  3. 版本列表地區,單擊检测账号,驗證完成後查看驗證結果。

設定資料庫(DBName)

RDS 憑據建立後,如需更換憑據關聯的 RDS 資料庫名稱,請在拓展配置中填寫正確的 DBName。具體操作如下:

重要

RDS PostgreSQL 必須手動添加 DBName,否則無法使用 RDS 憑據。

  1. 登入Key Management Service控制台,在頂部功能表列選擇地區後,在左側導覽列單擊资源 > 凭据管理

  2. 自管凭据頁簽選擇数据库凭据,選擇目標 KMS 執行個體後,單擊目標憑據的操作列的详情

  3. 拓展配置頁簽,單擊 CustomData 操作列的更新

  4. 编辑自定义数据彈窗內,單擊新增键值对,參考如下資訊完成配置。

    說明

    若已存在 DBName 索引值對,只需修改配置值即可。

    • 配置键DBName

    • 配置值:目標 RDS 執行個體的資料庫名稱,可登入 RDS 控制台,在執行個體詳情頁簽中擷取。

配置憑據標籤

憑據可以設定標籤,用於分類管理。每個標籤由一個索引值對(Key : Value)組成,包含標籤鍵(Key)和標籤值(Value)。

標籤使用說明

  • 標籤鍵和標籤值最多 128 個字元,支援字母、數字及特殊字元(/ \ _ - . + = : @)和空格。

  • 標籤鍵不能以 aliyun 或 acs: 開頭。標籤值無此限制。

  • 每個憑據最多可設定 20 個標籤。

操作步驟

為單個憑據配置標籤
  1. 登入Key Management Service控制台,在頂部功能表列選擇地區後,在左側導覽列單擊资源 > 凭据管理

  2. 單擊相應的憑據類型頁簽,選擇实例ID後,定位到目標憑據。

  3. 通過以下任意入口進入標籤編輯:

    • 入口一:在憑據列表中,單擊目標憑據標籤列的image.png表徵圖。

    • 入口二:單擊操作列的详情,進入憑據詳情頁面,單擊標籤後的image.png表徵圖。

  4. 编辑标签對話方塊中輸入多個標籤鍵標籤值後,單擊確定

為多個憑據大量設定標籤
  1. 登入Key Management Service控制台,在頂部功能表列選擇地區後,在左側導覽列單擊资源 > 凭据管理

  2. 單擊相應的憑據類型頁簽,選擇实例ID後,在憑據列表中勾選要操作的憑據。

    • 增加標籤:在憑據列表的最下方,單擊增加标签,輸入多個標籤鍵標籤值後,單擊確認

    • 刪除標籤:在憑據列表的最下方,單擊删除标签,在批量解绑标签對話方塊勾選要解除綁定的標籤,單擊取消,然後在變更提示對話方塊中單擊關閉

刪除 RDS 憑據

警告

刪除憑據前,確認該憑據已不再使用,否則可能導致業務失敗。

可選擇計劃刪除和立即刪除兩種方式。刪除 RDS 憑據僅刪除 KMS 中的憑據資訊,不會刪除 RDS 中的賬戶和口令。

  1. 登入Key Management Service控制台,在頂部功能表列選擇地區後,在左側導覽列單擊资源 > 凭据管理

  2. 單擊数据库凭据頁簽,選擇实例ID後,定位到要刪除的憑據名稱,單擊操作列的计划删除凭据

  3. 计划删除凭据對話方塊中,選擇憑據刪除方式,並單擊確定

    • 计划删除凭据:設定預刪除周期(7~30 天),系統將在預刪除周期結束後刪除憑據。

    • 立即删除凭据:系統將立即刪除憑據。

    在預刪除周期內,可以單擊目標憑據操作列的還原憑據,取消刪除操作。

應用程式整合 RDS 憑據

KMS 提供多種方式擷取 RDS 憑據值,包括阿里雲 SDK、憑據用戶端、憑據 JDBC 用戶端、KMS Agent 和 KMS 執行個體 SDK。建議按以下優先順序選擇,點擊對應方式名稱查看詳細操作說明:

說明
  • 建議做好錯誤重試機制提升業務穩定性。

  • KMS 提供了多種認證方式,為了更高的安全性,推薦優先使用 ECS 執行個體 RAM 角色或 RAM 角色。

  • 存取點說明:

    共用網關對應的存取點 Endpoint:請參見存取點說明

    專屬網關對應的存取點 Endpoint:{執行個體 ID}.cryptoservice.kms.aliyuncs.com

優先順序

使用情境說明

支援的網關類型

優先順序 1:憑據 JDBC 用戶端

  • 應用開發語言為 Java(Java 8 及以上版本)

  • 且資料庫類型為 MySQL、SQL Server、PostgreSQL 和 MariaDB 之一。

說明

憑據 JDBC 用戶端封裝了商務邏輯、最佳實務和設計模式,可直接完成資料庫連接身份鑒別,建立串連後通過 JDBC 介面訪問資料庫。

  • 共用網關

  • 專屬網關

優先順序 2:憑據用戶端

應用開發語言為 Java(Java 8 及以上版本)、Go 或者 Python。

  • 共用網關

  • 專屬網關

優先順序 3:阿里雲 SDK

應用開發語言為 Java(Java 6 及以上版本)、PHP、Go、Python、.NET(僅 C#)、C++、Node.js。

  • 專屬網關(推薦)

  • 共用網關

優先順序 4:KMS Agent

  • 適用於業務應用集中式部署的大規模情境,應用訪問 KMS。

  • KMS Agent 基於標準化 HTTP 介面提供服務,支援任意程式設計語言的業務應用調用。

  • 專屬網關(推薦)

  • 共用網關

優先順序 5:KMS執行個體SDK(不推薦)

應用開發語言為 Java(Java 8 及以上版本)、PHP、Go、Python、.NET(僅 C#)。

專屬網關

常見問題

憑據輪轉

  • 設定輪轉策略或立即輪轉時,提示“您的憑據在輪轉中,請稍後再試”?

    憑據類型

    可能原因

    RAM憑據

    RAM憑據正在輪轉中。

    RAM憑據輪轉需要一段時間(輪轉視窗)來完成,周期性自動輪轉的輪轉視窗約為48小時,立即輪轉的輪轉視窗為您設定的時間長度。

    如果沒有在輪轉視窗內完成輪轉,請在存取控制(RAM)中檢查RAM使用者是否仍存在。

    RDS憑據

    正常情況下,RDS憑據輪轉即時完成。 如果輪轉超過2分鐘沒有完成,請檢查RDS執行個體狀態及RDS帳號是否正常。

    ECS憑據

    正常情況下,ECS憑據輪轉即時完成。 如果輪轉超過2分鐘沒有完成,請檢查ECS執行個體狀態及ECS帳號是否正常。

  • 憑據狀態為不可用或調用憑據相關API時返回“Rejected.Unavailable”?

    憑據所在的KMS執行個體已超期,請在超期15個自然日內對KMS執行個體進行續約,否則KMS執行個體將被釋放。具體操作,請參見產品計費

    如果暫時不使用KMS執行個體,但以後可能會用到該執行個體中的密鑰或憑據,建議提前備份。具體操作,請參見備份管理

憑據配置

  • PostgreSQL 類型的RDS憑據為什麼不能用?

    RDS PostgreSQL 不會自動填滿 DBName,需手動在擴充配置中添加。參見設定資料庫(DBName)

  • 同一 RDS 帳號可以託管到多個憑據中嗎?

    不建議。每個憑據輪轉時會獨立重設口令,若多個憑據關聯同一帳號,其中一個輪轉後其他憑據的值將失效。多應用應從同一憑據擷取值,通過 RAM 策略控制存取權限。

許可權與管理

  • 在 KMS 中刪除憑據和在 RDS 中刪除帳號有什麼區別?

    在 KMS 中刪除憑據僅刪除加密的憑據資訊,不影響 RDS 中的實際帳號,在 RDS 中刪除帳號會導致 KMS 憑據中儲存的口令失效,輪轉失敗。

  • 憑據標籤有什麼用途?

    用於按環境、專案等維度對憑據分類管理和快速檢索,結合 RAM 策略還可實現基於標籤的許可權控制。建議建立憑據時就規劃好標籤策略。