Użyj kontroli dostępu opartej na rolach platformy Azure, aby zdefiniować dostęp do pliku konfiguracji platformy Kubernetes w usłudze Azure Kubernetes Service (AKS)
Za pomocą kubectl
narzędzia możesz korzystać z klastrów Kubernetes. Interfejs wiersza polecenia platformy Azure umożliwia łatwe uzyskiwanie poświadczeń dostępu i pliku konfiguracji kubeconfig w celu nawiązania połączenia z klastrami usługi AKS przy użyciu polecenia kubectl
. Możesz użyć kontroli dostępu opartej na rolach (RBAC) platformy Azure, aby ograniczyć, kto może uzyskać dostęp do pliku kubeconfig i uprawnień, które mają.
W tym artykule pokazano, jak przypisać role platformy Azure, które ograniczają, kto może uzyskać informacje o konfiguracji klastra usługi AKS.
Zanim rozpoczniesz
- W tym artykule założono, że masz istniejący klaster usługi AKS. Jeśli potrzebujesz klastra usługi AKS, utwórz go przy użyciu interfejsu wiersza polecenia platformy Azure, programu Azure PowerShell lub witryny Azure Portal.
- Ten artykuł wymaga również interfejsu wiersza polecenia platformy Azure w wersji 2.0.65 lub nowszej. Uruchom polecenie
az --version
, aby dowiedzieć się, jaka wersja jest używana. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.
Dostępne uprawnienia dla ról klastra
W przypadku interakcji z klastrem usługi AKS przy użyciu kubectl
narzędzia plik konfiguracji o nazwie kubeconfig definiuje informacje o połączeniu klastra. Ten plik konfiguracji jest zwykle przechowywany w pliku ~/.kube/config. W tym pliku kubeconfig można zdefiniować wiele klastrów. Możesz przełączać się między klastrami przy użyciu kubectl config use-context
polecenia .
Polecenie az aks get-credentials
umożliwia uzyskanie poświadczeń dostępu dla klastra usługi AKS i scalenie tych poświadczeń z plikiem kubeconfig . Za pomocą kontroli dostępu opartej na rolach platformy Azure możesz kontrolować dostęp do tych poświadczeń. Te role platformy Azure umożliwiają zdefiniowanie, kto może pobrać plik kubeconfig i jakie uprawnienia mają w klastrze.
Istnieją dwie role platformy Azure, które można zastosować do użytkownika lub grupy firmy Microsoft Entra:
Rola administratora klastra usługi Azure Kubernetes Service
- Umożliwia dostęp do wywołania interfejsu
Microsoft.ContainerService/managedClusters/listClusterAdminCredential/action
API. To wywołanie interfejsu API zawiera listę poświadczeń administratora klastra. - Pobiera plik kubeconfig dla roli clusterAdmin .
- Umożliwia dostęp do wywołania interfejsu
Rola użytkownika klastra usługi Azure Kubernetes Service
- Umożliwia dostęp do wywołania interfejsu
Microsoft.ContainerService/managedClusters/listClusterUserCredential/action
API. To wywołanie interfejsu API zawiera listę poświadczeń użytkownika klastra. - Pobiera narzędzie kubeconfig dla roli clusterUser .
- Umożliwia dostęp do wywołania interfejsu
Uwaga
W klastrach korzystających z identyfikatora Entra firmy Microsoft użytkownicy z rolą clusterUser mają pusty plik kubeconfig z monitem o zalogowanie. Po zalogowaniu użytkownicy mają dostęp na podstawie ustawień użytkownika lub grupy firmy Microsoft. Użytkownicy z rolą clusterAdmin mają dostęp administratora.
W klastrach, które nie używają identyfikatora Entra firmy Microsoft, rola clusterUser ma taki sam wpływ na rolę clusterAdmin .
Przypisywanie uprawnień roli do użytkownika lub grupy
Aby przypisać jedną z dostępnych ról, należy uzyskać identyfikator zasobu klastra usługi AKS i identyfikator konta użytkownika lub grupy Microsoft Entra, wykonując następujące kroki:
- Pobierz identyfikator zasobu klastra przy użyciu
az aks show
polecenia dla klastra o nazwie myAKSCluster w grupie zasobów myResourceGroup . Podaj własną nazwę klastra i grupy zasobów zgodnie z potrzebami. az account show
Użyj poleceń iaz ad user show
, aby uzyskać identyfikator użytkownika.- Przypisz rolę przy użyciu
az role assignment create
polecenia .
W poniższym przykładzie przypisano rolę administratora klastra usługi Azure Kubernetes Service do indywidualnego konta użytkownika:
# Get the resource ID of your AKS cluster
AKS_CLUSTER=$(az aks show --resource-group myResourceGroup --name myAKSCluster --query id -o tsv)
# Get the account credentials for the logged in user
ACCOUNT_UPN=$(az account show --query user.name -o tsv)
ACCOUNT_ID=$(az ad user show --id $ACCOUNT_UPN --query objectId -o tsv)
# Assign the 'Cluster Admin' role to the user
az role assignment create \
--assignee $ACCOUNT_ID \
--scope $AKS_CLUSTER \
--role "Azure Kubernetes Service Cluster Admin Role"
Jeśli chcesz przypisać uprawnienia do grupy Microsoft Entra, zaktualizuj --assignee
parametr pokazany w poprzednim przykładzie za pomocą identyfikatora obiektu dla grupy , a nie użytkownika.
Aby uzyskać identyfikator obiektu dla grupy, użyj az ad group show
polecenia . Następujące polecenie pobiera identyfikator obiektu dla grupy Microsoft Entra o nazwie appdev:
az ad group show --group appdev --query objectId -o tsv
Ważne
W niektórych przypadkach, takich jak użytkownicy-goście firmy Microsoft Entra, user.name na koncie różni się od userPrincipalName.
$ az account show --query user.name -o tsv
user@contoso.com
$ az ad user list --query "[?contains(otherMails,'user@contoso.com')].{UPN:userPrincipalName}" -o tsv
user_contoso.com#EXT#@contoso.onmicrosoft.com
W takim przypadku ustaw wartość ACCOUNT_UPN na userPrincipalName z użytkownika Microsoft Entra. Jeśli na przykład twoje konto user.name to user@contoso.com, ta akcja będzie wyglądać podobnie do następującego przykładu:
ACCOUNT_UPN=$(az ad user list --query "[?contains(otherMails,'user@contoso.com')].{UPN:userPrincipalName}" -o tsv)
Pobieranie i weryfikowanie informacji o konfiguracji
Po przypisaniu ról użyj az aks get-credentials
polecenia , aby pobrać definicję kubeconfig dla klastra usługi AKS. Poniższy przykład pobiera poświadczenia --admin, które działają poprawnie, jeśli użytkownik otrzymał rolę administratora klastra:
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster --admin
Następnie możesz użyć kubectl config view
polecenia , aby sprawdzić, czy kontekst klastra pokazuje, że zastosowano informacje o konfiguracji administratora.
$ kubectl config view
Dane wyjściowe powinny wyglądać podobnie do następujących przykładowych danych wyjściowych:
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://myaksclust-myresourcegroup-19da35-4839be06.hcp.eastus.azmk8s.io:443
name: myAKSCluster
contexts:
- context:
cluster: myAKSCluster
user: clusterAdmin_myResourceGroup_myAKSCluster
name: myAKSCluster-admin
current-context: myAKSCluster-admin
kind: Config
preferences: {}
users:
- name: clusterAdmin_myResourceGroup_myAKSCluster
user:
client-certificate-data: REDACTED
client-key-data: REDACTED
token: e9f2f819a4496538b02cefff94e61d35
Usuwanie uprawnień roli
Aby usunąć przypisania ról, użyj az role assignment delete
polecenia . Określ identyfikator konta i identyfikator zasobu klastra uzyskany w poprzednich krokach. Jeśli przypisano rolę do grupy, a nie użytkownika, określ odpowiedni identyfikator obiektu grupy, a nie identyfikator obiektu konta dla parametru --assignee
.
az role assignment delete --assignee $ACCOUNT_ID --scope $AKS_CLUSTER
Następne kroki
W celu zapewnienia zwiększonych zabezpieczeń dostępu do klastrów usługi AKS należy zintegrować uwierzytelnianie firmy Microsoft Entra.
Azure Kubernetes Service