Konfigurowanie uprawnień i kontroli dostępu opartej na rolach (RBAC) na pulpicie usługi AKS

Zrzut ekranu diagramu przedstawiającego przypisania ról RBAC w AKS dla operatora klastra i dewelopera

W zależności od roli operatora klastra lub dewelopera możesz udostępnić środowisko (projekt) w usłudze AKS dla deweloperów w celu wdrażania, migrowania lub zarządzania aplikacjami albo umożliwiania im samodzielnego wdrażania aplikacji i zarządzania nimi w dedykowanym klastrze usługi AKS. Alternatywnie możesz udzielić większej liczby deweloperów dostępu do zarządzania, obserwowania i rozwiązywania problemów z aplikacjami.

Domyślnie, gdy tworzysz Projekt w AKS, możesz udostępnić go innym osobom w organizacji, a system automatycznie ustawia za ciebie uprawnienia. Jednak może być konieczne zachowanie uprawnień w czasie lub zautomatyzowanie ich lub zdefiniowanie modelu operacyjnego przez ustawienie odpowiednich uprawnień.

W tym artykule opisano sposób zarządzania uprawnieniami RBAC w celu umożliwienia członkom zespołu pracy z pulpitem usługi AKS.

Uwaga / Notatka

Usługa AKS desktop nie udostępnia obecnie opcji interfejsu użytkownika do zmiany uprawnień projektu po jego utworzeniu. Aby zaktualizować uprawnienia lub udzielić dostępu dodatkowym użytkownikom po utworzeniu projektu, użyj witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure zgodnie z opisem w tym artykule.

Uwaga / Notatka

Podczas tworzenia projektów w AKS Desktop, zarządzane przestrzenie nazw usługi AKS są tworzone w tej samej grupie zasobów co klaster.

Wymagania wstępne

Obowiązki operatora klastra

Jako operator klastra odpowiadasz za aprowizowanie i konfigurowanie podstawowej infrastruktury, która umożliwia zespołom deweloperów tworzenie i wdrażanie aplikacji. Twoje obowiązki obejmują:

  • Tworzenie wymaganej infrastruktury platformy Azure (grupa zasobów, klaster AKS, ACR).
  • Konfigurowanie integracji usługi ACR z klastrem usługi AKS.
  • Przypisywanie uprawnień użytkownikom do tworzenia projektów.
  • Opcjonalnie delegowanie zarządzania uprawnieniami do twórców projektu.

Tworzenie zasobów infrastruktury

Aby utworzyć zasoby infrastruktury, musisz mieć uprawnienia do tworzenia zasobów na platformie Azure. Jeśli nie masz przypisanej roli RBAC Właściciela, musisz mieć rolę Współtwórcy, aby utworzyć zasoby, oraz rolę Administratora dostępu do użytkowników, aby przypisać uprawnienia innym użytkownikom. Przypisz uprawnienia do użytkowników, aby mogli tworzyć zasoby w grupie zasobów, wykonując następujące kroki:

  1. Ustaw zmienne środowiskowe dla grupy zasobów i nazwy klastra. Pamiętaj, aby zastąpić symbole zastępcze rzeczywistymi nazwami grup zasobów i klastrów.

    export RESOURCE_GROUP=<infra-resource-group>
    export CLUSTER_NAME=<cluster-name>
    export SUBSCRIPTION_ID=$(az account show --query id --output tsv)
    export ACR_NAME=<acr-name>
    
  2. Przypisz niezbędną rolę, aby tworzyć zasoby w grupie zasobów, używając polecenia az role assignment create. Pamiętaj, aby zastąpić <user-id> element odpowiednim identyfikatorem użytkownika lub jednostki usługi.

    az role assignment create --role "Contributor" \
        --assignee <user-id> \
        --scope /subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP
    

Integrowanie usługi ACR z klastrem usługi AKS

Dołącz rejestr kontenerów platformy Azure do klastra usługi AKS za pomocą polecenia az aks update.

az aks update \
    --resource-group $RESOURCE_GROUP \
    --name $CLUSTER_NAME \
    --attach-acr $ACR_NAME

Wybieranie modelu tworzenia projektu

