所以我对云中的容器还比较陌生。
我已经使用 Azure容器实例(例如:https://xpirit.com/2017/11/12/containers-as-a-service-in-azure/)和 AKS (例如:https://docs.microsoft.com/en-us/azure/aks/kubernetes-walkthrough-portal)做了一些概念验证
来自本地世界。...示例中丢失的是IIDentity。
例如,如果我有Windows 2012 Server,运行Windows Service或IIS托管应用程序,则可以使用IIDentity。 Windows Service,它将是与运行Windows Service .....(通过代码或通过Control-Panel / Services中的属性设置)相关的用户。对于IIS,它是运行App-Pool的用途。
所以我分别阅读了
服务标识,甚至是托管服务标识。 (示例:https://anthonychu.ca/post/secrets-aspnet-core-key-vault-msi/)
这是在暗示我。
运行时如何设置“ IIdentity”
还是我在错误的树上吠叫?
=================
下面的Docker“图像”
答案 0 :(得分:0)
我很惊讶没有对此作出任何答复。
我将发布发现的内容。
我现在正在考虑的方式是“在运行容器的VM上应用托管服务身份(MSI)”。
本文对此进行了讨论:
https://banzaicloud.com/blog/azure-msi-role/
这里的关键是...一旦创建了Kubernetes类型的VM,您就可以手动进入并打开Managed-Service-Identity功能。
转到虚拟机(创建了kubernetes ...可能有1个以上的虚拟机).......
点击“配置”标签。
在我打开魔法之前.....文字为:
"Managed Service Identity"
"Register with Azure Activity Directory"
and a bug NO/YES push button.
在我打开魔术之后,它将显示为:
Just-in-time access
To improve security, enable a just-in-time access policy.
Upgrade your Azure Security Center subscription to the standard tier
现在,这种启用了使用托管服务身份的功能。
然后,您必须将一些托管服务标识映射到实际的VM。
我仍在研究……...,以便在我了解更多信息时尝试更新此答案。
但是从理论上讲,一旦MSI被“应用到VM”上,VM(应用程序代码)将能够获得令牌,如下面的代码所示。
var azureServiceTokenProvider = new AzureServiceTokenProvider();
这是一个更大的示例代码大小……(从上面的chu.ca网站链接复制并粘贴)(但以防万一该链接出现故障)
Microsoft.Azure.Services.AppAuthentication package.
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((ctx, builder) =>
{
var keyVaultEndpoint = GetKeyVaultEndpoint();
if (!string.IsNullOrEmpty(keyVaultEndpoint))
{
var azureServiceTokenProvider = new AzureServiceTokenProvider();
var keyVaultClient = new KeyVaultClient(
new KeyVaultClient.AuthenticationCallback(
azureServiceTokenProvider.KeyVaultTokenCallback));
builder.AddAzureKeyVault(
keyVaultEndpoint, keyVaultClient, new DefaultKeyVaultSecretManager());
}
})
.UseStartup<Startup>()
.Build();
private static string GetKeyVaultEndpoint() => Environment.GetEnvironmentVariable("KEYVAULT_ENDPOINT");
我还没有看到如何赋予MSI“读取KeyVault的权利”……这还在进行中。
如果您有具体的信息可以满足此需求,请随时编辑此答案。 请勿编辑此问题以询问“您是否知道了”。