使用 AKS 托管的 Microsoft Entra 集成进行群集访问控制
将 Microsoft Entra ID 与 AKS 群集集成后,可以使用条件访问或 Privileged Identity Management (PIM) 实时请求来控制对群集的访问。 本文介绍如何在 AKS 群集上启用条件访问和 PIM。
注意
Microsoft Entra 条件访问和 Privileged Identity Management (PIM) 是需要 Premium P2 SKU 的 Microsoft Entra ID P1、P2 或治理功能。 有关 Microsoft Entra ID 许可证和 SKU 的详细信息,请参阅 Microsoft Entra ID 治理许可基础知识和定价指南。
开始之前
- 有关概述和设置说明,请参阅 AKS 托管的 Microsoft Entra 集成。
将条件访问与 Microsoft Entra ID 和 AKS 配合使用
在 Azure 门户中转到“Microsoft Entra ID”页,然后选择“企业应用程序”。
选择“条件访问”>“策略”>“新建策略”。
为策略输入名称,例如“aks-policy”。
在“分配” 下,选择“用户和组” 。 选择要将策略应用到的用户和组。 在此示例中,请选择对你的群集拥有管理员访问权限的同一个 Microsoft Entra 组。
在“云应用或操作”>“包括”下,选择“选择应用”。 搜索“Azure Kubernetes 服务”,然后选择“Azure Kubernetes 服务 Microsoft Entra 服务器”。
在“访问控制>授权”下,依次选择“授予访问权限”、“要求将设备标记为合规”和“需要所有已选控件”。
确认设置,将“启用策略”设置为“开”,然后选择“创建”。
验证是否已成功列出条件访问策略
使用
az aks get-credentials
命令获取用户凭据以访问群集。az aks get-credentials --resource-group myResourceGroup --name myManagedCluster
按照说明进行登录。
使用
kubectl get nodes
命令查看群集中的节点。kubectl get nodes
在 Azure 门户中导航到“Microsoft Entra ID”,然后选择“企业应用程序”>“活动”>“登录”。
在“条件访问列下,应会看到“成功”状态。 选择事件,然后选择“条件访问”选项卡。将列出条件访问策略。
使用 Microsoft Entra ID 和 AKS 配置实时群集访问
在 Azure 门户中转到“Microsoft Entra ID”,然后选择“属性”。
注意在“租户 ID”下列出的值。 在稍后的步骤中,将会引用该值作为
<tenant-id>
。选择“组”>“新建组”。
检查是否已选择组类型“安全性”并指定组名称,例如 myJITGroup。 在“可将 Microsoft Entra 角色分配到此组(预览版)”下选择“是”,然后选择“创建”。
在“组”页上选择刚刚创建的组,并记下“对象 ID”。 在稍后的步骤中,会将其引用为
<object-id>
。结合
--aad-admin-group-objects-ids
和--aad-tenant-id parameters
使用az aks create
命令创建启用了 AKS 托管的 Microsoft Entra 集成的 AKS 群集,并包含前面步骤中记下的值。az aks create -g myResourceGroup -n myManagedCluster --enable-aad --aad-admin-group-object-ids <object-id> --aad-tenant-id <tenant-id>
在 Azure 门户中,选择“活动”>“特权访问(预览版)”>“启用特权访问”。
若要授予访问权限,请选择“添加分配”。
从“选择角色”下拉列表中,选择要为其授予群集访问权限的用户和组。 组管理员随时可以修改这些分配。 然后,选择“下一步”。
在“分配类型”下选择“活动”,然后指定所需的持续时间。 提供理由,然后选择“分配”。
有关分配类型的详细信息,请参阅在 Privileged Identity Management 中为特权访问组分配资格(预览版)。
通过访问群集验证实时访问是否有效
使用
az aks get-credentials
命令获取用户凭据以访问群集。az aks get-credentials --resource-group myResourceGroup --name myManagedCluster
按照以下步骤登录。
使用
kubectl get nodes
命令查看群集中的节点。kubectl get nodes
请注意身份验证要求,并按照步骤完成身份验证。 如果成功,应会看到类似于以下示例输出的输出:
To sign in, use a web browser to open the page https://microsoft.com/deviceloginchina and enter the code AAAAAAAAA to authenticate. NAME STATUS ROLES AGE VERSION aks-nodepool1-61156405-vmss000000 Ready agent 6m36s v1.18.14 aks-nodepool1-61156405-vmss000001 Ready agent 6m42s v1.18.14 aks-nodepool1-61156405-vmss000002 Ready agent 6m33s v1.18.14
在命名空间级别应用即时访问
将 AKS 群集与 Azure RBAC 集成。
使用
az role assignment create
命令将要与即时访问集成的组与群集中的命名空间相关联。az role assignment create --role "Azure Kubernetes Service RBAC Reader" --assignee <AAD-ENTITY-ID> --scope $AKS_ID/namespaces/<namespace-name>
将在命名空间级别配置的组与 PIM 相关联以完成配置。
疑难解答
如果 kubectl get nodes
返回类似于下面的错误:
Error from server (Forbidden): nodes is forbidden: User "aaaa11111-11aa-aa11-a1a1-111111aaaaa" cannot list resource "nodes" in API group "" at the cluster scope
请确保安全组的管理员为你的帐户提供了“活动”分配。
后续步骤
- 使用 kubelogin 来访问 kubectl 中未提供的 Azure 身份验证功能。