管理及使用 RDS 憑據
業務應用通常需將資料庫帳號口令配置在代碼或設定檔中,存在泄露風險。通過 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 憑據
建立憑據時可以設定憑據全自動的定期輪轉,從而降低憑據泄露的安全風險。
登入Key Management Service控制台,在頂部功能表列選擇地區後,在左側導覽列單擊。
單擊数据库凭据頁簽,選擇实例ID後,單擊,完成各項配置後單擊確定。
說明RDS 憑據不支援大量建立。
建議設定憑據全自動的定期輪轉,從而降低憑據泄露安全風險。
配置項
說明
数据库类型
選擇RDS凭据。
凭据名称
自訂憑據名稱,需確保名稱在當前地區內唯一。
RDS实例
選擇阿里雲帳號下已有的 RDS 執行個體。
账号托管
双账号托管(推薦):適用於程式化訪問資料庫情境。託管兩個相同許可權的帳號,保證口令重設切換的瞬間,程式訪問資料庫不被中斷。
單擊新建账号,配置帳號名、選擇資料庫並指定許可權。
說明一鍵建立和授權不會立即配置新帳號,需審核確認憑據資訊後才會建立。
RDS PostgreSQL 配置後,在建立階段無法擷取資料庫名稱,需手動設定 DBName。
單擊导入已有账号,選擇使用者名稱、配置口令。
說明建議將口令配置為建立 RDS 執行個體使用者帳號時對應的密碼。如果匯入的帳號和口令不匹配,可在憑據首次輪轉後擷取正確的帳號和口令。
单账号托管:適用於高許可權帳號或人工營運帳號託管情境。口令重設切換的瞬間,憑據目前的版本可能暫時無法使用。
單擊新建账号,配置帳號名、選擇帳號類型。
支援普通账号和高权限账号兩種帳號類型。選擇普通账号時,還需選擇資料庫並指定許可權。
單擊导入已有账号頁簽,選擇使用者名稱、配置口令。
加密主密钥
選擇用於加密憑據值的對稱金鑰。密鑰和憑據必須屬於同一個 KMS 執行個體。
重要密鑰和憑據需要屬於同一個 KMS 執行個體,且密鑰必須為對稱金鑰。關於 KMS 支援哪些對稱金鑰,請參見密鑰管理類型和密鑰規格。
如果是 RAM 使用者、RAM 角色,需要具備使用加密主要金鑰執行 GenerateDataKey 操作的許可權。
自动轮转
選擇是否啟用自動輪轉功能。啟用後,KMS 將按照設定的周期自動更新憑據值,降低憑據泄露風險。
轮转周期
僅在開啟開啟自動輪轉時設定。支援設定為 6 小時~365 天。
表示輪轉周期,設定後 KMS 將定期更新憑據值。
描述信息
填寫憑據的補充描述資訊,便於後續識別和管理。
設定憑據的存取權限策略,可控制哪些 RAM 使用者或角色可以讀取或修改此憑據。
可先選擇預設策略,建立後根據業務需要修改。
建立完成後,在資料庫憑據列表中查看建立的憑據,狀態顯示為正常即表示建立成功。
說明系統會自動建立服務關聯角色
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 執行個體或資料庫帳號,否則將直接導致輪轉任務失敗。
操作步驟
通過配置憑據的周期性自動輪轉,可有效降低因長期未更新導致的泄露風險;同時支援控制台即時輪轉功能,以便在發生泄露事件時快速響應,及時阻斷潛在的安全威脅。
登入Key Management Service控制台,在頂部功能表列選擇地區後,在左側導覽列單擊。
單擊数据库凭据頁簽,選擇实例ID後,定位到要立即輪轉的憑據名稱,單擊操作列的详情。
在憑據詳情頁面下方的版本列表地區,單擊设置轮转。
定時自動輪轉:開啟後需選擇輪轉周期,支援設定為 6 小時~365 天。
說明也可在建立憑據時,開啟自動輪轉並配置轮转周期。
立即輪轉:手動觸發立即輪轉。
檢測憑據帳號
KMS 檢測憑據保護的 RDS 資料庫帳號是否屬於配置的RDS 執行個體。檢測成功說明憑據可正常輪轉,否則需刪除後重新建立 RDS 憑據。
登入Key Management Service控制台,在頂部功能表列選擇地區後,在左側導覽列單擊。
單擊数据库凭据頁簽,選擇实例ID後,定位到目標憑據,單擊操作列的详情。
在版本列表地區,單擊检测账号,驗證完成後查看驗證結果。
設定資料庫(DBName)
RDS 憑據建立後,如需更換憑據關聯的 RDS 資料庫名稱,請在拓展配置中填寫正確的 DBName。具體操作如下:
RDS PostgreSQL 必須手動添加 DBName,否則無法使用 RDS 憑據。
登入Key Management Service控制台,在頂部功能表列選擇地區後,在左側導覽列單擊。
在自管凭据頁簽選擇数据库凭据,選擇目標 KMS 執行個體後,單擊目標憑據的操作列的详情。
在拓展配置頁簽,單擊
CustomData操作列的更新。在编辑自定义数据彈窗內,單擊新增键值对,參考如下資訊完成配置。
說明若已存在
DBName索引值對,只需修改配置值即可。配置键:
DBName。配置值:目標 RDS 執行個體的資料庫名稱,可登入 RDS 控制台,在執行個體詳情頁簽中擷取。
配置憑據標籤
憑據可以設定標籤,用於分類管理。每個標籤由一個索引值對(Key : Value)組成,包含標籤鍵(Key)和標籤值(Value)。
標籤使用說明
標籤鍵和標籤值最多 128 個字元,支援字母、數字及特殊字元(/ \ _ - . + = : @)和空格。
標籤鍵不能以 aliyun 或 acs: 開頭。標籤值無此限制。
每個憑據最多可設定 20 個標籤。
操作步驟
為單個憑據配置標籤
登入Key Management Service控制台,在頂部功能表列選擇地區後,在左側導覽列單擊。
單擊相應的憑據類型頁簽,選擇实例ID後,定位到目標憑據。
通過以下任意入口進入標籤編輯:
入口一:在憑據列表中,單擊目標憑據標籤列的
表徵圖。入口二:單擊操作列的详情,進入憑據詳情頁面,單擊標籤後的
表徵圖。
為多個憑據大量設定標籤
登入Key Management Service控制台,在頂部功能表列選擇地區後,在左側導覽列單擊。
單擊相應的憑據類型頁簽,選擇实例ID後,在憑據列表中勾選要操作的憑據。
增加標籤:在憑據列表的最下方,單擊增加标签,輸入多個標籤鍵和標籤值後,單擊確認。
刪除標籤:在憑據列表的最下方,單擊删除标签,在批量解绑标签對話方塊勾選要解除綁定的標籤,單擊取消,然後在變更提示對話方塊中單擊關閉。
刪除 RDS 憑據
刪除憑據前,確認該憑據已不再使用,否則可能導致業務失敗。
可選擇計劃刪除和立即刪除兩種方式。刪除 RDS 憑據僅刪除 KMS 中的憑據資訊,不會刪除 RDS 中的賬戶和口令。
登入Key Management Service控制台,在頂部功能表列選擇地區後,在左側導覽列單擊。
單擊数据库凭据頁簽,選擇实例ID後,定位到要刪除的憑據名稱,單擊操作列的计划删除凭据。
在计划删除凭据對話方塊中,選擇憑據刪除方式,並單擊確定。
计划删除凭据:設定預刪除周期(7~30 天),系統將在預刪除周期結束後刪除憑據。
立即删除凭据:系統將立即刪除憑據。
在預刪除周期內,可以單擊目標憑據操作列的還原憑據,取消刪除操作。
應用程式整合 RDS 憑據
KMS 提供多種方式擷取 RDS 憑據值,包括阿里雲 SDK、憑據用戶端、憑據 JDBC 用戶端、KMS Agent 和 KMS 執行個體 SDK。建議按以下優先順序選擇,點擊對應方式名稱查看詳細操作說明:
建議做好錯誤重試機制提升業務穩定性。
KMS 提供了多種認證方式,為了更高的安全性,推薦優先使用 ECS 執行個體 RAM 角色或 RAM 角色。
存取點說明:
共用網關對應的存取點 Endpoint:請參見存取點說明。
專屬網關對應的存取點 Endpoint:
{執行個體 ID}.cryptoservice.kms.aliyuncs.com。
優先順序 | 使用情境說明 | 支援的網關類型 |
優先順序 1:憑據 JDBC 用戶端 |
說明 憑據 JDBC 用戶端封裝了商務邏輯、最佳實務和設計模式,可直接完成資料庫連接身份鑒別,建立串連後通過 JDBC 介面訪問資料庫。 |
|
優先順序 2:憑據用戶端 | 應用開發語言為 Java(Java 8 及以上版本)、Go 或者 Python。 |
|
優先順序 3:阿里雲 SDK | 應用開發語言為 Java(Java 6 及以上版本)、PHP、Go、Python、.NET(僅 C#)、C++、Node.js。 |
|
優先順序 4:KMS Agent |
|
|
優先順序 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 策略還可實現基於標籤的許可權控制。建議建立憑據時就規劃好標籤策略。