Jako operator klastra masz dwie opcje pracy deweloperów z projektami na pulpicie usługi AKS:

  • Model samoobsługi: deweloperzy tworzą własne projekty i zarządzają nimi. Takie podejście zapewnia deweloperom pełną autonomię, ale wymaga przyznania im roli Współautor przestrzeni nazw usługi Azure Kubernetes Service . Podczas tworzenia własnych projektów deweloperzy automatycznie otrzymują rolę Właściciel w zarządzanej przestrzeni nazw i mogą natychmiast rozpocząć wdrażanie aplikacji.
  • Model zarządzany: tworzysz projekty dla deweloperów i udzielasz im dostępu. Obecnie można to skonfigurować podczas tworzenia projektu. To podejście zapewnia większą kontrolę nad tworzeniem projektu, ale jeśli po jego utworzeniu musisz przypisać więcej członków zespołu, musisz nadać im niezbędne uprawnienia przy użyciu portalu Azure lub Azure CLI, zgodnie z opisem w następnych sekcjach.

Model samoobsługi: umożliwia deweloperom tworzenie własnych projektów

Aby umożliwić deweloperom tworzenie własnych projektów, przypisz im rolę Kontrybutor przestrzeni nazw usługi Azure Kubernetes Service w klastrze AKS. Projekty AKS na komputery stacjonarne tworzą zarządzane przestrzenie nazw przez AKS w tle, a ta rola przyznaje niezbędne uprawnienia.

Przypisz programistom rolę Współautor przestrzeni nazw usługi Azure Kubernetes Service za pomocą polecenia az role assignment create. Pamiętaj, aby zastąpić symbol zastępczy odpowiednim identyfikatorem użytkownika lub jednostki usługi.

az role assignment create \
    --role "Azure Kubernetes Service Namespace Contributor" \
    --assignee <developer-user-id> \
    --scope /subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.ContainerService/managedClusters/$CLUSTER_NAME

Model zarządzany: tworzenie projektów dla deweloperów i przypisywanie dostępu

Jeśli wolisz tworzyć projekty w imieniu deweloperów, musisz przypisać trzy podstawowe role, aby umożliwić im dostęp do klastra i pracować w przypisanej przestrzeni nazw:

  • Rola użytkownika klastra usługi Azure Kubernetes Service: umożliwia deweloperom pobieranie poświadczeń klastra az aks get-credentials przy użyciu polecenia .
  • Użytkownik przestrzeni nazw usługi Azure Kubernetes Service: udziela dostępu do zarządzanej przestrzeni nazw.
  • Jedna z ról RBAC platformy Kubernetes (Czytelnik, Pisarz lub Administrator): określa, jakie działania użytkownicy mogą wykonywać w przestrzeni nazw.

Wszystkie trzy role są wymagane, aby deweloperzy mogli pomyślnie uzyskiwać dostęp do swoich projektów i pracować z ich projektami na pulpicie usługi AKS. Bez roli użytkownika klastra usługi Azure Kubernetes Service deweloperzy nie mogą pobrać pliku kubeconfig potrzebnego do nawiązania połączenia z klastrem.

Przypisywanie dostępu do klastra

Przypisz rolę użytkownika klastra usługi Azure Kubernetes Service, aby włączyć pobieranie kubeconfig za pomocą polecenia az role assignment create. Pamiętaj, aby zastąpić symbol zastępczy odpowiednim identyfikatorem użytkownika lub jednostki usługi.

az role assignment create \
    --role "Azure Kubernetes Service Cluster User Role" \
    --assignee <developer-user-id> \
    --scope /subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.ContainerService/managedClusters/$CLUSTER_NAME

Przypisywanie dostępu do przestrzeni nazw

Przypisz rolę użytkownika przestrzeni nazw usługi Azure Kubernetes Service dla określonego projektu/przestrzeni nazw przy użyciu az role assignment create polecenia . Pamiętaj, aby zastąpić symbol zastępczy odpowiednim identyfikatorem użytkownika lub jednostki usługi.

export NAMESPACE_NAME=<namespace-or-project-name>

az role assignment create \
    --role "Azure Kubernetes Service Namespace User" \
    --assignee <developer-user-id> \
    --scope /subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.ContainerService/managedClusters/$CLUSTER_NAME/namespaces/$NAMESPACE_NAME

Przypisywanie roli RBAC platformy Kubernetes

