Obsługa usług danych z obsługą usługi Azure Arc z najmniejszymi uprawnieniami
Najlepszym rozwiązaniem jest obsługa usług danych z obsługą usługi Arc z najmniejszymi uprawnieniami. Przyznaj tylko użytkownikom i kontom usług określone uprawnienia wymagane do wykonywania wymaganych zadań. Zarówno platforma Azure, jak i platforma Kubernetes udostępniają model kontroli dostępu opartej na rolach, który może służyć do udzielania tych konkretnych uprawnień. W tym artykule opisano niektóre typowe scenariusze, w których należy zastosować zabezpieczenia najniższych uprawnień.
Uwaga
W tym artykule zostanie użyta arc
nazwa przestrzeni nazw. Jeśli zdecydujesz się użyć innej nazwy, użyj tej samej nazwy w całym.
W tym artykule narzędzie interfejsu kubectl
wiersza polecenia jest używane jako przykład. Można jednak użyć dowolnego narzędzia lub systemu korzystającego z interfejsu API Kubernetes.
Wdrażanie kontrolera danych usługi Azure Arc
Wdrożenie kontrolera danych usługi Azure Arc wymaga pewnych uprawnień, które mogą być uznawane za wysokie uprawnienia, takie jak tworzenie przestrzeni nazw kubernetes lub tworzenie roli klastra. Poniższe kroki można wykonać, aby oddzielić wdrożenie kontrolera danych na wiele kroków, z których każdy może być wykonywany przez użytkownika lub konto usługi, które ma wymagane uprawnienia. To rozdzielenie obowiązków gwarantuje, że każdy użytkownik lub konto usługi w procesie ma tylko wymagane uprawnienia i nic więcej.
Wdrażanie przestrzeni nazw, w której zostanie utworzony kontroler danych
W tym kroku zostanie utworzona nowa dedykowana przestrzeń nazw kubernetes, w której zostanie wdrożony kontroler danych usługi Arc. Najpierw należy wykonać ten krok, ponieważ poniższe kroki będą używać tej nowej przestrzeni nazw jako zakresu uprawnień, które są przyznawane.
Uprawnienia wymagane do wykonania tej akcji:
- Namespace
- Utworzenie
- Edytuj (jeśli jest to wymagane dla klastrów OpenShift)
Uruchom polecenie podobne do poniższego, aby utworzyć nową dedykowaną przestrzeń nazw, w której zostanie utworzony kontroler danych.
kubectl create namespace arc
Jeśli używasz biblioteki OpenShift, musisz edytować openshift.io/sa.scc.supplemental-groups
adnotacje i openshift.io/sa.scc.uid-range
w przestrzeni nazw przy użyciu polecenia kubectl edit namespace <name of namespace>
. Zmień te istniejące adnotacje, aby były zgodne z tymi określonymi identyfikatorami UID i identyfikatorami fsGroup/zakresami.
openshift.io/sa.scc.supplemental-groups: 1000700001/10000
openshift.io/sa.scc.uid-range: 1000700001/10000
Przypisywanie uprawnień do wdrażającego konta usługi i użytkowników/grup
Ten krok spowoduje utworzenie konta usługi i przypisanie ról i ról klastra do konta usługi, aby można było użyć konta usługi w zadaniu w celu wdrożenia kontrolera danych usługi Arc z najmniejszymi wymaganymi uprawnieniami.
Uprawnienia wymagane do wykonania tej akcji:
- Konto usługi
- Utworzenie
- Rola
- Utworzenie
- Powiązanie roli
- Utworzenie
- Rola klastra
- Utworzenie
- Powiązanie roli klastra
- Utworzenie
- Wszystkie uprawnienia przyznane do konta usługi (zobacz arcdata-deployer.yaml poniżej, aby uzyskać szczegółowe informacje)
Zapisz kopię pliku arcdata-deployer.yaml i zastąp symbol zastępczy {{NAMESPACE}}
w pliku przestrzenią nazw utworzoną w poprzednim kroku, na przykład: arc
. Uruchom następujące polecenie, aby utworzyć konto usługi wdrażania przy użyciu edytowanego pliku.
kubectl apply --namespace arc -f arcdata-deployer.yaml
Udzielanie użytkownikom uprawnień do tworzenia zadania programu inicjjącego i kontrolera danych
Uprawnienia wymagane do wykonania tej akcji:
- Rola
- Utworzenie
- Powiązanie roli
- Utworzenie
Zapisz kopię pliku arcdata-installer.yaml i zastąp symbol zastępczy {{INSTALLER_USERNAME}}
w pliku nazwą użytkownika, aby udzielić uprawnień, na przykład: john@contoso.com
. W razie potrzeby dodaj dodatkowe tematy powiązania roli, takie jak inni użytkownicy lub grupy. Uruchom następujące polecenie, aby utworzyć uprawnienia instalatora z edytowanym plikiem.
kubectl apply --namespace arc -f arcdata-installer.yaml
Wdrażanie zadania programu inicjjącego
Uprawnienia wymagane do wykonania tej akcji:
- Użytkownik przypisany do roli arcdata-installer-role w poprzednim kroku
Uruchom następujące polecenie, aby utworzyć zadanie programu inicjujące, które uruchomi kroki przygotowawcze w celu wdrożenia kontrolera danych.
kubectl apply --namespace arc -f https://raw.githubusercontent.com/microsoft/azure_arc/main/arc_data_services/deploy/yaml/bootstrapper.yaml
Tworzenie kontrolera danych usługi Arc
Teraz możesz przystąpić do tworzenia samego kontrolera danych.
Najpierw utwórz kopię pliku szablonu lokalnie na komputerze, aby można było zmodyfikować niektóre ustawienia.
Tworzenie metryk i dzienników pulpitów nawigacyjnych nazw użytkowników i haseł
W górnej części pliku można określić nazwę użytkownika i hasło używane do uwierzytelniania w metrykach i dziennikach pulpitów nawigacyjnych jako administrator. Wybierz bezpieczne hasło i udostępnij je tylko tym, którzy muszą mieć te uprawnienia.
Wpis tajny kubernetes jest przechowywany jako ciąg zakodowany w formacie base64 — jeden dla nazwy użytkownika i jeden dla hasła.
echo -n '<your string to encode here>' | base64
# echo -n 'example' | base64
Opcjonalnie możesz utworzyć certyfikaty SSL/TLS dla pulpitów nawigacyjnych dzienników i metryk. Postępuj zgodnie z instrukcjami w temacie Określanie certyfikatów SSL/TLS podczas wdrażania narzędzi natywnych platformy Kubernetes.
Edytowanie konfiguracji kontrolera danych
Edytuj konfigurację kontrolera danych zgodnie z potrzebami:
WYMAGANE
location
: zmień tę wartość na lokalizację platformy Azure, w której będą przechowywane metadane dotyczące kontrolera danych. Przejrzyj listę dostępnych regionów.logsui-certificate-secret
: nazwa wpisu tajnego utworzonego w klastrze Kubernetes dla certyfikatu interfejsu użytkownika dzienników.metricsui-certificate-secret
: nazwa wpisu tajnego utworzonego w klastrze Kubernetes dla certyfikatu interfejsu użytkownika metryk.
Zalecane: przejrzyj i ewentualnie zmień ustawienia domyślne
Przejrzyj te wartości i zaktualizuj wdrożenie:
storage..className
: klasa magazynu do użycia dla danych kontrolera danych i plików dziennika. Jeśli nie masz pewności co do dostępnych klas magazynu w klastrze Kubernetes, możesz uruchomić następujące polecenie:kubectl get storageclass
. Wartość domyślna jest domyślna, która zakłada, że istnieje klasa magazynu, która istnieje i ma nazwę domyślną, a nie, że istnieje klasa magazynu, która jest domyślna. Uwaga: istnieją dwa ustawienia className, które mają być ustawione na żądaną klasę magazynu — jedną dla danych i jedną dla dzienników.serviceType
: zmień typ usługi na NodePort, jeśli nie używasz modułu LoadBalancer.Zabezpieczenia dla usługi Azure Red Hat OpenShift lub Red Hat OpenShift Container Platform zastąp ustawienia następującymi wartościami w pliku yaml kontrolera danych.
security: allowDumps: false allowNodeMetricsCollection: false allowPodMetricsCollection: false
Opcjonalnie
Następujące ustawienia są opcjonalne.
name
: Domyślna nazwa kontrolera danych to łuk, ale możesz go zmienić, jeśli chcesz.displayName
: ustaw tę samą wartość co atrybut name w górnej części pliku.registry
: Rejestr kontenerów firmy Microsoft jest domyślny. Jeśli ściągasz obrazy z usługi Microsoft Container Registry i wypychasz je do prywatnego rejestru kontenerów, wprowadź tutaj adres IP lub nazwę DNS rejestru.dockerRegistry
: Wpis tajny używany do ściągania obrazów z prywatnego rejestru kontenerów, jeśli jest to wymagane.repository
: domyślne repozytorium w usłudze Microsoft Container Registry to arcdata. Jeśli używasz prywatnego rejestru kontenerów, wprowadź ścieżkę do folderu/repozytorium zawierającego obrazy kontenerów usług danych z obsługą usługi Azure Arc.imageTag
: bieżący tag najnowszej wersji jest domyślny w szablonie, ale możesz go zmienić, jeśli chcesz użyć starszej wersji.logsui-certificate-secret
: nazwa wpisu tajnego utworzonego w klastrze Kubernetes dla certyfikatu interfejsu użytkownika dzienników.metricsui-certificate-secret
: nazwa wpisu tajnego utworzonego w klastrze Kubernetes dla certyfikatu interfejsu użytkownika metryk.
W poniższym przykładzie pokazano ukończony plik yaml kontrolera danych.
apiVersion: v1
data:
password: <your base64 encoded password>
username: <your base64 encoded username>
kind: Secret
metadata:
name: metricsui-admin-secret
type: Opaque
---
apiVersion: v1
data:
password: <your base64 encoded password>
username: <your base64 encoded username>
kind: Secret
metadata:
name: logsui-admin-secret
type: Opaque
---
apiVersion: arcdata.microsoft.com/v5
kind: DataController
metadata:
name: arc-dc
spec:
credentials:
dockerRegistry: arc-private-registry # Create a registry secret named 'arc-private-registry' if you are going to pull from a private registry instead of MCR.
serviceAccount: sa-arc-controller
docker:
imagePullPolicy: Always
imageTag: v1.34.0_2024-10-08
registry: mcr.microsoft.com
repository: arcdata
infrastructure: other # Must be a value in the array [alibaba, aws, azure, gcp, onpremises, other]
security:
allowDumps: true # Set this to false if deploying on OpenShift
allowNodeMetricsCollection: true # Set this to false if deploying on OpenShift
allowPodMetricsCollection: true # Set this to false if deploying on OpenShift
services:
- name: controller
port: 30080
serviceType: LoadBalancer # Modify serviceType based on your Kubernetes environment
settings:
ElasticSearch:
vm.max_map_count: "-1"
azure:
connectionMode: indirect # Only indirect is supported for Kubernetes-native deployment for now.
location: eastus # Choose a different Azure location if you want
resourceGroup: <your resource group>
subscription: <your subscription GUID>
controller:
displayName: arc-dc
enableBilling: true
logs.rotation.days: "7"
logs.rotation.size: "5000"
storage:
data:
accessMode: ReadWriteOnce
className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
size: 15Gi
logs:
accessMode: ReadWriteOnce
className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
size: 10Gi
Zapisz edytowany plik na komputerze lokalnym i uruchom następujące polecenie, aby utworzyć kontroler danych:
kubectl create --namespace arc -f <path to your data controller file>
#Example
kubectl create --namespace arc -f data-controller.yaml
Monitorowanie stanu tworzenia
Utworzenie kontrolera potrwa kilka minut. Postęp można monitorować w innym oknie terminalu za pomocą następujących poleceń:
kubectl get datacontroller --namespace arc
kubectl get pods --namespace arc
Możesz również sprawdzić stan tworzenia lub dzienniki dowolnego określonego zasobnika, uruchamiając polecenie podobne do poniższego. Jest to szczególnie przydatne w przypadku rozwiązywania wszelkich problemów.
kubectl describe pod/<pod name> --namespace arc
kubectl logs <pod name> --namespace arc
#Example:
#kubectl describe pod/control-2g7bl --namespace arc
#kubectl logs control-2g7b1 --namespace arc
Powiązana zawartość
Istnieje kilka dodatkowych opcji tworzenia kontrolera danych usługi Azure Arc:
Po prostu chcesz wypróbować rzeczy? Szybko rozpocznij pracę z usługą Azure Arc Jumpstart w usługach AKS, Amazon EKS lub GKE lub na maszynie wirtualnej platformy Azure.
- Tworzenie kontrolera danych w trybie bezpośredniej łączności za pomocą witryny Azure Portal
- Tworzenie kontrolera danych w trybie łączności pośredniej za pomocą interfejsu wiersza polecenia
- Tworzenie kontrolera danych w trybie łączności pośredniej za pomocą narzędzia Azure Data Studio
- Tworzenie kontrolera danych w trybie łączności pośredniej z witryny Azure Portal za pośrednictwem notesu Jupyter w narzędziu Azure Data Studio
- Tworzenie kontrolera danych w trybie łączności pośredniej za pomocą narzędzi kubernetes, takich jak
kubectl
luboc