1

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

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

来自 On-Premise 世界....示例中丢失的是 IIDentity 的概念。

例如,如果我有一个 Windows 2012 服务器,运行一个 Windows 服务或一个 IIS 托管应用程序,那么就有 IIDentity 的想法。Windows 服务,它将是与运行 Windows 服务相关联的用户.....(通过代码或控制面板/服务中的属性设置)。使用 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“图像”如下

  • ***“来自微软/aspnetcore:2.0”
  • *****“来自 java:8”
4

1 回答 1

0

我现在考虑的方式是“在运行容器的 VM 之上应用托管服务标识 (MSI)”。

这篇文章谈到了它:

https://banzaicloud.com/blog/azure-msi-role/

这里的关键是……一旦创建了kubernetes类型的VM,就可以手动进去开启Managed-Service-Identity能力。

转到VM(kubernetes创建的......可能有超过1个VM)......

单击“配置”选项卡。

在我做这个神奇的开启之前......文字内容如下:

"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(应用程序代码)将能够获得一个 Token,如下面的代码所示。

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

于 2018-08-24T13:48:06.917 回答