Przypisz odpowiednią rolę RBAC platformy Kubernetes na podstawie tego, co deweloper musi zrobić:

  • Czytelnik kontroli dostępu opartej na rolach usługi Azure Kubernetes Service na potrzeby dostępu tylko do odczytu.
  • Writer RBAC usługi Azure Kubernetes Service na potrzeby wdrażania aplikacji.
  • Administrator RBAC usługi Azure Kubernetes Service w celu uzyskania pełnej kontroli administracyjnej.
  1. Pobierz identyfikator klastra usługi AKS za pomocą polecenia az aks show.

    AKS_ID=$(az aks show \
        --resource-group $RESOURCE_GROUP \
        --name $CLUSTER_NAME \
        --query id \
        --output tsv)
    
  2. Przypisz odpowiednią rolę RBAC Kubernetes przy użyciu polecenia az role assignment create. Pamiętaj, aby zastąpić symbol zastępczy odpowiednim identyfikatorem użytkownika lub jednostki usługi. W poniższym przykładzie przypisano rolę Azure Kubernetes Service RBAC Writer:

    az role assignment create \
        --role "Azure Kubernetes Service RBAC Writer" \
        --assignee <developer-user-id> \
        --scope $AKS_ID/namespaces/$NAMESPACE_NAME
    

Zezwalaj twórcom programu Project na przypisywanie uprawnień dostępu (opcjonalnie)

Jeśli chcesz, aby twórcy projektu mogli przypisywać uprawnienia dostępu innym użytkownikom, przyznaj im rolę Administrator dostępu użytkowników . To uprawnienie umożliwia użytkownikowi ustawianie uprawnień do dowolnych zasobów w grupie zasobów infrastruktury.

Przypisz rolę administratora dostępu użytkowników przy użyciu az role assignment create polecenia . Pamiętaj, aby zastąpić symbol zastępczy odpowiednim identyfikatorem użytkownika lub jednostki usługi.

az role assignment create \
    --role "User Access Administrator" \
    --assignee <user-id> \
    --scope /subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP

Obowiązki deweloperów

Jako deweloper pracujesz w istniejącym środowisku pulpitu usługi AKS, aby wdrażać aplikacje, zarządzać projektami i monitorować obciążenia. Operator klastra udziela niezbędnych uprawnień do wykonywania tych zadań. Twoje obowiązki obejmują:

  • Wdrażanie aplikacji w projektach.
  • Wyświetlanie wdrożonych aplikacji i zarządzanie nimi.
  • Monitorowanie metryk i dzienników aplikacji.
  • Modyfikowanie dostępu do projektu (w razie potrzeby).

Wymagane role użytkowników dla deweloperów

Aby pracować z AKS Desktop jako deweloper, operator klastra musi przypisać ci trzy niezbędne role:

  • Rola użytkownika klastra usługi Azure Kubernetes Service: umożliwia pobieranie poświadczeń klastra przy użyciu az aks get-credentials polecenia , które jest wymagane do nawiązania połączenia z klastrem z komputera lokalnego lub za pośrednictwem pulpitu usługi AKS.

  • Użytkownik przestrzeni nazw usługi Azure Kubernetes Service: udziela dostępu do przypisanej zarządzanej przestrzeni nazw/projektu.

  • Jedna z ról RBAC Kubernetes (Odczyt, Zapis lub Admin): określa, jakie akcje można wykonać w przestrzeni nazw.

    • Czytelnik kontroli dostępu opartej na rolach usługi Azure Kubernetes Service na potrzeby dostępu tylko do odczytu.
    • Writer RBAC usługi Azure Kubernetes Service na potrzeby wdrażania aplikacji.
    • Administrator RBAC usługi Azure Kubernetes Service w celu uzyskania pełnej kontroli administracyjnej.

Przypisywanie uprawnień

Uprawnienia są przypisywane na podstawie sposobu tworzenia projektów na pulpicie usługi AKS:

  • Twórca projektu: automatycznie otrzymuje rolę właściciela w zarządzanej przestrzeni nazw i wszystkie niezbędne uprawnienia do wdrażania aplikacji.

  • Inni użytkownicy: należy udzielić dostępu operatorowi klastra lub twórcy projektu. Otrzymują:

    • Rola użytkownika klastra usługi Azure Kubernetes Service w klastrze.
    • Rola użytkownika przestrzeni nazw usługi Azure Kubernetes Service w przestrzeni nazw.
    • Jedna z ról RBAC platformy Kubernetes (Czytelnik, Pisarz lub Administrator).

Aby wdrożyć aplikacje, potrzebujesz roli Autora lub Administratora. Aby uzyskać więcej informacji, zobacz Wbudowane role przestrzeni nazw zarządzanych.

Wyświetlanie metryk aplikacji

Uwaga / Notatka

Wypełnienie metryk po wdrożeniu aplikacji może potrwać do 10 minut.

Na ekranie głównym projektu można wyświetlić metryki dla aplikacji, takie jak użycie procesora CPU, pamięci i sieci. Te metryki pochodzą z zarządzanego punktu końcowego Prometheus obsługiwanego przez obszar roboczy usługi Azure Monitor.

