使用 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 治理许可基础知识定价指南

开始之前

将条件访问与 Microsoft Entra ID 和 AKS 配合使用

  1. 在 Azure 门户中转到“Microsoft Entra ID”页,然后选择“企业应用程序”。

  2. 选择“条件访问”>“策略”>“新建策略”。

    Screenshot of adding a Conditional Access policy.

  3. 为策略输入名称,例如“aks-policy”。

  4. 在“分配” 下,选择“用户和组” 。 选择要将策略应用到的用户和组。 在此示例中,请选择对你的群集拥有管理员访问权限的同一个 Microsoft Entra 组。

    Screenshot of selecting users or groups to apply the Conditional Access policy.

  5. 在“云应用或操作”>“包括”下,选择“选择应用”。 搜索“Azure Kubernetes 服务”,然后选择“Azure Kubernetes 服务 Microsoft Entra 服务器”。

    Screenshot of selecting Azure Kubernetes Service AD Server for applying the Conditional Access policy.

  6. 在“访问控制>授权”下,依次选择“授予访问权限”、“要求将设备标记为合规”和“需要所有已选控件”。

    Screenshot of selecting to only allow compliant devices for the Conditional Access policy.

  7. 确认设置,将“启用策略”设置为“”,然后选择“创建”。

    Screenshot of enabling the Conditional Access policy.

验证是否已成功列出条件访问策略

  1. 使用 az aks get-credentials 命令获取用户凭据以访问群集。

     az aks get-credentials --resource-group myResourceGroup --name myManagedCluster
    
  2. 按照说明进行登录。

  3. 使用 kubectl get nodes 命令查看群集中的节点。

    kubectl get nodes
    
  4. 在 Azure 门户中导航到“Microsoft Entra ID”,然后选择“企业应用程序”>“活动”>“登录”。

  5. 在“条件访问列下,应会看到“成功”状态。 选择事件,然后选择“条件访问”选项卡。将列出条件访问策略。

    Screenshot that shows failed sign-in entry due to Conditional Access policy.

使用 Microsoft Entra ID 和 AKS 配置实时群集访问

  1. 在 Azure 门户中转到“Microsoft Entra ID”,然后选择“属性”。

  2. 注意在“租户 ID”下列出的值。 在稍后的步骤中,将会引用该值作为 <tenant-id>

    Screenshot of the Azure portal screen for Microsoft Entra ID with the tenant's ID highlighted.

  3. 选择“”>“新建组”。

    Screenshot of the Azure portal Active Directory groups screen with the New Group option highlighted.

  4. 检查是否已选择组类型“安全性”并指定组名称,例如 myJITGroup。 在“可将 Microsoft Entra 角色分配到此组(预览版)”下选择“”,然后选择“创建”。

    Screenshot of the new group creation screen in the Azure portal.

  5. 在“组”页上选择刚刚创建的组,并记下“对象 ID”。 在稍后的步骤中,会将其引用为 <object-id>

    Screenshot of the Azure portal screen for the just-created group with the Object ID highlighted.

  6. 结合 --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>
    
  7. 在 Azure 门户中,选择“活动”>“特权访问(预览版)”>“启用特权访问”。

    Screenshot of the Privileged access (Preview) page in the Azure portal with Enable privileged access highlighted.

  8. 若要授予访问权限,请选择“添加分配”。

    Screenshot of the Privileged access (Preview) screen in the Azure portal after enabling. The option to Add assignments is highlighted.

  9. 从“选择角色”下拉列表中,选择要为其授予群集访问权限的用户和组。 组管理员随时可以修改这些分配。 然后,选择“下一步”。

    Screenshot of the Add assignments Membership screen in the Azure portal with a sample user selected to be added as a member. The Next option is highlighted.

  10. 在“分配类型”下选择“活动”,然后指定所需的持续时间。 提供理由,然后选择“分配”。

    Screenshot of the Add assignments Setting screen in the Azure portal. An assignment type of Active is selected and a sample justification has been given. The Assign option is highlighted.

有关分配类型的详细信息,请参阅在 Privileged Identity Management 中为特权访问组分配资格(预览版)

通过访问群集验证实时访问是否有效

  1. 使用 az aks get-credentials 命令获取用户凭据以访问群集。

    az aks get-credentials --resource-group myResourceGroup --name myManagedCluster
    
  2. 按照以下步骤登录。

  3. 使用 kubectl get nodes 命令查看群集中的节点。

    kubectl get nodes
    
  4. 请注意身份验证要求,并按照步骤完成身份验证。 如果成功,应会看到类似于以下示例输出的输出:

    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
    

在命名空间级别应用即时访问

  1. 将 AKS 群集与 Azure RBAC 集成。

  2. 使用 az role assignment create 命令将要与即时访问集成的组与群集中的命名空间相关联。

    az role assignment create --role "Azure Kubernetes Service RBAC Reader" --assignee <AAD-ENTITY-ID> --scope $AKS_ID/namespaces/<namespace-name>
    
  3. 将在命名空间级别配置的组与 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 身份验证功能。