结合使用托管标识与 Bridge to Kubernetes
注意
Microsoft 计划不再积极维护 Bridge to Kubernetes 项目。 在接下来的几个月里,我们将项目转换为存档状态。 与此同时,该项目仍然可以使用和下载。 在此期间,我们希望探索并推荐能够提供与 Bridge to Kubernetes 类似好处的社区项目,供你将来使用。 如果你有任何疑问,请在 GitHub 的问题面板上与我们联系。
如果 AKS 群集使用托管标识安全功能来保护对机密和资源的访问,那么 Bridge to Kubernetes 需要一些特殊配置来确保它可以与这些功能配合使用。 需要将 Microsoft Entra 令牌下载到本地计算机,以确保本地执行和调试受到妥善保护,这需要在 Bridge to Kubernetes 中进行一些特殊配置。 本文介绍了如何配置 Bridge to Kubernetes 以与使用托管标识的服务配合使用。
如何将服务配置为使用托管标识
若要启用支持托管标识的本地计算机,请在 KubernetesLocalConfig.yaml 文件的 enableFeatures
部分中添加 ManagedIdentity
。 如果还没有 enableFeatures
部分,请添加它。
enableFeatures:
- ManagedIdentity
警告
请务必仅在处理开发群集(而不是生产群集)时对 Bridge to Kubernetes 使用托管标识,因为 Microsoft Entra 令牌会被提取到本地计算机,这将带来潜在的安全风险。
如果没有 KubernetesLocalConfig.yaml 文件,可以创建一个;请参阅操作说明:配置 Bridge to Kubernetes。
如何提取 Microsoft Entra 令牌
在提取令牌时,必须确保在代码中依赖于 Azure.Identity.DefaultAzureCredential
或 Azure.Identity.ManagedIdentityCredential
。
下面的 C# 代码展示了如何在使用 ManagedIdentityCredential
时提取存储帐户凭据:
var credential = new ManagedIdentityCredential(miClientId);
Console.WriteLine("Created credential");
var containerClient = new BlobContainerClient(new Uri($"https://{accountName}.blob.windows.net/{containerName}"), credential);
Console.WriteLine("Created blob client");
下面的代码展示了如何在使用 DefaultAzureCredential 时提取存储帐户凭据:
var credential = new DefaultAzureCredential();
Console.WriteLine("Created credential");
var containerClient = new BlobContainerClient(new Uri($"https://{accountName}.blob.windows.net/{containerName}"), credential);
Console.WriteLine("Created blob client");
若要了解如何使用托管标识访问其他 Azure 资源,请参阅后续步骤部分。
当令牌被下载时接收 Azure 警报
每当你在服务上使用 Bridge to Kubernetes 时,Microsoft Entra 令牌就会被下载到本地计算机。 可以启用 Azure 警报,以在这种情况发生时收到通知。 有关信息,请参阅启用 Azure Defender。 请注意,30 天试用期后是要收费的。
后续步骤
至此,你已经将 Bridge to Kubernetes 配置为用于使用托管标识的 AKS 群集,接下来可以照常调试了。 请参阅 [bridge-to-kubernetes.md#connect-to-your-cluster-and-debug-a-service]。
通过学习以下教程,详细了解如何使用托管标识来访问 Azure 资源:
- 教程:使用 Linux VM 系统分配的托管标识访问 Azure 存储
- 教程:使用 Linux VM 系统分配的托管标识访问 Azure Data Lake Store
- 教程:使用 Linux VM 系统分配的托管标识访问 Azure Key Vault
此部分还有其他一些教程,介绍了如何使用托管标识来访问其他 Azure 资源。