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