密钥分离,.Net程序猿不再背锅

引言

  互联网每隔一段时间就会爆出 【某程序猿在代码托管平台上传了公司机密配置信息,导致公司核心数据被黑客获取或修改】, 一茬又一茬背锅侠层出不穷。拯救自我

  软件工程理论早以加粗字体给出 经典原则:Never store production passwords or other sensitive data in source code

依据这个原则,我们来说一些.Net 开发生涯几种敏感信息分离的方案。

 

头脑风暴

常规思路是【外部文件方式托管敏感信息】,外部是相对于 代码托管仓库。

.Net Framework

  可尝试在appSettings配置节启用file属性,file属性可引用外部配置文件,具备为原appSetttings新增或重写同名设置的能力。

640?wx_fmt=png

.NetCore

可在程序启动时加载 appsetting.secrets.json文件,该文件也排除在代码管理仓库之外, 部署时手动将该文件拷贝到发布目录。

640?wx_fmt=png

据此思路,可将敏感信息叫由其他组件托管,.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设定进程启动时要注入的环境变量

640?wx_fmt=png④在VScode launchsettings.json设定进程启动时要注入的环境变量

640?wx_fmt=png⑤ 在进程启动时通过命令行参数注入

640?wx_fmt=png

⑥ 若使用IIS托管AspNetCore,可在部署机器IIS的配置编辑器 新增/重写环境变量

640?wx_fmt=png

 

 在.NetCore生产部署实践中,比较常用的方式是使用独立的appsettings.secrets.json,环境变量来分离敏感信息。

掌握这些,.Net程序猿应该就不会因为在git上传机密信息而背锅了。

 
 

原文链接:https://www.cnblogs.com/JulianHuang/p/11462607.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com 

640?wx_fmt=jpeg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值