Sdílet prostřednictvím


Provoz datových služeb s podporou Azure Arc s nejnižšími oprávněními

Osvědčeným postupem zabezpečení je provozování datových služeb s podporou arc s nejnižšími oprávněními. Udělte uživatelům a účtům služeb jenom konkrétní oprávnění potřebná k provádění požadovaných úloh. Azure i Kubernetes poskytují model řízení přístupu na základě role, který se dá použít k udělení těchto konkrétních oprávnění. Tento článek popisuje některé běžné scénáře, ve kterých se má použít zabezpečení nejnižších oprávnění.

Poznámka:

V tomto článku se použije název arc oboru názvů. Pokud se rozhodnete použít jiný název, použijte stejný název v celém prostředí. V tomto článku kubectl se jako příklad používá nástroj rozhraní příkazového řádku. Můžete ale použít jakýkoli nástroj nebo systém, který používá rozhraní API Kubernetes.

Nasazení kontroleru dat Azure Arc

Nasazení kontroleru dat Azure Arc vyžaduje určitá oprávnění, která se dají považovat za vysoká oprávnění, jako je vytvoření oboru názvů Kubernetes nebo vytvoření role clusteru. Podle následujících kroků můžete nasazení kontroleru dat oddělit do několika kroků, z nichž každý může provést uživatel nebo účet služby, který má požadovaná oprávnění. Toto oddělení povinností zajišťuje, že každý uživatel nebo účet služby v procesu má pouze požadovaná oprávnění a nic dalšího.

Nasazení oboru názvů, ve kterém se vytvoří kontroler dat

Tento krok vytvoří nový vyhrazený obor názvů Kubernetes, do kterého se nasadí kontroler dat Arc. Nejprve je nezbytné provést tento krok, protože následující kroky použijí tento nový obor názvů jako obor oprávnění, která jsou udělena.

Oprávnění potřebná k provedení této akce:

  • Namespace
    • Vytvoření
    • Upravit (v případě potřeby pro clustery OpenShift)

Spuštěním příkazu podobného následujícímu vytvořte nový vyhrazený obor názvů, ve kterém se vytvoří kontroler dat.

kubectl create namespace arc

Pokud používáte OpenShift, budete muset upravit openshift.io/sa.scc.supplemental-groups anotace openshift.io/sa.scc.uid-range v oboru názvů pomocí kubectl edit namespace <name of namespace>. Změňte tyto existující poznámky tak, aby odpovídaly těmto konkrétním ID nebo rozsahům UID a fsGroup.

openshift.io/sa.scc.supplemental-groups: 1000700001/10000
openshift.io/sa.scc.uid-range: 1000700001/10000

Přiřazení oprávnění k nasazovacímu účtu služby a uživatelům nebo skupinám

Tento krok vytvoří účet služby a přiřadí k účtu služby role a role clusteru, aby se účet služby mohl použít v úloze k nasazení kontroleru dat Arc s minimálními požadovanými oprávněními.

Oprávnění potřebná k provedení této akce:

  • Účet služby
    • Vytvoření
  • Role
    • Vytvoření
  • Vazba role
    • Vytvoření
  • Role clusteru
    • Vytvoření
  • Vazby role clusteru
    • Vytvoření
  • Všechna oprávnění udělená účtu služby (podrobnosti najdete níže v souboru arcdata-deployer.yaml).

Uložte kopii arcdata-deployer.yaml a nahraďte zástupný symbol {{NAMESPACE}} v souboru oborem názvů vytvořeným v předchozím kroku, například: arc. Spuštěním následujícího příkazu vytvořte účet služby deployer s upraveným souborem.

kubectl apply --namespace arc -f arcdata-deployer.yaml

Udělení oprávnění uživatelům k vytvoření úlohy bootstrapperu a kontroleru dat

Oprávnění potřebná k provedení této akce:

  • Role
    • Vytvoření
  • Vazba role
    • Vytvoření

Uložte kopii arcdata-installer.yaml a nahraďte zástupný symbol {{INSTALLER_USERNAME}} v souboru jménem uživatele, kterým chcete udělit oprávnění, například: john@contoso.com. Podle potřeby přidejte další předměty vazby rolí, jako jsou jiní uživatelé nebo skupiny. Spuštěním následujícího příkazu vytvořte oprávnění instalačního programu s upraveným souborem.

kubectl apply --namespace arc -f arcdata-installer.yaml

Nasazení úlohy bootstrapperu

Oprávnění potřebná k provedení této akce:

  • Uživatel, který je přiřazen k roli role arcdata-installer-role v předchozím kroku

Spuštěním následujícího příkazu vytvořte úlohu bootstrapperu, která spustí přípravné kroky pro nasazení kontroleru dat.

kubectl apply --namespace arc -f https://raw.githubusercontent.com/microsoft/azure_arc/main/arc_data_services/deploy/yaml/bootstrapper.yaml

Vytvoření kontroleru dat Arc

