共用方式為


使用受信任存取來取得 Azure Kubernetes Service 中 Azure 資源的安全存取

本文說明如何使用信任存取,在 Azure Kubernetes Service (AKS) 中取得 Azure 服務對 Kubernetes API 伺服器的安全存取。

信任存取功能可讓服務使用 Azure 後端來保護對 AKS API 伺服器的存取,而不需要私人端點。 此功能不需要依賴具有 Microsoft Entra 權限的身分識別,而是可以使用系統指派的受控識別,向您想要搭配 AKS 叢集使用的受控服務和應用程式進行驗證。

注意

受信任存取權 API 已正式推出。 我們提供 Azure CLI 的正式發行 (GA) 支援,但它仍處於預覽狀態,且需要使用 aks-preview 延伸模組。

受信任存取權功能概觀

受信任存取權可解決下列情景的存取問題:

  • 如果授權的 IP 範圍已設定或位於私人叢集中,則 Azure 服務可能無法存取 Kubernetes API 伺服器 (除非您實作私人端點存取模型)。
  • 授與對 Kubernetes API 的 Azure 服務管理員存取權不會遵循最低權限存取的最佳做法,而且可能會導致權限提升或認證外洩的風險。 例如,您可能必須實施高特許權的服務對服務權限,而它們在稽核審查中並不理想。

您可以使用受信任存取,以使用稱為「角色繫結」的 Azure 資源來明確同意所允許資源的系統指派受控識別,以存取您的 AKS 叢集。 您的 Azure 資源會透過系統指派的受控識別驗證,以透過 AKS 區域閘道來存取 AKS 叢集。 適當的 Kubernetes 權限會透過稱為 role 的 Azure 資源所指派。 透過受信任存取,您可以存取具有不同設定的 AKS 叢集,包括但不限於私人叢集已關閉本機帳戶的叢集Microsoft Entra 叢集,以及授權 IP 範圍叢集

必要條件

連線至您的叢集

使用 az aks get-credentials 命令,設定 kubectl 以連線到您的叢集。

export RESOURCE_GROUP_NAME="myResourceGroup"
export CLUSTER_NAME="myClusterName"

az aks get-credentials --resource-group ${RESOURCE_GROUP_NAME} --name ${CLUSTER_NAME} --overwrite-existing

使用 kubectl get 命令確認叢集的連線。

kubectl get nodes

選取必要的受信任存取角色

您所選取的角色取決於您想要存取 AKS 叢集的 Azure 服務。 Azure 服務可協助建立角色和角色繫結,以建置從 Azure 服務到 AKS 的連線。

若要尋找您需要的角色,請參閱您想要連線到 AKS 之 Azure 服務的文件。 您也可以使用 Azure CLI,使用 az aks trustedaccess role list --location <location> 命令列出 Azure 服務可用的角色。

建立受信任存取角色繫結

確認要使用的角色之後,請使用 Azure CLI 以在 AKS 叢集中建立受信任存取角色繫結。 角色繫結會將您所選取的角色與 Azure 服務建立關聯。

export ROLE_BINDING_NAME="myRoleBindingName"
export SOURCE_RESOURCE_ID="mySourceResourceID"
export ROLE_NAME_1="myRoleName1"
export ROLE_NAME_2="myRoleName2"

az aks trustedaccess rolebinding create --resource-group ${RESOURCE_GROUP_NAME} --cluster-name ${CLUSTER_NAME} --name ${ROLE_BINDING_NAME} --source-resource-id ${SOURCE_RESOURCE_ID} --roles ${ROLE_NAME_1},${ROLE_NAME_2}

結果:

{
  "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/${RESOURCE_GROUP_NAME}/providers/Microsoft.ContainerService/managedClusters/${CLUSTER_NAME}/trustedAccessRoleBindings/${ROLE_BINDING_NAME}",
  "name": "${ROLE_BINDING_NAME}",
  "provisioningState": "Succeeded",
  "resourceGroup": "${RESOURCE_GROUP_NAME}",
  "roles": [
    "${ROLE_NAME_1}",
    "${ROLE_NAME_2}"
  ],
  "sourceResourceId": "${SOURCE_RESOURCE_ID}",
  "systemData": null,
  "type": "Microsoft.ContainerService/managedClusters/trustedAccessRoleBindings"
}

更新現有的受信任存取角色繫結

對於具有相關聯來源服務的現有角色系結,您可以使用 命令,以 az aks trustedaccess rolebinding update --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME --name $ROLE_BINDING_NAME --roles $ROLE_NAME_3,$ROLE_NAME_4 新的角色更新角色系結。 此命令會使用您指定的新角色來更新角色系結。

注意

附加元件管理員會每五分鐘更新叢集一次,因此新的角色繫結最多可能需要五分鐘的時間才會生效。 在新的角色繫結生效之前,現有的角色繫結仍然可以運作。

您可以使用 az aks trusted access rolebinding list 命令來檢查目前的角色繫結。

顯示受信任存取角色繫結

使用 az aks trustedaccess rolebinding show --name $ROLE_BINDING_NAME --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME 命令顯示特定的受信任存取角色系結。

列出叢集的所有受信任存取角色繫結

使用 az aks trustedaccess rolebinding list --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME 命令列出叢集的所有受信任存取角色系結。