我已经阅读了Microsoft的这份文档,其中描述了如何将秘密卷添加到容器实例:
https://docs.microsoft.com/bs-latn-ba/azure///container-instances/container-instances-volume-secret
我现在想从我的asp.net核心应用程序中读取这些安全值。我怎样才能做到这一点?我在任何地方都找不到任何文档。
理想情况下,我想在Startup类中进行此配置:
这里的东西:
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseSerilog()
.UseSetting(WebHostDefaults.ApplicationKey, typeof(Program).GetTypeInfo().Assembly.FullName); // beware of this
// shouldn't be removed otherwise site will start outputting 404.
// see: https://github.com/aspnet/Hosting/issues/903#issuecomment-269103645
}
最后,我希望能够在本地运行代码,以便在将容器部署到天蓝色之前检查它是否正常工作。有没有办法可以在本地安装中模拟/伪造这些秘密(Visual Studio 2017,解决方案已启用Docker支持,Docker在我的计算机上本地运行)确实使我确信一切正常?
我已经编辑了这个问题,以明确表明这与秘密卷有关
答案 0 :(得分:1)
最初的问题是关于环境变量的,所以这部分是关于使用环境变量的。
文章介绍了如何将这些机密写入环境变量。要在您的应用程序中使用它们,您必须读取环境变量。 asp.net核心的配置完美支持了这一点:
鉴于您具有以下配置(来自https://docs.microsoft.com/en-us/azure/container-instances/container-instances-environment-variables#secure-values):
apiVersion: 2018-10-01
location: eastus
name: securetest
properties:
containers:
- name: mycontainer
properties:
environmentVariables:
- name: 'NOTSECRET'
value: 'my-exposed-value'
- name: 'SECRET'
secureValue: 'my-secret-value'
以及文档中此处所述的默认设置:https://docs.microsoft.com/en-us/azure/container-instances/container-instances-environment-variables#secure-values
2.x示例应用程序利用了静态便捷方法 CreateDefaultBuilder来构建主机,其中包括对 AddEnvironmentVariables。
您可以像这样阅读您的秘密
var secret = config.GetValue<string>("SECRET", '');
秘密卷每个秘密值将包含一个文件。
中的示例为例 volumes:
- name: secretvolume1
secret:
mysecret1: TXkgZmlyc3Qgc2VjcmV0IEZPTwo=
mysecret2: TXkgc2Vjb25kIHNlY3JldCBCQVIK
您将拥有一个包含文件“ mysecret1”和“ mysecret2”的目录。
您可以使用“每个文件的密钥配置提供程序”添加这些值
config.AddKeyPerFile(directoryPath: path, optional: true);
添加“配置源”后,您可以像这样访问值
var secret = config.GetValue<string>("mysecret1", '');