當業務應用中需要使用賬號口令、訪問密鑰等憑據信息時,您可以使用KMS的憑據管理功能,將憑據信息保存在KMS的憑據中,業務應用通過集成阿里云SDK、KMS實例SDK或憑據SDK向KMS動態獲取憑據信息,以避免明文存儲憑據信息導致的信息泄露或系統被惡意操作風險。本文介紹憑據的應用場景、組成、輪轉等基本信息。
為什么使用憑據管理
數據庫賬號口令、服務器賬號口令、SSH Key、訪問密鑰等憑據的泄露,是當今數據安全面臨的主要威脅之一。為了降低數據泄露的安全風險,執行有效的憑據保護和周期性輪轉非常關鍵。使用KMS的憑據管理功能可以為您帶來以下安全優勢:
KMS對憑據值使用高安全強度的加密算法加密存儲,防止憑據硬編碼帶來的憑據泄露以及高價值資產泄露,提升數據安全性。
提供安全便捷的客戶端接入方式,應用程序以無代碼或者低代碼的方式,動態使用憑據。
具備應急處置能力,當您通過立即輪轉的方式更新憑據時,應用程序和業務不受影響。
說明僅對RAM憑據、RDS憑據(雙賬號托管)、ECS憑據,并通過憑據SDK集成時有效。
支持高頻次輪轉的全動態憑據,縮小憑據的有效時間窗口,降低憑據被破解的風險。
支持通過API、阿里云ROS或Terraform等運維編排工具,滿足中心化、規模化的安全管理需求。
應用場景
以托管您自建數據庫的用戶名和口令為例,為您介紹基本的憑據托管和使用場景。
如果您使用的是RDS數據庫,更推薦您使用RDS憑據,具體請參考RDS憑據。
安全管理員在目標數據庫配置MyApp訪問數據庫所需的用戶名和口令。
安全管理員在KMS創建一個通用憑據,憑據名為“MyDbCreds”,用來托管上述用戶名和口令。
當MyApp需要訪問數據庫時,通過憑據客戶端SDK向KMS請求憑據MyDbCreds。
KMS讀取到存儲的憑據密文,解密后將明文通過HTTPS返回給MyApp。
MyApp讀取并解析KMS返回的憑據明文,獲取到用戶名和口令,使用該賬號可以訪問目標數據庫。
對應用MyApp而言,通過調用KMS的API來獲取訪問數據庫的用戶名和口令,避免了在程序中硬編碼憑據帶來的信息泄露風險。硬編碼憑據和使用KMS的應用程序之間的差異,如下圖所示。
憑據的組成
憑據由元數據、一或多個憑據版本組成。您可以登錄密鑰管理服務控制臺,在憑據管理頁面查看憑據詳情。
元數據
包含憑據名稱、ARN、創建時間、憑據類型、加密密鑰、標簽等信息。
重要加密密鑰僅用于加密憑據值,不加密憑據的元數據信息。密鑰和憑據需要屬于同一個KMS實例,且密鑰必須為對稱密鑰。
憑據版本
一個憑據可以有多個憑據版本。每個憑據版本包含版本號、版本狀態、憑據值。
版本號:只能在存入憑據值時被寫入,在憑據內唯一且不支持修改。一個版本號可以關聯多個版本狀態,但每個版本狀態只能關聯一個版本號。
版本狀態:在憑據內唯一,包含內置版本狀態、自定義版本狀態。
內置版本狀態:
ACSCurrent:憑據的當前版本,即最新存入的憑據值的狀態。
ACSPrevious:憑據的上一個版本。
ACSPending:待處理版本,輪轉過程中會產生該版本,輪轉完成后不會出現該狀態。
說明通過接口獲取憑據值時讀取ACSCurrent對應的憑據值。
內置版本狀態類似指針。例如,第一次存入一個憑據版本,版本號設置為v1,存入后內置版本狀態為ACSCurrent,此時繼續存入一個憑據版本,版本號設置為v2,則v2對應的內置版本狀態為ACSCurrent,v1對應的版本狀態會自動改為ACSPrevious。
自定義版本狀態:每個憑據版本可以自定義多個版本狀態。
憑據值:您存入的憑據信息,可以是字符串或二進制值。
說明當憑據的版本數超過上限時,最早的可回收版本(沒有關聯版本狀態的版本)會被刪除。
憑據輪轉
憑據輪轉即基于憑據支持多個版本的特征,通過存入新的憑據版本來更新憑據,以提升憑據的安全性。新存入的憑據版本其狀態會設置為ACSCurrent,業務應用會動態讀取ACSCurrent對應的憑據值。
輪轉過程
輪轉方式
周期性自動輪轉:設置輪轉周期后,您無需關注輪轉的過程以及時間,到期后KMS自動完成輪轉。RAM憑據、RDS憑據、ECS憑據支持您在KMS配置輪轉周期,通用憑據不支持在KMS配置輪轉周期,但您可以通過函數計算編碼的方式設置輪轉周期。
立即輪轉:當您的憑據泄露時,可以通過立即輪轉進行應急處理。RAM憑據、RDS憑據、ECS憑據,支持立即輪轉,通用憑據僅支持通過手動存入憑據值進行立即輪轉。
支持的憑據類型
KMS支持四種憑據類型:通用憑據、RAM憑據、RDS憑據、ECS憑據,不同類型憑據的詳細說明見下表。
RAM憑據、RDS憑據和ECS憑據為全托管式的憑據管理模式。您在KMS托管這三類憑據后,您應僅在KMS對憑據進行輪轉,不能在對應產品中對憑據進行狀態、刪除等操作,否則KMS將無法對憑據進行輪轉,您應用程序從KMS獲取的憑據也無法正常使用。
如果您需要親自管理憑據的輪轉(版本及狀態),可使用通用憑據。
憑據類型 | 說明 | 憑據輪轉方式 | 參考文檔 |
通用憑據 | 通用憑據(Generic Secret)是KMS支持的基礎類型憑據。您可以使用通用憑據存儲賬號口令、訪問密鑰、OAuth密鑰和Token、API Key等任意的敏感數據。 |
| |
RAM憑據 | RAM憑據是KMS支持的一種全托管類型的憑據。您可以使用RAM憑據托管RAM用戶的訪問密鑰(AccessKey)。 |
| |
RDS憑據 | RDS憑據是KMS支持的一種全托管類型的憑據,可用于托管RDS(阿里云關系型數據庫)實例的數據庫賬號和密碼。 |
| |
ECS憑據 | ECS憑據是KMS支持的一種全托管式憑據,可用于托管用于登錄ECS實例時使用的用戶名/口令和SSH密鑰。 |
|
如何計費
使用憑據前,您需要先購買KMS實例,購買時設置憑據配額。KMS實例的費用,請參見產品計費。關于如何購買KMS實例,請參見購買和啟用KMS實例。
訪問控制與審計
基于訪問控制 RAM(Resource Access Management),限制用戶對憑據的訪問和操作權限,以保護憑據的安全性。如何配置權限策略,請參見密鑰管理服務自定義權限策略參考。
基于操作審計(ActionTrail),支持對憑據的創建、輪轉、讀取等操作進行記錄。具體操作,請參見查詢密鑰和憑據的使用記錄。