Udostępnij za pośrednictwem


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 firmy Microsoft Entra , ta funkcja może używać przypisanej przez system tożsamości zarządzanej do uwierzytelniania za pomocą usług zarządzanych i aplikacji, które mają być używane z klastrami usługi AKS.

Uwaga

Interfejs API zaufanego dostępu jest ogólnie dostępny. Udostępniamy ogólną obsługę interfejsu wiersza polecenia platformy Azure, ale jest ona nadal dostępna 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 z wysokimi uprawnieniami uprzywilejowanych i nie są one idealne w przeglądzie inspekcji.

Za pomocą zaufanego dostępu możesz wyrazić jawną zgodę na tożsamość zarządzaną przypisaną przez system dozwolonych zasobów w celu uzyskania dostępu do klastrów usługi AKS przy użyciu zasobu platformy Azure nazywanego powiązaniem roli. Zasoby platformy Azure uzyskują dostęp do klastrów usługi AKS za pośrednictwem bramy regionalnej usługi AKS za pośrednictwem uwierzytelniania 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 nawiązać połączenie z klastrem az aks get-credentials przy użyciu polecenia .

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 kubectl get przy użyciu polecenia .

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

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

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

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 zaufanego dostępu

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

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 .