Aby wyświetlić metryki, potrzebujesz roli Czytelnik danych monitorowania w obszarze roboczym usługi Azure Monitor. Ta rola udziela dostępu do wszystkich metryk klastra, a nie tylko określonych projektów.

Operator klastra może przypisać to uprawnienie, wykonując następujące czynności:

  1. Zidentyfikuj obszar roboczy usługi Azure Monitor używany przez klaster przy użyciu az alerts-management prometheus-rule-group list polecenia .

    export WORKSPACE_ACC_FOR_PROM_RULES=$(az alerts-management prometheus-rule-group list \
        --resource-group "$RESOURCE_GROUP" \
        --query "[?clusterName=='$CLUSTER_NAME'] | [0].scopes[0]" \
        --output tsv)
    
  2. Przypisz rolę Czytelnik danych monitorowania przy użyciu az role assignment create polecenia . Pamiętaj, aby zastąpić symbol zastępczy odpowiednim identyfikatorem użytkownika lub jednostki usługi.

    az role assignment create \
        --role "Monitoring Data Reader" \
        --assignee <user-id> \
        --scope $WORKSPACE_ACC_FOR_PROM_RULES
    

Modyfikowanie uprawnień dostępu do projektu

Obecnie AKS desktop nie udostępnia opcji UI do modyfikowania uprawnień projektu po jego utworzeniu. Jeśli musisz zaktualizować swoje uprawnienia lub udzielić dostępu innym osobom, skontaktuj się z operatorem klastra, aby zaktualizować uprawnienia przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure. W poniższych krokach opisano sposób przypisywania niezbędnych ról przy użyciu interfejsu wiersza polecenia platformy Azure:

Przypisywanie dostępu do klastra

Przypisz rolę użytkownika klastra usługi Azure Kubernetes Service, aby włączyć pobieranie kubeconfig za pomocą polecenia az role assignment create. Pamiętaj, aby zastąpić symbol zastępczy odpowiednim identyfikatorem użytkownika lub jednostki usługi.

az role assignment create \
    --role "Azure Kubernetes Service Cluster User Role" \
    --assignee <developer-user-id> \
    --scope /subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.ContainerService/managedClusters/$CLUSTER_NAME

Przypisywanie dostępu do przestrzeni nazw

Przypisz rolę użytkownika przestrzeni nazw usługi Azure Kubernetes Service dla określonego projektu/przestrzeni nazw przy użyciu az role assignment create polecenia . Pamiętaj, aby zastąpić symbol zastępczy odpowiednim identyfikatorem użytkownika lub jednostki usługi.

export NAMESPACE_NAME=<namespace-or-project-name>

az role assignment create \
    --role "Azure Kubernetes Service Namespace User" \
    --assignee <developer-user-id> \
    --scope /subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.ContainerService/managedClusters/$CLUSTER_NAME/namespaces/$NAMESPACE_NAME

Przypisywanie roli RBAC platformy Kubernetes

Przypisz odpowiednią rolę RBAC platformy Kubernetes na podstawie tego, co deweloper musi zrobić:

  • Czytelnik kontroli dostępu opartej na rolach usługi Azure Kubernetes Service na potrzeby dostępu tylko do odczytu.
  • Writer RBAC usługi Azure Kubernetes Service na potrzeby wdrażania aplikacji.
  • Administrator RBAC usługi Azure Kubernetes Service w celu uzyskania pełnej kontroli administracyjnej.
  1. Pobierz identyfikator klastra usługi AKS za pomocą polecenia az aks show.

    AKS_ID=$(az aks show \
        --resource-group $RESOURCE_GROUP \
        --name $CLUSTER_NAME \
        --query id \
        --output tsv)
    
  2. Przypisz odpowiednią rolę RBAC Kubernetes przy użyciu polecenia az role assignment create. Pamiętaj, aby zastąpić symbol zastępczy odpowiednim identyfikatorem użytkownika lub jednostki usługi. W poniższym przykładzie przypisano rolę Azure Kubernetes Service RBAC Writer:

    az role assignment create \
        --role "Azure Kubernetes Service RBAC Writer" \
        --assignee <developer-user-id> \
        --scope $AKS_ID/namespaces/$NAMESPACE_NAME
    

Udzielanie uprawnień do wyświetlania metryk (opcjonalnie)

Aby udzielić uprawnień do wyświetlania metryk, wykonaj kroki opisane w sekcji Wyświetlanie metryk aplikacji .