强制启用 Entra ID 的集群 AKS 集群的 kubeconfig 令牌过期

问题描述 投票:0回答:1

最近我为AKS集群启用了Entra ID登录,

resource "azurerm_kubernetes_cluster" "this" {
...
  azure_active_directory_role_based_access_control {
    admin_group_object_ids = var.entraid_group_ids_cluster_admin
    azure_rbac_enabled     = false
    tenant_id              = var.tenant_id
  }
...

并安装了kubelogin

az account set --subscription [REDACTED]
az aks get-credentials --resource-group [RG] --name [NAME]
kubelogin convert-kubeconfig -l azurecli

启用 Entra ID 后第一次

kubectl
访问,它要求输入 OTP,我还可以在下面的路径中看到令牌

$ ls  ~/.kube/cache/kubelogin/AzurePublicCloud-6dae42f8-4368-4678-94ff-3960e28e3630-80faf920-1908-4b52-b5ef-a8e7bedfc67a-97428d91-daa2-4245-a358-87ce5cc734f6.json
/Users/user.name/.kube/cache/kubelogin/AzurePublicCloud-6dae42f8-4368-4678-94ff-3960e28e3630-80faf920-1908-4b52-b5ef-a8e7bedfc67a-97428d91-daa2-4245-a358-87ce5cc734f6.json

我已经使用

kubectl
访问一周了,我看到它再也没有要求 OTP(我认为令牌到期时间是 24 小时!?)。如果我查看缓存令牌内部

$ cat ~/.kube/cache/kubelogin/AzurePublicCloud-6dae42f8-4368-4678-94ff-3960e28e3630-80faf920-1908-4b52-b5ef-a8e7bedfc67a-97428d91-daa2-4245-a358-87ce5cc734f6.json
{"access_token":"[REDACTED]","expires_in":4932,"expires_on":1727278105,"not_before":1727272872,"resource":"6dae42f8-4368-4678-94ff-3960e28e3630","token_type":"Bearer"}

"expires_on":1727278105
的纪元时间是
Wednesday, 25 September 2024 15:28:25
,令牌已过期,不是应该要求再次OTP登录吗?

在这种情况下如何强制 kubeconfig 令牌过期?例如,24小时后,当我尝试使用

kubectl

时,它应该要求OTP
azure azure-aks microsoft-entra-id
1个回答
0
投票

kubectl
令牌的过期时间由 Microsoft Entra ID 配置确定,无法修改。令牌会被缓存,只有在过期或重新创建 K8s 配置文件后才会再次提示输入 OTP。 代币的生命周期被设计为不能少于 60 分钟。如果要强制缩短令牌生命周期,可以使用特权身份管理来控制对 AKS 群集的访问。默认情况下,Entra ID 令牌具有24 小时过期时间。您可以使用
kubelogin
命令 kubelogin remove-tokens 删除缓存的令牌。 这将强制在下次使用时从 Entra ID 请求新令牌。

您可以使用 cron 作业/脚本自动执行此操作

crontab -e
0 0 * * * /usr/local/bin/kubelogin remove-tokens

这将每天午夜运行删除令牌命令。

查看这些 MS 文档以供参考

另请参阅 MS QnA 论坛上发布的类似主题 -

© www.soinside.com 2019 - 2024. All rights reserved.