宏庭科技為您提供 Microsoft 教學總覽,內含手把手資安教學實作,幫助您更了解 Microsoft 的安全性!我們每月都會更新內容,為您提供Microsoft 教學最全資源。
目錄
目錄
服務帳號和服務帳戶金鑰 Service principals and key
Azure環境中每個服務在啟用時均會預設帶入predifined role以讓該服務功能可被完整的使用,但predefined role具有上千個不同的權限,而實際使用情境很可能只用到其中的數十個不等的權限,建議可依照每個使用服務情境來做細緻化的權限設定,盡可能減少使用predifined roles來做權限配置。
常見的問題發生於開發人員為圖操作方便,將service principals 及key寫入程式/api呼叫中,甚至將程式上傳至公開的git管理平台上,造成這些重要的資訊以明碼的方式暴露在網路上,任何有心人士均可在提取帳密後對公司的環境進行操作、甚至是提權。
切記:
- 妥善保管service principals key。
- 勿將service principals 帳號及key寫於程式內,建議以檔案呼叫的方式撰寫,並且勿將含有service account 和key的程式碼上傳至git中。
保護服務帳戶及服務帳戶金鑰 Secure a service principals and Key
當服務主體(service principals)建立時可使用金鑰(key)進行帳戶存取保護,以方便開發人員存取 Azure 環境資源。然而多數情境為開發人員為圖方便,將服務主體所產生的金鑰寫入程式碼中,並且將程式碼放置於版本管控平台上(Github, Gitlab…..),往往服務主體的權限多使用預設權限,也就是具有極大的權限可以針對雲端環境資源進行存取/編輯/刪除等操作,在未收斂權限且金鑰暴露的狀況下,任何不法人士很可能造成憑證洩漏(Credential leakage)、提權(Privilege escalation)、資訊洩漏(Information disclosure)、不可否認(Non-repudiation)等資安隱憂。
Azure在文件中[1][2]建議在收斂服務帳戶的同時,勿在開發時將金鑰放置於程式碼中,以下有幾種方法可以強化使用服務帳戶的安全性:控管 Microsoft Entra 服務帳戶[2]、刪除不必要的服務主體以及第三方git環境檢測金鑰功能[3][4]。
除了上述的方法外,遵循良好的國際組織規範[5][6]更可對於所有DevOps行為進行檢視和稽核,更進一步強化開發流程安全性。
關於保護服務帳戶及服務帳戶金鑰資訊請參考下方連結。
[1]Principle-of-least-privileges
[5]ISO27001-2013- A.10 密碼學
[6]ISO27001-2013- A.14 系統開發與維護
保護API金鑰 Secure API Key
API金鑰在儲存或傳輸時應被妥善保護,若未妥善保護則可能導致您的帳號遭駭近一步產生無法預期的費用。可以透過Key Vault來保護[1], 可用來保存 Secret (密碼、Token、API Key… 等)、Key (加解密用的金鑰) 與 Certificate (TLS 憑證),管理人員可透過網頁管理設定,程式則走 API 讀取,並能設定存取權限、限定來源 IP,金鑰的話還支援硬體安全模組(HSM)保護, 在管理API金鑰時有以下建議之方式以保護金鑰。
- 避免將API金鑰嵌入至程式碼中,且應避免上傳至任何版本控管平台當中。
- 針對API金鑰進行限制,例如哪些來源(ip,url,android,ios)可以存取[2]。
- 刪除已經未再使用的API金鑰以避免被揭露的風險。
- 定期更新API金鑰,並讓應用程式採用新的API金鑰。
關於保護API金鑰資訊請參考下方連結。