沒有密碼,才是最安全的密碼 - 使用 DefaultAzureCredential()
古時候 好久好久以前,在遙遠的開發國度中,程式設計師在撰寫應用程式時,常會把資料庫連線字串、API Key、帳號密碼或其他設定,直接放在程式碼裡面。 例如: string connectionString = "Server=myserver;Database=mydb;User Id=admin;Password=P@ssw0rd;"; 這樣做很方便,程式下載下來、編譯、執行,馬上就可以連線。 但問題也很明顯:只要程式碼被上傳到 Git Repos,或是被複製到其他地方,裡面的帳號密碼也會一起被帶走。 而且,即便 Repository 是 Private,也不代表這些敏感資訊就是安全的。 因為能夠讀取 Repository 的人、包含CI/CD Pipeline、第三方掃描工具、AI Coding Agent,都可能接觸到這些內容。 因此,大多數開發人員都知道: 不要把帳號密碼直接寫在程式碼裡。 於是,大家就把它移到設定檔裡。🤔(是不是哪裡怪怪的?) 例如 .NET 的 appsettings.json 或 web.config : { "ConnectionStrings": { "DefaultConnection": "Server=myserver;Database=mydb;User Id=admin;Password=P@ssw0rd;" } } 或是 Python 常見的 .env : DB_CONNECTION_STRING=Server=myserver;Database=mydb;User Id=admin;Password=P@ssw0rd; 這樣比把密碼寫在程式碼裡好嗎? 是的,至少在『心理上』稍微好了一點。因為帳號密碼是存在某個可以被替換的檔案裡。 但是這個檔案依舊可能會: 不小心被 Commit 到 Repository 被複製到測試環境或其他電腦 出現在部署封裝或 Container Image 裡 被寫進 CI/CD Pipeline 的 Log … 更麻煩的是,一旦密碼需要更換(資安規定90天要Roatate),我們就必須找出所有使用這組密碼的程式、環境與設定檔,再逐一...