结合使用托管标识与 Bridge to Kubernetes

说明

Bridge to Kubernetes 将于 2025 年 4 月 30 日停用。 有关停用和开源替代项的详细信息,请参阅 GitHub 问题

如果 AKS 群集使用 托管标识 安全功能来保护对机密和资源的访问,则 Bridge to Kubernetes 需要一些特殊的配置来确保它可以处理这些功能。 需要将Microsoft Entra 令牌下载到本地计算机,以确保本地执行和调试得到适当的保护,这需要在 Bridge to Kubernetes 中进行一些特殊配置。 本文介绍如何将 Bridge to Kubernetes 配置为与使用托管标识的服务配合工作。

如何将服务配置为使用托管标识

若要启用支持托管标识的本地计算机,请在 enableFeatures 部分中的 KubernetesLocalConfig.yaml 文件中添加 ManagedIdentity。 如果还没有 enableFeatures 部分,请添加它。

enableFeatures:
  - ManagedIdentity

警告

在使用开发群集(而不是生产群集)时,请务必仅使用 Bridge to Kubernetes 的托管标识,因为将Microsoft Entra 令牌提取到本地计算机,这会带来潜在的安全风险。

如果没有 KubernetesLocalConfig.yaml 文件,可以创建一个;请参阅 如何:配置 Bridge to Kubernetes

如何提取Microsoft Entra 令牌

在提取令牌时,必须确保在代码中依赖于 Azure.Identity.DefaultAzureCredentialAzure.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 资源:

该部分中还有其他教程,还介绍如何使用托管标识访问其他 Azure 资源。

另请参阅

Microsoft Entra ID