密钥分离,.Net程序猿不再背锅
引言
互聯網每隔一段時間就會爆出 【某程序猿在代碼托管平臺上傳了公司機密配置信息,導致公司核心數據被黑客獲取或修改】, 一茬又一茬背鍋俠層出不窮。拯救自我
軟件工程理論早以加粗字體給出 經典原則:Never store production passwords or other sensitive data in source code
依據這個原則,我們來說一些.Net 開發生涯幾種敏感信息分離的方案。
?
頭腦風暴
常規思路是【外部文件方式托管敏感信息】,外部是相對于 代碼托管倉庫。
.Net Framework
可嘗試在appSettings配置節啟用file屬性,file屬性可引用外部配置文件,具備為原appSetttings新增或重寫同名設置的能力。
.NetCore
可在程序啟動時加載?appsetting.secrets.json文件,該文件也排除在代碼管理倉庫之外, 部署時手動將該文件拷貝到發布目錄。
據此思路,可將敏感信息叫由其他組件托管,.NetCore開發者還有其他3種實踐:
-? 適用于Dev的 Secrets manager tool 托管
Asp.NETCore 在開發環境下保存密鑰的方式,總體思路是 使用一個匿名GUID引用存儲在系統文件夾下同名配置Json.
https://docs.microsoft.com/en-us/aspnet/core/security/app-secrets?view=aspnetcore-2.2&tabs=windows
-? 適用于Azure云的? Azure Key Vault 托管
https://azure.microsoft.com/en-us/resources/samples/key-vault-dotnet-core-quickstart/
-? 適用于General Deploy的環境變量托管
下面對環境變量方式分離敏感信息做進一步說明。
環境變量托管
環境變量能在進程創建時被導入/注入,因此可作為一種敏感信息分離的思路, 環境變量來自 3個級別 :系統, 用戶,進程。
介紹幾種修改環境變量的方式:
①Window機器CMD命令行:?setx命令,?Powershell也可操作
②系統控制面板-我的電腦-屬性-高級設置-環境變量
? ? ?以上兩種形式可理解 為 AspNetCore進程啟動時導入 系統環境變量。
③在Visual Studio launchsettings.json設定進程啟動時要注入的環境變量
④在VScode launchsettings.json設定進程啟動時要注入的環境變量
⑤ 在進程啟動時通過命令行參數注入
⑥ 若使用IIS托管AspNetCore,可在部署機器IIS的配置編輯器 新增/重寫環境變量
?
?在.NetCore生產部署實踐中,比較常用的方式是使用獨立的appsettings.secrets.json,環境變量來分離敏感信息。
掌握這些,.Net程序猿應該就不會因為在git上傳機密信息而背鍋了。
原文鏈接:https://www.cnblogs.com/JulianHuang/p/11462607.html
.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總?http://www.csharpkit.com?
總結
以上是生活随笔為你收集整理的密钥分离,.Net程序猿不再背锅的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Exceptionless使用介绍
- 下一篇: 使用Elastic APM监控你的.NE