隨著 AI Agent 的興起,我們開始授權 AI 代理人存取各種外部服務。但這也帶來了全新的安全隱憂:如果你還習慣把 API 金鑰寫死在程式碼裡,或是隨便丟在 .env 檔,AI Agent 在讀取檔案或執行時,很有可能不小心把金鑰內容外流,等同於將系統的主控權拱手讓人,暴露在外洩的巨大風險中。

隨著 AI Agent 的興起,我們開始授權 AI 代理人存取各種外部服務。但這也帶來了全新的安全隱憂:如果你還習慣把 API 金鑰寫死在程式碼裡,或是隨便丟在 .env 檔,AI Agent 在讀取檔案或執行時,很有可能不小心把金鑰內容外流,等同於將系統的主控權拱手讓人,暴露在外洩的巨大風險中。

SPA 做身分驗證,一定要面對一個問題:**Token 要存在哪?** Authorization Code Flow + PKCE(RFC 7636)是目前的標準做法,解決的是「授權碼在傳輸途中被攔截後,攻擊者拿去換 Token」的問題。搭配 CSP(Content Security Policy)從瀏覽器端限制腳本來源,這兩道防線合在一起,才算是比較完整的 SPA 安全架構。 這篇文章用 ASP.NET Core Web API 自己實作授權伺服器,從頭走完整個 PKCE 流程,包含帳密驗證、Session Cookie 持久化,以及受保護的 API 端點。

在現代應用程式開發中,如何安全地管理機敏資料(如資料庫密碼、API 金鑰)是一大挑戰,上篇已經介紹怎麼建立 AppRole、Policy、Secret。這篇文章將介紹如何利用 HashiCorp Vault、HashiCorp Vault Agent,打造一套自動化且安全的機敏資料存取流程。

相信大家對 JWT 都很熟悉了,不熟的可以到這裡複習一下Hashicorp Vault Server 支援 JWT Authentication Method,話不多說,客倌上碼。

AppRole Authentication Method 也是 Hashicorp Vault Server 所提供的驗證(Authentication) 之一,搭配 Policy 授權(Authorization),存取機敏性資料,使用上也是相當的簡單。

前面提到的案例都是使用 root token 進行登入。登入後,通過身分驗證 (Authentication),接著依照定義的 ACL Policy 和 Role 來決定誰能訪問哪些資源,這個過程稱為授權 (Authorization)。由於 root token 具有最高權限,理論上應避免壤非管理人員使用它。現在,我們來看看如何使用 HashiCorp Vault Server 的 GitHub Authentication Method 訪問機敏性資源吧!

Dynamic Credentials 每一次產生出來的憑證,都是變動且有時效性的,這跟固定的 Key/Value,有很大的不一樣,用這樣的機制就可以保護真正的資訊,更有效的隱藏機敏性資料

開發者不應該把機敏性資料,用明碼的方式存放在電腦,HashiCorp Vault 是一套基於身份的私鑰和加密管理系統,Hashicorp Vault 是一個安全管理工具,專門用於管理機敏性資料,例如:密碼、API 密鑰和其他機密訊息,下圖出自 Introduction | Vault | HashiCorp Developer

原本我本來想要自幹一套 Secret Manager / Config Manage,因為有 Vault 我省去了自幹的時間,這裡,我將嘗試學習使用 C# VaultSharp 訪問 Hashicorp Vault
上一篇,我們學習了怎麼自訂身分驗證
ASP.NET Core 6 實作自訂 Authentication 身份驗證,以 Basic Authentication 例 | 余小章 @ 大內殿堂 - 點部落 (dotblogs.com.tw) ,如果一個服務需要有多種以上的驗證,ASP.NET Core 也有支援,接下來我們就來看看怎麼在服務裡面增加多種驗證吧
驗證替使用者建立身分識別,授權則是用來判斷使用者能不能使用某一個功能,ASP.NET Core 提供許多的授權 Role、Claims、Policy 等,老實講 Policy 授權使用上有一點門檻,分享一下我的實際用法,也給需要的人參考