运行容器化应用程序时的身份?

时间:2018-08-16 11:55:04

标签: azure azure-container-instances azure-security

所以我对云中的容器还比较陌生。

我已经使用 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”

  1. 在“ Azure容器实例”中运行的dotnetcore应用***
  2. 在“ Azure容器实例”中运行的Java应用*****
  3. 在“ AKS”中运行的dotnetcore应用***
  4. 在“ AKS”中运行的Java应用*****

还是我在错误的树上吠叫?

=================

下面的Docker“图像”

  • ***“ FROM microsoft / aspnetcore:2.0”
  • *****“来自java:8”

1 个答案:

答案 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的权利”……这还在进行中。

如果您有具体的信息可以满足此需求,请随时编辑此答案。 请勿编辑此问题以询问“您是否知道了”。