Teď jste připraveni vytvořit samotný kontroler dat.

Nejprve v počítači vytvořte kopii souboru šablony místně, abyste mohli některá nastavení upravit.

Vytvoření metrik a protokolů řídicích panelů uživatelská jména a hesla

V horní části souboru můžete zadat uživatelské jméno a heslo, které se používá k ověření v metrikách a protokolech řídicích panelů jako správce. Zvolte zabezpečené heslo a sdílejte ho jenom s těmi, kteří potřebují tato oprávnění.

Tajný kód Kubernetes je uložený jako řetězec kódovaný jako base64 – jeden pro uživatelské jméno a druhý pro heslo.

echo -n '<your string to encode here>' | base64
# echo -n 'example' | base64

Volitelně můžete vytvořit certifikáty SSL/TLS pro řídicí panely protokolů a metrik. Postupujte podle pokynů v tématu Určení certifikátů SSL/TLS během nasazení nativních nástrojů Kubernetes.

Úprava konfigurace kontroleru dat

Podle potřeby upravte konfiguraci kontroleru dat:

POŽADOVANÝ

  • location: Změňte tuto možnost na umístění Azure, kde se budou ukládat metadata o kontroleru dat. Zkontrolujte seznam dostupných oblastí.
  • logsui-certificate-secret: Název tajného kódu vytvořeného v clusteru Kubernetes pro certifikát uživatelského rozhraní protokolů.
  • metricsui-certificate-secret: Název tajného kódu vytvořeného v clusteru Kubernetes pro certifikát uživatelského rozhraní metrik.

Zkontrolujte tyto hodnoty a aktualizujte nasazení:

  • storage..className: třída úložiště, která se má použít pro data kontroleru dat a soubory protokolů. Pokud si nejste jisti dostupnými třídami úložiště v clusteru Kubernetes, můžete spustit následující příkaz: kubectl get storageclass Výchozí hodnota je výchozí, což předpokládá, že existuje třída úložiště, která existuje a má název výchozí, nikoli že existuje třída úložiště, která je výchozí. Poznámka: Existují dvě nastavení className, která se mají nastavit na požadovanou třídu úložiště – jedno pro data a jedno pro protokoly.

  • serviceType: Pokud nepoužíváte LoadBalancer, změňte typ služby na NodePort.

  • Zabezpečení pro Azure Red Hat OpenShift nebo Red Hat OpenShift Container Platform nahraďte zabezpečení: nastavení následujícími hodnotami v souboru yaml kontroleru dat.

    security:
      allowDumps: false
      allowNodeMetricsCollection: false
      allowPodMetricsCollection: false
    

Volitelné

Následující nastavení jsou volitelná.

  • name: Výchozí název kontroleru dat je arc, ale pokud chcete, můžete ho změnit.
  • displayName: Nastavte tuto hodnotu na stejnou hodnotu jako atribut name v horní části souboru.
  • registry: Služba Microsoft Container Registry je výchozí. Pokud načítáte image ze služby Microsoft Container Registry a nasdílíte je do privátního registru kontejneru, zadejte ip adresu nebo název DNS vašeho registru.
  • dockerRegistry: Tajný klíč, který se má použít k načtení imagí z privátního registru kontejneru v případě potřeby.
  • repository: Výchozí úložiště ve službě Microsoft Container Registry je arcdata. Pokud používáte privátní registr kontejneru, zadejte cestu ke složce nebo úložišti obsahující image kontejnerů datových služeb s podporou Služby Azure Arc.
  • imageTag: Aktuální nejnovější značka verze je v šabloně výchozí, ale pokud chcete použít starší verzi, můžete ji změnit.
  • logsui-certificate-secret: Název tajného kódu vytvořeného v clusteru Kubernetes pro certifikát uživatelského rozhraní protokolů.
  • metricsui-certificate-secret: Název tajného kódu vytvořeného v clusteru Kubernetes pro certifikát uživatelského rozhraní metrik.

Následující příklad ukazuje dokončený yaml kontroleru dat.

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

Uložte upravený soubor do místního počítače a spuštěním následujícího příkazu vytvořte kontroler dat:

kubectl create --namespace arc -f <path to your data controller file>

#Example
kubectl create --namespace arc -f data-controller.yaml

Monitorování stavu vytváření

Vytvoření kontroleru bude trvat několik minut. Průběh můžete sledovat v jiném okně terminálu pomocí následujících příkazů:

kubectl get datacontroller --namespace arc
kubectl get pods --namespace arc

Stav vytvoření nebo protokoly konkrétního podu můžete také zkontrolovat spuštěním příkazu, který je uvedený níže. To je užitečné zejména při řešení jakýchkoli problémů.

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

Máte několik dalších možností pro vytvoření kontroleru dat Azure Arc:

Jen si to chcete vyzkoušet? Začněte rychle s rychlým startem Azure Arc na AKS, Amazonu EKS nebo GKE nebo na virtuálním počítači Azure.