Använda Azure Arc-aktiverade datatjänster med minsta möjliga behörighet
Att använda Arc-aktiverade datatjänster med minsta möjliga behörighet är en metod för säkerhet. Bevilja endast användare och tjänstkonton de specifika behörigheter som krävs för att utföra de uppgifter som krävs. Både Azure och Kubernetes tillhandahåller en rollbaserad åtkomstkontrollmodell som kan användas för att bevilja dessa specifika behörigheter. Den här artikeln beskriver vissa vanliga scenarier där säkerheten för minsta behörighet ska tillämpas.
Kommentar
I den här artikeln används ett namnområdesnamn arc
. Om du väljer att använda ett annat namn använder du samma namn hela vägen.
I den kubectl
här artikeln används CLI-verktyget som exempel. Alla verktyg eller system som använder Kubernetes API kan dock användas.
Distribuera Azure Arc-datastyrenheten
För att distribuera Azure Arc-datakontrollanten krävs vissa behörigheter som kan betraktas som hög behörighet, till exempel att skapa ett Kubernetes-namnområde eller skapa en klusterroll. Följande steg kan följas för att avgränsa distributionen av datakontrollanten i flera steg, som var och en kan utföras av en användare eller ett tjänstkonto som har de behörigheter som krävs. Den här uppdelningen av uppgifter säkerställer att varje användare eller tjänstkonto i processen bara har de behörigheter som krävs och inget mer.
Distribuera ett namnområde där datakontrollanten skapas
Det här steget skapar ett nytt, dedikerat Kubernetes-namnområde som Arc-datakontrollanten ska distribueras till. Det är viktigt att utföra det här steget först, eftersom följande steg använder det här nya namnområdet som ett omfång för de behörigheter som beviljas.
Behörigheter som krävs för att utföra den här åtgärden:
- Namespace
- Skapa
- Redigera (om det behövs för OpenShift-kluster)
Kör ett kommando som liknar följande för att skapa ett nytt, dedikerat namnområde där datakontrollanten ska skapas.
kubectl create namespace arc
Om du använder OpenShift måste du redigera anteckningarna openshift.io/sa.scc.supplemental-groups
och openshift.io/sa.scc.uid-range
i namnområdet med hjälp av kubectl edit namespace <name of namespace>
. Ändra dessa befintliga anteckningar så att de matchar dessa specifika UID- och fsGroup-ID:n/intervall.
openshift.io/sa.scc.supplemental-groups: 1000700001/10000
openshift.io/sa.scc.uid-range: 1000700001/10000
Tilldela behörigheter till det distribuerande tjänstkontot och användare/grupper
Det här steget skapar ett tjänstkonto och tilldelar roller och klusterroller till tjänstkontot så att tjänstkontot kan användas i ett jobb för att distribuera Arc-datakontrollanten med minsta möjliga behörighet.
Behörigheter som krävs för att utföra den här åtgärden:
- Tjänstkonto
- Skapa
- Roll
- Skapa
- Rollbindning
- Skapa
- Klusterroll
- Skapa
- Klusterrollbindning
- Skapa
- Alla behörigheter som beviljas till tjänstkontot (se arcdata-deployer.yaml nedan för mer information)
Spara en kopia av arcdata-deployer.yaml och ersätt platshållaren {{NAMESPACE}}
i filen med namnområdet som skapades i föregående steg, till exempel: arc
. Kör följande kommando för att skapa distributionstjänstkontot med den redigerade filen.
kubectl apply --namespace arc -f arcdata-deployer.yaml
Bevilja behörigheter till användare för att skapa bootstrapper-jobbet och datakontrollanten
Behörigheter som krävs för att utföra den här åtgärden:
- Roll
- Skapa
- Rollbindning
- Skapa
Spara en kopia av arcdata-installer.yaml och ersätt platshållaren {{INSTALLER_USERNAME}}
i filen med namnet på användaren som ska ge behörighet till, till exempel: john@contoso.com
. Lägg till ytterligare rollbindningsämnen, till exempel andra användare eller grupper efter behov. Kör följande kommando för att skapa installationsbehörigheterna med den redigerade filen.
kubectl apply --namespace arc -f arcdata-installer.yaml
Distribuera bootstrapper-jobbet
Behörigheter som krävs för att utföra den här åtgärden:
- Användare som har tilldelats rollen arcdata-installer-role i föregående steg
Kör följande kommando för att skapa bootstrapper-jobbet som ska köra förberedande steg för att distribuera datastyrenheten.
kubectl apply --namespace arc -f https://raw.githubusercontent.com/microsoft/azure_arc/main/arc_data_services/deploy/yaml/bootstrapper.yaml
Skapa Arc-datastyrenheten
Nu är du redo att skapa själva datastyrenheten.
Skapa först en kopia av mallfilen lokalt på datorn så att du kan ändra några av inställningarna.
Skapa mått och loggar instrumentpaneler användarnamn och lösenord
Överst i filen kan du ange ett användarnamn och lösenord som används för att autentisera till instrumentpanelerna för mått och loggar som administratör. Välj ett säkert lösenord och dela det med endast de som behöver ha dessa privilegier.
En Kubernetes-hemlighet lagras som en base64-kodad sträng – en för användarnamnet och en för lösenordet.
echo -n '<your string to encode here>' | base64
# echo -n 'example' | base64
Du kan också skapa SSL/TLS-certifikat för instrumentpanelerna för loggar och mått. Följ anvisningarna i Ange SSL/TLS-certifikat under distribution av inbyggda Kubernetes-verktyg.
Redigera konfigurationen av datakontrollanten
Redigera konfigurationen av datakontrollanten efter behov:
KRÄVS
location
: Ändra detta till den Azure-plats där metadata om datakontrollanten lagras. Granska listan över tillgängliga regioner.logsui-certificate-secret
: Namnet på hemligheten som skapades i Kubernetes-klustret för loggarnas användargränssnittscertifikat.metricsui-certificate-secret
: Namnet på hemligheten som skapades i Kubernetes-klustret för måttgränssnittscertifikatet.
Rekommenderas: granska och eventuellt ändra standardvärden
Granska dessa värden och uppdatera för distributionen:
storage..className
: lagringsklassen som ska användas för datakontrollantdata och loggfiler. Om du är osäker på de tillgängliga lagringsklasserna i ditt Kubernetes-kluster kan du köra följande kommando:kubectl get storageclass
. Standardvärdet är standard, vilket förutsätter att det finns en lagringsklass som finns och heter standard, inte att det finns en lagringsklass som är standard. Obs! Det finns två className-inställningar som ska anges till önskad lagringsklass – en för data och en för loggar.serviceType
: Ändra tjänsttypen till NodePort om du inte använder en LoadBalancer.Säkerhet För Azure Red Hat OpenShift eller Red Hat OpenShift Container Platform ersätter du säkerhetsinställningarna med följande värden i yaml-filen för datakontrollanten.
security: allowDumps: false allowNodeMetricsCollection: false allowPodMetricsCollection: false
Valfritt
Följande inställningar är valfria.
name
: Standardnamnet för datakontrollanten är arc, men du kan ändra det om du vill.displayName
: Ange samma värde som namnattributet överst i filen.registry
: Microsoft Container Registry är standard. Om du hämtar avbildningarna från Microsoft Container Registry och push-överför dem till ett privat containerregister anger du IP-adressen eller DNS-namnet för registret här.dockerRegistry
: Hemligheten som ska användas för att hämta avbildningarna från ett privat containerregister om det behövs.repository
: Standardlagringsplatsen i Microsoft Container Registry är arcdata. Om du använder ett privat containerregister anger du sökvägen till den mapp/lagringsplats som innehåller containeravbildningarna för Azure Arc-aktiverade datatjänster.imageTag
: Den aktuella senaste versionstaggen är standard i mallen, men du kan ändra den om du vill använda en äldre version.logsui-certificate-secret
: Namnet på hemligheten som skapades i Kubernetes-klustret för loggarnas användargränssnittscertifikat.metricsui-certificate-secret
: Namnet på hemligheten som skapades i Kubernetes-klustret för måttgränssnittscertifikatet.
I följande exempel visas en slutförd datakontrollant yaml.
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
Spara den redigerade filen på den lokala datorn och kör följande kommando för att skapa datakontrollanten:
kubectl create --namespace arc -f <path to your data controller file>
#Example
kubectl create --namespace arc -f data-controller.yaml
Övervaka skapandestatusen
Det tar några minuter att skapa kontrollanten. Du kan övervaka förloppet i ett annat terminalfönster med följande kommandon:
kubectl get datacontroller --namespace arc
kubectl get pods --namespace arc
Du kan också kontrollera skapandestatusen eller loggarna för en viss podd genom att köra ett kommando som nedan. Detta är särskilt användbart för att felsöka eventuella problem.
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
Relaterat innehåll
Du har flera ytterligare alternativ för att skapa Azure Arc-datakontrollanten:
Vill du bara prova? Kom igång snabbt med Azure Arc Jumpstart på AKS, Amazon EKS eller GKE eller på en virtuell Azure-dator.
- Skapa en datakontrollant i direktanslutningsläge med Azure Portal
- Skapa en datakontrollant i indirekt anslutningsläge med CLI
- Skapa en datakontrollant i indirekt anslutningsläge med Azure Data Studio
- Skapa en datakontrollant i indirekt anslutningsläge från Azure Portal via en Jupyter-notebook-fil i Azure Data Studio
- Skapa en datakontrollant i indirekt anslutningsläge med Kubernetes-verktyg som
kubectl
elleroc