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.
Doporučeno: kontrola a možná změna výchozích hodnot
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
Související obsah
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.
- Vytvoření kontroleru dat v režimu přímého připojení pomocí webu Azure Portal
- Vytvoření kontroleru dat v režimu nepřímého připojení pomocí rozhraní příkazového řádku
- Vytvoření kontroleru dat v režimu nepřímého připojení pomocí nástroje Azure Data Studio
- Vytvoření kontroleru dat v režimu nepřímého připojení z webu Azure Portal prostřednictvím poznámkového bloku Jupyter v Nástroji Azure Data Studio
- Vytvoření kontroleru dat v režimu nepřímého připojení pomocí nástrojů Kubernetes, jako
kubectl
jsou nebooc