Uzyskiwanie bezpiecznego dostępu do zasobów platformy Azure w usłudze Azure Kubernetes Service przy użyciu zaufanego dostępu

W tym artykule pokazano, jak uzyskać bezpieczny dostęp dla usług platformy Azure do serwera interfejsu API Kubernetes w usłudze Azure Kubernetes Service (AKS) przy użyciu zaufanego dostępu.

Funkcja Zaufanego dostępu zapewnia usługom bezpieczny dostęp do serwera interfejsu API usługi AKS przy użyciu zaplecza platformy Azure bez konieczności używania prywatnego punktu końcowego. Zamiast polegać na tożsamościach, które mają uprawnienia Microsoft Entra, ta funkcja może używać systemowej, zarządzanej tożsamości do uwierzytelniania usług zarządzanych i aplikacji, których chcesz używać w swoich klastrach AKS.

Uwaga

Interfejs API zaufanego dostępu jest ogólnie dostępny. Zapewniamy wsparcie ogólnej dostępności (GA) dla Azure CLI, jednak nadal jest ono dostępne w wersji zapoznawczej i wymaga użycia rozszerzenia aks-preview.

Omówienie funkcji zaufanego dostępu

Zaufany dostęp dotyczy następujących scenariuszy:

  • Jeśli autoryzowany zakres adresów IP jest ustawiony lub w klastrze prywatnym, usługi platformy Azure mogą nie być w stanie uzyskać dostępu do serwera interfejsu API Kubernetes, chyba że zaimplementowano model dostępu do prywatnego punktu końcowego.
  • Udzielenie administratorowi usługi platformy Azure dostępu do interfejsu API platformy Kubernetes nie jest zgodne z najlepszymi rozwiązaniami dotyczącymi najniższych uprawnień i może prowadzić do eskalacji uprawnień lub ryzyka wycieku poświadczeń. Na przykład może być konieczne zaimplementowanie uprawnień usługi między usługami o wysokim stopniu uprzywilejowania, i nie są one idealne w przeglądzie audytu.

Możesz użyć zaufanego dostępu, aby wyrazić jawną zgodę na dostęp tożsamości zarządzanej przypisanej przez system do dozwolonych zasobów w celu uzyskania dostępu do klastrów AKS, korzystając z zasobu platformy Azure o nazwie powiązanie roli. Zasoby platformy Azure uzyskują dostęp do klastrów usługi AKS przez bramę regionalną AKS, używając uwierzytelniania za pomocą tożsamości zarządzanej przypisanej przez system. Odpowiednie uprawnienia platformy Kubernetes są przypisywane za pośrednictwem zasobu platformy Azure nazywanego rolą. Za pomocą zaufanego dostępu można uzyskiwać dostęp do klastrów usługi AKS z różnymi konfiguracjami, w tym między innymi z klastrami prywatnymi, klastrami, które mają wyłączone konta lokalne, klastrami Firmy Microsoft Entra i autoryzowanymi klastrami zakresów adresów IP.

Wymagania wstępne

Nawiązywanie połączenia z klastrem

Skonfiguruj kubectl, aby przy użyciu polecenia az aks get-credentials nawiązać połączenie z klastrem.

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

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

Sprawdź połączenie z klastrem przy użyciu polecenia kubectl get.

kubectl get nodes

Wybierz wymagane role dostępu zaufanego

Wybrane role zależą od usług platformy Azure, do których chcesz uzyskać dostęp do klastra usługi AKS. Usługi platformy Azure ułatwiają tworzenie ról i powiązań ról, które tworzą połączenie z usługi platformy Azure do usługi AKS.

Aby znaleźć potrzebne role, zapoznaj się z dokumentacją usługi platformy Azure, którą chcesz połączyć z usługą AKS. Możesz również użyć interfejsu wiersza polecenia platformy Azure, aby wyświetlić listę ról dostępnych dla usługi platformy Azure przy użyciu az aks trustedaccess role list --location <location> polecenia .

Tworzenie powiązania roli zaufanego dostępu

Po potwierdzeniu, która rola ma być używana, użyj interfejsu wiersza polecenia platformy Azure, aby utworzyć powiązanie roli zaufanego dostępu w klastrze usługi AKS. Powiązanie roli kojarzy wybraną rolę z usługą platformy 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}

Wyniki:

{
  "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"
}

Uwaga

W klastrze usługi AKS można utworzyć maksymalnie 8 powiązań roli zaufanego dostępu.

Aktualizowanie istniejącego powiązania roli zaufanego dostępu

W przypadku istniejącego powiązania roli, które ma skojarzoną usługę źródłową, można zaktualizować powiązanie roli przy użyciu nowych ról za pomocą polecenia 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. To polecenie aktualizuje powiązanie roli do nowych ról, które wskażesz.

Uwaga

Menedżer dodatków aktualizuje klastry co pięć minut, więc zastosowanie nowego powiązania roli może potrwać do pięciu minut. Zanim nowe powiązanie roli zostanie zastosowane, istniejące powiązanie roli nadal działa.

Możesz użyć polecenia , az aks trusted access rolebinding list aby sprawdzić bieżące powiązanie roli.

Pokaż powiązanie roli w ramach Zaufanego Dostępu

Pokaż określone powiązanie roli zaufanego dostępu przy użyciu polecenia az aks trustedaccess rolebinding show --name $ROLE_BINDING_NAME --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME.

Wyświetlanie listy wszystkich powiązań roli zaufanego dostępu dla klastra

Wyświetl listę wszystkich powiązań ról zaufanego dostępu dla klastra az aks trustedaccess rolebinding list --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME przy użyciu polecenia .