700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 在ASP.Net Core和JAVA中 使用Azure配置密钥——Key Vault

在ASP.Net Core和JAVA中 使用Azure配置密钥——Key Vault

时间:2018-05-16 01:48:00

相关推荐

在ASP.Net Core和JAVA中 使用Azure配置密钥——Key Vault

思路浅析

在软件开发中,项目安全是重中之重,特别是在多部门或者开源项目中,如何保存我们的密钥,但又不影响本地的开发,更需要我们开发者需要考虑的问题,这里简单的列举了下平时开发中我们做的方案:

1、本地直接采用localhost的形式开发。无论是DB还是ES/Redis/MQ,或者是其他的,都一股脑用本地的参数,然后部署到K8s的时候,使用Configmap的形式挂载。也是一种方案,但是会使dev和prod之间隔离的比较厉害

2、使用远程配置中心来统一处理本地和生产直接的数据。比如常见的就是Apollo,Azure的Key Vault技术等等。推荐的方式。

3、每次上线都手动修改。这显然是不合理的。

作为经常使用Azure的开发者,决定使用Key Vault技术尝试一波,并在Core和SpringBoot中,来一个Demo尝试。

PS:本文采用的都是世纪互联的的。

前期准备账号

首先,需要注册一个Azure账号。

其次,需要注册一个应用程序,注册的时候,填写Client密码,密码要好好保存哟,以后会多次使用。

搜索app registration,注册一个账号

输入应用名称,其他的都默认即可

接下来,在Certificates & secrets中,添加Client secrets

有了应用,就可以在应用内设置密钥了。

这个时候我们已经有两个参数了,分别是ClientId和ClientSecret。

配置key vault

步骤 1 -添加Key vault服务

继续在顶部搜索Key vault关键字

创建一个全新的key vault服务,选择自己的订阅和资源组,设置下名称

创建完成后,就可以在keyvault的overview页,看到另外两个参数了:

另外两个参数,一个是vault的uri,一个是tenantid也准备好了。

到这里四个参数都已经准备好了。

步骤 2- 参数设置

点击settings下面的secrets选项,创建或导入配置:

在弹出的新页面中,选择Manual方式,输入name和value,配置数据库的用户名:

然后就创建完成了,可以仿照的把sqlserver的密码也配置一下

现在,万事具备,只差写代码了。

新建一个Core项目

步骤 1 - 创建一个Core5.0 API项目

过程很简单,就不多说了,创建好后,添加nuget包:

<PackageReference Include="Microsoft.Extensions.Configuration.AzureKeyVault" Version="3.1.21" /><PackageReferenceInclude="Microsoft.VisualStudio.Azure.Containers.Tools.Targets"Version="1.10.9"/>

然后,将上边四个变量放到环境变量里,本地开发可以在launchSettings.json里

"IIS Express": {"commandName": "IISExpress","launchBrowser": true,"launchUrl": "swagger","environmentVariables": {"ASPNETCORE_ENVIRONMENT": "Development","AZURE_TENANT_ID": "你的tenantid","AZURE_CLIENT_ID": "你的客户端id","AZURE_CLIENT_SECRET": "你的客户端密钥","AZURE_KEY_VAULT_URI": "https://blog-core-keyvault./"}}

步骤 2- 配置Program,连接配置中心

在Program.cs里配置

Host.CreateDefaultBuilder(args).ConfigureAppConfiguration((hostingContext, config) =>{var env = hostingContext.HostingEnvironment;var tenantId = Environment.GetEnvironmentVariable("AZURE_TENANT_ID");var clientId = Environment.GetEnvironmentVariable("AZURE_CLIENT_ID");var clientSecret = Environment.GetEnvironmentVariable("AZURE_CLIENT_SECRET");config.AddJsonFile("appsettings.json", true).AddJsonFile($"appsettings.{env.EnvironmentName}.json", true).AddEnvironmentVariables();string vaultUri = "https://blog-core-keyvault./";config.AddAzureKeyVault(vaultUri, clientId, clientSecret);}).ConfigureWebHostDefaults(webBuilder =>{webBuilder.UseStartup<Startup>();});

如果这个时候,启动应用没有报错的话,那恭喜你,已经连接成功了,接下来就是获取指定的参数了。

步骤 3-任何地方获取Key Vault的值

这里使用方法就是和普通的appsettings.json里的一模一样了,注入configuration即可:

_configuration.GetValue<string>("MSSQL-USER-PASSWORD");

好啦,在Core应用中,连接Azure Key Vault已经说完了,看看Java如何操作吧。

新建一个JAVA项目

步骤 1 -创建一个Sring Boot项目

过程也是很简单,可以用Idea创建,也可以使用官方的模板来创建,就不多说了,创建好后,添加pom包:

<dependency><groupId>com.azure.spring</groupId><artifactId>azure-spring-boot-starter-keyvault-secrets</artifactId></dependency

然后,将上边四个变量放到配置文件里,

azure.keyvault.enabled=trueazure.keyvault.uri=https://blog-core-keyvault./azure.keyvault.client-id=你的应用idazure.keyvault.client-key=你的应用密钥azure.keyvault.tenant-id=你的tenantidazure.keyvault.authority-host=

注意最后一个配置很重要,需要指定host地址,因为默认的是的,如果你是的可以不用指定。

步骤 2-任何地方获取Key Vault的值

这里使用方法就是和普通的yml里的一模一样了,配置变量,打上@Value注解即可:

@SpringBootApplicationpublic class KeyvaultApplication implements CommandLineRunner {@Value("${MSSQL-USER-NAME}")private String mySecretProperty;public static void main(String[] args) {SpringApplication.run(KeyvaultApplication.class, args);}@Overridepublicvoidrun(String...args){System.out.println("property your-property-name value is: " + mySecretProperty);}}

好啦,在JAVA应用中,连接Azure Key Vault也说完了,大家可以尝试动手联系一下哟。

总结

本文以 Core 和 JAVA 为例讲解了如何在 Azure 中连接Key Vault配置,整体流程简单方便,文档特别清晰,再一次为微软Doc文档而欢呼。

*Source Link:

/Azure/azure-sdk-for-java/tree/master/sdk/spring/azure-spring-boot-starter-keyvault-secrets

/dotnet/category/net-core/?WT.mc_id=DOP-MVP-5003704

*Github:

/anjoy8/Blog.Core/

彩蛋

牺牲了很多个周末的时光,前前后后近一年的时间,我和其他几个小伙伴(主要是另外三个小伙伴来做的),将我这两年的博客整理了一本书——《 Core 5.0入门与实战》,元旦就可以出版啦!!!有需要的小伙伴可以到时候在各大平台搜索哟,还有一个月的倒计时。

友情提醒,大部分的内容都我这三年来写的博客相关的,也有新的内容,比如VUE3.0等等,良性购买哟。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。