使用 AKS 托管的 Microsoft Entra 集成管理本地帐户
在部署 AKS 群集时,本地帐户在默认情况下处于启用状态。 即使是在启用 RBAC 或 Microsoft Entra 集成时,--admin
访问权限也仍作为一个不可审核的后门选项存在。 本文介绍如何在现有群集上禁用本地帐户、创建禁用本地帐户的新群集,以及如何在现有群集上重新启用本地帐户。
开始之前
- 有关概述和设置说明,请参阅 AKS 托管的 Microsoft Entra 集成。
禁用本地帐户
可以使用参数 disable-local-accounts
禁用本地帐户。 为托管群集 API 添加了 properties.disableLocalAccounts
字段,以指示该功能是否已在群集上启用。
注意
在启用了 Microsoft Entra 集成的群集上,已分配到
aad-admin-group-object-ids
指定的 Microsoft Entra 管理员组的用户仍可以使用非管理员凭据获得访问权限。 在未启用 Microsoft Entra 集成且properties.disableLocalAccounts
设置为true
的群集上,使用用户凭据或管理员凭据尝试身份验证都将失败。在用户可能已在其中使用本地帐户进行身份验证的现有 AKS 群集上禁用本地用户帐户之后,管理员必须轮换群集证书以撤销他们可能有权访问的证书。 如果这是新群集,则无需任何操作。
创建没有本地帐户的新群集
使用带有
disable-local-accounts
标志的az aks create
命令创建没有任何本地帐户的新 AKS 群集。az aks create -g <resource-group> -n <cluster-name> --enable-aad --aad-admin-group-object-ids <aad-group-id> --disable-local-accounts
在输出中,检查
properties.disableLocalAccounts
字段是否设为true
,从而确认已禁用了本地帐户。"properties": { ... "disableLocalAccounts": true, ... }
运行
az aks get-credentials
命令,确保群集设为禁用本地帐户。az aks get-credentials --resource-group <resource-group> --name <cluster-name> --admin
输出应显示以下错误消息,表示该功能阻止访问:
Operation failed with status: 'Bad Request'. Details: Getting static credential isn't allowed because this cluster is set to disable local accounts.
在现有群集上禁用本地帐户
使用带有
disable-local-accounts
参数的az aks update
命令在现有的已启用 Microsoft Entra 集成 的 AKS 群集上禁用本地帐户。az aks update -g <resource-group> -n <cluster-name> --disable-local-accounts
在输出中,检查
properties.disableLocalAccounts
字段是否设为true
,从而确认已禁用了本地帐户。"properties": { ... "disableLocalAccounts": true, ... }
运行
az aks get-credentials
命令,确保群集设为禁用本地帐户。az aks get-credentials --resource-group <resource-group> --name <cluster-name> --admin
输出应显示以下错误消息,表示该功能阻止访问:
Operation failed with status: 'Bad Request'. Details: Getting static credential isn't allowed because this cluster is set to disable local accounts.
在现有群集上重新启用本地帐户
使用带
enable-local-accounts
参数的az aks update
命令在现有群集上重新启用已禁用的本地帐户。az aks update -g <resource-group> -n <cluster-name> --enable-local-accounts
在输出中,检查
properties.disableLocalAccounts
字段是否设为false
,从而确认已重新启用了本地帐户。"properties": { ... "disableLocalAccounts": false, ... }
运行
az aks get-credentials
命令,确保群集设为启用本地帐户。az aks get-credentials --resource-group <resource-group> --name <cluster-name> --admin
输出应显示以下消息,表示已成功在群集上启用本地帐户:
Merged "<cluster-name>-admin" as current context in C:\Users\<username>\.kube\config