Gegevensservices met minimale bevoegdheden van Azure Arc gebruiken
Het uitvoeren van gegevensservices met minimale bevoegdheden met Arc is een aanbevolen procedure voor beveiliging. Geef gebruikers en serviceaccounts alleen de specifieke machtigingen die nodig zijn om de vereiste taken uit te voeren. Zowel Azure als Kubernetes bieden een op rollen gebaseerd toegangsbeheermodel dat kan worden gebruikt om deze specifieke machtigingen te verlenen. In dit artikel worden bepaalde veelvoorkomende scenario's beschreven waarin de beveiliging van minimale bevoegdheden moet worden toegepast.
Notitie
In dit artikel wordt een naamruimtenaam gebruikt.arc
Als u ervoor kiest om een andere naam te gebruiken, gebruikt u overal dezelfde naam.
In dit artikel wordt het kubectl
CLI-hulpprogramma gebruikt als voorbeeld. Elk hulpprogramma of systeem dat gebruikmaakt van de Kubernetes-API kan echter worden gebruikt.
De Azure Arc-gegevenscontroller implementeren
Voor het implementeren van de Azure Arc-gegevenscontroller zijn enkele machtigingen vereist die als hoge bevoegdheden kunnen worden beschouwd, zoals het maken van een Kubernetes-naamruimte of het maken van een clusterrol. De volgende stappen kunnen worden gevolgd om de implementatie van de gegevenscontroller te scheiden in meerdere stappen, die elk kunnen worden uitgevoerd door een gebruiker of een serviceaccount met de vereiste machtigingen. Deze scheiding van taken zorgt ervoor dat elk gebruikers- of serviceaccount in het proces alleen de vereiste machtigingen heeft en niets meer.
Een naamruimte implementeren waarin de gegevenscontroller wordt gemaakt
Met deze stap maakt u een nieuwe, toegewezen Kubernetes-naamruimte waarin de Arc-gegevenscontroller wordt geïmplementeerd. Het is essentieel om deze stap eerst uit te voeren, omdat in de volgende stappen deze nieuwe naamruimte wordt gebruikt als een bereik voor de machtigingen die worden verleend.
Vereiste machtigingen om deze actie uit te voeren:
- Namespace
- Maken
- Bewerken (indien nodig voor OpenShift-clusters)
Voer een opdracht uit die vergelijkbaar is met de volgende om een nieuwe, toegewezen naamruimte te maken waarin de gegevenscontroller wordt gemaakt.
kubectl create namespace arc
Als u OpenShift gebruikt, moet u de openshift.io/sa.scc.supplemental-groups
en openshift.io/sa.scc.uid-range
aantekeningen in de naamruimte bewerken met behulp van kubectl edit namespace <name of namespace>
. Wijzig deze bestaande aantekeningen zodat deze overeenkomen met deze specifieke UID- en fsGroup-id's/bereiken.
openshift.io/sa.scc.supplemental-groups: 1000700001/10000
openshift.io/sa.scc.uid-range: 1000700001/10000
Machtigingen toewijzen aan het implementerende serviceaccount en gebruikers/groepen
Met deze stap maakt u een serviceaccount en wijst u rollen en clusterrollen toe aan het serviceaccount, zodat het serviceaccount in een taak kan worden gebruikt om de Arc-gegevenscontroller te implementeren met de minste bevoegdheden die vereist zijn.
Vereiste machtigingen om deze actie uit te voeren:
- Serviceaccount
- Maken
- Rol
- Maken
- Rolbinding
- Maken
- Clusterrol
- Maken
- Clusterrolbinding
- Maken
- Alle machtigingen die worden verleend aan het serviceaccount (zie de onderstaande arcdata-deployer.yaml voor meer informatie)
Sla een kopie van arcdata-deployer.yaml op en vervang de tijdelijke aanduiding {{NAMESPACE}}
in het bestand door de naamruimte die u in de vorige stap hebt gemaakt, bijvoorbeeld: arc
. Voer de volgende opdracht uit om het serviceaccount voor de deployer te maken met het bewerkte bestand.
kubectl apply --namespace arc -f arcdata-deployer.yaml
Machtigingen verlenen aan gebruikers om de bootstrapper-taak en gegevenscontroller te maken
Vereiste machtigingen om deze actie uit te voeren:
- Rol
- Maken
- Rolbinding
- Maken
Sla een kopie van arcdata-installer.yaml op en vervang de tijdelijke aanduiding {{INSTALLER_USERNAME}}
in het bestand door de naam van de gebruiker om de machtigingen te verlenen, bijvoorbeeld: john@contoso.com
. Voeg indien nodig extra bindingsonderwerp voor rollen toe, zoals andere gebruikers of groepen. Voer de volgende opdracht uit om de installatiemachtigingen te maken met het bewerkte bestand.
kubectl apply --namespace arc -f arcdata-installer.yaml
De bootstrapper-taak implementeren
Vereiste machtigingen om deze actie uit te voeren:
- Gebruiker die is toegewezen aan de rol arcdata-installer in de vorige stap
Voer de volgende opdracht uit om de bootstrapper-taak te maken waarmee voorbereidende stappen worden uitgevoerd om de gegevenscontroller te implementeren.
kubectl apply --namespace arc -f https://raw.githubusercontent.com/microsoft/azure_arc/main/arc_data_services/deploy/yaml/bootstrapper.yaml
De Arc-gegevenscontroller maken
U bent nu klaar om de gegevenscontroller zelf te maken.
Maak eerst een kopie van het sjabloonbestand lokaal op uw computer, zodat u enkele van de instellingen kunt wijzigen.
De gebruikersnamen en wachtwoorden van dashboards voor metrische gegevens en logboeken maken
Boven aan het bestand kunt u een gebruikersnaam en wachtwoord opgeven die wordt gebruikt voor verificatie bij de metrische gegevens en logboeken van dashboards als beheerder. Kies een beveiligd wachtwoord en deel het met alleen wachtwoorden die deze bevoegdheden nodig hebben.
Een Kubernetes-geheim wordt opgeslagen als een met base64 gecodeerde tekenreeks: één voor de gebruikersnaam en een voor het wachtwoord.
echo -n '<your string to encode here>' | base64
# echo -n 'example' | base64
U kunt desgewenst SSL/TLS-certificaten maken voor de logboeken en dashboards voor metrische gegevens. Volg de instructies bij Ssl/TLS-certificaten opgeven tijdens de implementatie van systeemeigen Kubernetes-hulpprogramma's.
De configuratie van de gegevenscontroller bewerken
Bewerk indien nodig de configuratie van de gegevenscontroller:
VEREIST
location
: Wijzig dit in de Azure-locatie waar de metagegevens over de gegevenscontroller worden opgeslagen. Bekijk de lijst met beschikbare regio's.logsui-certificate-secret
: De naam van het geheim dat is gemaakt in het Kubernetes-cluster voor het gebruikersinterfacecertificaat voor logboeken.metricsui-certificate-secret
: De naam van het geheim dat is gemaakt in het Kubernetes-cluster voor het ui-certificaat voor metrische gegevens.
Aanbevolen: standaardinstellingen controleren en mogelijk wijzigen
Bekijk deze waarden en werk deze bij voor uw implementatie:
storage..className
: de opslagklasse die moet worden gebruikt voor de gegevenscontrollergegevens en logboekbestanden. Als u niet zeker weet welke opslagklassen beschikbaar zijn in uw Kubernetes-cluster, kunt u de volgende opdracht uitvoeren:kubectl get storageclass
De standaardwaarde is de standaardinstelling. Hierbij wordt ervan uitgegaan dat er een opslagklasse bestaat die bestaat en de standaardnaam heeft, niet dat er een opslagklasse is die de standaardwaarde is. Opmerking: Er zijn twee className-instellingen die moeten worden ingesteld op de gewenste opslagklasse: één voor gegevens en één voor logboeken.serviceType
: Wijzig het servicetype in NodePort als u geen LoadBalancer gebruikt.Beveiliging voor Azure Red Hat OpenShift of Red Hat OpenShift Container Platform vervangt de beveiliging: instellingen door de volgende waarden in het yaml-bestand van de gegevenscontroller.
security: allowDumps: false allowNodeMetricsCollection: false allowPodMetricsCollection: false
Optioneel
De volgende instellingen zijn optioneel.
name
: De standaardnaam van de gegevenscontroller is boog, maar u kunt deze desgewenst wijzigen.displayName
: Stel dit in op dezelfde waarde als het naamkenmerk boven aan het bestand.registry
: Het Microsoft Container Registry is de standaardinstelling. Als u de installatiekopieën uit het Microsoft Container Registry ophaalt en naar een privécontainerregister pusht, voert u hier het IP-adres of de DNS-naam van uw register in.dockerRegistry
: het geheim dat moet worden gebruikt om de installatiekopieën op te halen uit een privécontainerregister, indien nodig.repository
: De standaardopslagplaats in het Microsoft Container Registry is arcdata. Als u een privécontainerregister gebruikt, voert u het pad in van de map/opslagplaats met de containerinstallatiekopieën voor Gegevensservices met Azure Arc.imageTag
: De huidige meest recente versietag is standaard ingesteld in de sjabloon, maar u kunt deze wijzigen als u een oudere versie wilt gebruiken.logsui-certificate-secret
: De naam van het geheim dat is gemaakt in het Kubernetes-cluster voor het gebruikersinterfacecertificaat voor logboeken.metricsui-certificate-secret
: De naam van het geheim dat is gemaakt in het Kubernetes-cluster voor het ui-certificaat voor metrische gegevens.
In het volgende voorbeeld ziet u een voltooide yaml voor de gegevenscontroller.
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
Sla het bewerkte bestand op uw lokale computer op en voer de volgende opdracht uit om de gegevenscontroller te maken:
kubectl create --namespace arc -f <path to your data controller file>
#Example
kubectl create --namespace arc -f data-controller.yaml
De status van het maken controleren
Het maken van de controller duurt enkele minuten. U kunt de voortgang in een ander terminalvenster bewaken met de volgende opdrachten:
kubectl get datacontroller --namespace arc
kubectl get pods --namespace arc
U kunt ook de status of logboeken van een bepaalde pod controleren door een opdracht zoals hieronder uit te voeren. Dit is vooral handig voor het oplossen van eventuele problemen.
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
Gerelateerde inhoud
U hebt verschillende extra opties voor het maken van de Azure Arc-gegevenscontroller:
Wilt u gewoon iets uitproberen? Ga snel aan de slag met Azure Arc Jumpstart op AKS, Amazon EKS of GKE, of in een Azure-VM.
- Een gegevenscontroller maken in de directe connectiviteitsmodus met Azure Portal
- Een gegevenscontroller maken in de indirecte connectiviteitsmodus met CLI
- Een gegevenscontroller maken in de indirecte connectiviteitsmodus met Azure Data Studio
- Een gegevenscontroller maken in de indirecte connectiviteitsmodus vanuit Azure Portal via een Jupyter-notebook in Azure Data Studio
- Een gegevenscontroller maken in de indirecte connectiviteitsmodus met Kubernetes-hulpprogramma's zoals
kubectl
ofoc