默认情况下在部署 AKS 群集时,本地帐户在默认情况下处于启用状态。 即使是在启用 RBAC 或 Azure Active Directory 集成时,--admin
访问权限仍然存在,也就意味着,我们可以在运行Get-Credentials时,指定--admin参数来获取访问权限,这本质上是作为一个不可审核的后门选项。 考虑到这一点,AKS 为用户提供了禁用的方式,用户可以通过 disable-local-accounts
标志来禁用本地帐户的功能。 另外还为AKS群集 API 添加了 properties.disableLocalAccounts
字段,以指示该功能是否已在群集上启用。
默认情况下,本地账户处于启用状态,可以通过查看 properties.disableLocalAccounts 的值为false来判断:
接下来,更新当前aks群集,指定 --disable-local-accounts 参数来禁用本地账户,本地账户禁用以后,查看 properties.disableLocalAccounts 的值已经变为true:
在用户可能使用了本地帐户的现有 AKS 群集上禁用本地帐户用户后,管理员必须轮换群集证书,才能撤销这些用户可能有权访问的证书。 如果这是新的群集,则无需任何操作。
注意:使用 az aks rotate-certs
轮换证书将重新创建所有节点及其 OS 磁盘,并可能导致 AKS 群集故障长达 30 分钟
证书轮换完成以后,如果继续使用之前的旧证书进行验证,则会显示一个错误:
这时,就需要通过运行 az aks get-credentials
来更新 kubectl
使用的证书: