配置AKS群集禁用本地账户

时间:2023-02-23 16:03:45

默认情况下在部署 AKS 群集时,本地帐户在默认情况下处于启用状态。 即使是在启用 RBAC 或 Azure Active Directory 集成时,​​--admin​​ 访问权限仍然存在,也就意味着,我们可以在运行Get-Credentials时,指定--admin参数来获取访问权限,这本质上是作为一个不可审核的后门选项。 考虑到这一点,AKS 为用户提供了禁用的方式,用户可以通过 ​​disable-local-accounts​​ 标志来禁用本地帐户的功能。 另外还为AKS群集 API 添加了 ​​properties.disableLocalAccounts​​ 字段,以指示该功能是否已在群集上启用。

默认情况下,本地账户处于启用状态,可以通过查看 properties.disableLocalAccounts 的值为false来判断:

配置AKS群集禁用本地账户

接下来,更新当前aks群集,指定 --disable-local-accounts 参数来禁用本地账户,本地账户禁用以后,查看 properties.disableLocalAccounts 的值已经变为true:

az aks update -g GavinWu -n LabAKS --disable-local-accounts

配置AKS群集禁用本地账户

在用户可能使用了本地帐户的现有 AKS 群集上禁用本地帐户用户后,管理员必须​​轮换群集证书​​,才能撤销这些用户可能有权访问的证书。 如果这是新的群集,则无需任何操作。

注意:使用 ​​az aks rotate-certs​​ 轮换证书将重新创建所有节点及其 OS 磁盘,并可能导致 AKS 群集故障长达 30 分钟

az aks rotate-certs -g Gavinwu -n LabAKS

配置AKS群集禁用本地账户

证书轮换完成以后,如果继续使用之前的旧证书进行验证,则会显示一个错误:

配置AKS群集禁用本地账户

这时,就需要通过运行 ​​az aks get-credentials​​ 来更新 ​​kubectl​​ 使用的证书:

az aks Get-Credentials -g GavinWu -n LabAKS --overwrite-existing

配置AKS群集禁用本地账户