Dela via


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:

  • Namnområde
    • 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.

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.31.0_2024-07-09
    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

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.