使用 AKS 托管的 Microsoft Entra 集成管理本地帐户

在部署 AKS 群集时,本地帐户在默认情况下处于启用状态。 即使是在启用 RBAC 或 Microsoft Entra 集成时,--admin 访问权限也仍作为一个不可审核的后门选项存在。 本文介绍如何在现有群集上禁用本地帐户、创建禁用本地帐户的新群集,以及如何在现有群集上重新启用本地帐户。

开始之前

禁用本地帐户

可以使用参数 disable-local-accounts 禁用本地帐户。 为托管群集 API 添加了 properties.disableLocalAccounts 字段,以指示该功能是否已在群集上启用。

注意

  • 在启用了 Microsoft Entra 集成的群集上,已分配到 aad-admin-group-object-ids 指定的 Microsoft Entra 管理员组的用户仍可以使用非管理员凭据获得访问权限。 在未启用 Microsoft Entra 集成且 properties.disableLocalAccounts 设置为 true 的群集上,使用用户凭据或管理员凭据尝试身份验证都将失败。

  • 在用户可能已在其中使用本地帐户进行身份验证的现有 AKS 群集上禁用本地用户帐户之后,管理员必须轮换群集证书以撤销他们可能有权访问的证书。 如果这是新群集,则无需任何操作。

创建没有本地帐户的新群集

  1. 使用带有 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
    
  2. 在输出中,检查 properties.disableLocalAccounts 字段是否设为 true,从而确认已禁用了本地帐户。

    "properties": {
        ...
        "disableLocalAccounts": true,
        ...
    }
    
  3. 运行 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.
    

在现有群集上禁用本地帐户

  1. 使用带有 disable-local-accounts 参数的 az aks update 命令在现有的已启用 Microsoft Entra 集成 的 AKS 群集上禁用本地帐户。

    az aks update -g <resource-group> -n <cluster-name> --disable-local-accounts
    
  2. 在输出中,检查 properties.disableLocalAccounts 字段是否设为 true,从而确认已禁用了本地帐户。

    "properties": {
        ...
        "disableLocalAccounts": true,
        ...
    }
    
  3. 运行 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.
    

在现有群集上重新启用本地帐户

  1. 使用带 enable-local-accounts 参数的 az aks update 命令在现有群集上重新启用已禁用的本地帐户。

    az aks update -g <resource-group> -n <cluster-name> --enable-local-accounts
    
  2. 在输出中,检查 properties.disableLocalAccounts 字段是否设为 false,从而确认已重新启用了本地帐户。

    "properties": {
        ...
        "disableLocalAccounts": false,
        ...
    }
    
  3. 运行 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
    

后续步骤