密鑰管理
數據庫賬號口令、服務器賬號口令、SSH Key、訪問密鑰等憑據的泄露,是當今數據安全面臨的主要威脅之一。密鑰的保護是數據安全保護措施中最基礎的一項,為使用阿里云密鑰、通用密鑰提供保護措施能夠保護數據不被泄露,保障企業數據安全。
在云環境中,密鑰類別可分為通用密鑰(數據庫賬號口令、服務器賬號口令、SSH Key),和云賬戶密鑰(RAM AccessKey/SecretKey)。
密鑰的有效保護措施分為密鑰加密、密鑰托管(動態獲取密鑰,稱之為憑據)、憑據輪轉,以及訪問控制和審計。
不安全使用密鑰的場景包括:
將密鑰明文寫在代碼中;
直接使用AccessKey/SecretKey調用;
AccessKey/SecretKey沒有區分應用或使用環境;
AccessKey/SecretKey沒有定期輪轉。
在云上,針對密鑰管理,有以下最佳實踐:
開通KMS并配置密鑰和憑據的托管
阿里云提供密鑰管理服務(KMS)來保護用戶的密鑰,并提供憑據管理加密存儲、定期輪轉、安全分發、中心化管理等能力,使應用程序規避明文配置憑據風險,支持輪轉進而有效降低憑據泄漏事件危害。
下圖為使用憑據托管的標準場景和流程:
管理員在目標數據庫配置MyApp訪問數據庫所需的用戶名和密碼。
管理員在KMS創建一個憑據對象MyDbCreds,用來加密存儲上述用戶名和密碼。
當MyApp需要訪問數據庫時,需要向KMS請求憑據MyDbCreds。
KMS讀取到存儲的憑據密文,解密后將明文通過HTTPS返回給MyApp。
MyApp讀取并解析KMS返回的憑據明文,獲取到用戶名和密碼,使用該賬號可以訪問目標數據庫。
開通KMS并配置密鑰和憑據托管的最佳實踐:
開通并啟用KMS。
開通KMS后,針對密鑰保護的標準步驟是先創建通用憑據,輸入憑據的值(也就是密鑰的明文),選擇加密憑據的主密鑰(主密鑰是由KMS生成或客戶自行導入的外部密鑰,用于在KMS內完成數據加密運算),起到密鑰加密存儲的作用。其次通過集成KMS的SDK或API完成應用程序的調用。
開啟RAM密鑰(AccessKey/SecretKey)的安全保護,在憑據管理中托管RAM憑據,無需在應用程序中配置AccessKey,應用程序安裝RAM憑據插件的方式即可安全的調用托管的密鑰,如下圖所示。
使用憑據輪轉提高密鑰安全等級
通常情況下建議定期對保存在KMS中的密鑰進行輪轉,從而達到更高級別的安全要求,增強敏感信息的安全性。在KMS服務中,企業根據保存的密鑰類型(通用憑據還是RAM憑據)選擇輪轉方案。
阿里云支持使用函數計算輪轉通用憑據。
RAM憑據、ECS、RDS憑據支持自動輪轉。
為密鑰訪問設定訪問控制策略
通常情況下,為防止非授權訪問應限定訪問密鑰的方式、身份及策略。在云端應該限制授權范圍和授權主體以及應用程序訪問。
使用RAM實現對KMS資源的訪問控制。
使用KMS應用接入點實現對應用程序訪問和接入KMS實例。
通過創建應用接入點,精細化配置哪些憑據可以授權給哪些應用程序,以及訪問的網絡、和身份認證,提供更精細化的授權策略,KMS應用訪問控制流程如下圖所示。
為密鑰的使用開啟安全審計
為KMS的使用開通安全審計,有助于事后安全溯源和合規審計。使用操作審計查詢密鑰管理服務的操作事件,可查看支持審計的操作和事件說明。