Partager via


Utiliser des services de données avec Azure Arc avec des privilèges minimum

L’utilisation des services de données avec Arc avec des privilèges minimum constitue une bonne pratique de sécurité. Accordez uniquement aux utilisateurs et aux comptes de service les autorisations spécifiques nécessaires pour effectuer les tâches requises. Azure et Kubernetes fournissent un modèle de contrôle d’accès en fonction du rôle qui peut être utilisé pour accorder ces autorisations spécifiques. Cet article décrit certains scénarios courants dans lesquels la sécurité du privilège minimum doit être appliquée.

Remarque

Dans cet article, le nom arc sera utilisé comme espace de noms. Si vous choisissez d’utiliser un autre nom, utilisez le même nom partout. Cet article utilise l’utilitaire CLI kubectl comme exemple. Il est toutefois possible d’utiliser n’importe quel outil ou système qui utilise l’API Kubernetes.

Déployer le contrôleur de données Azure Arc

Le déploiement du contrôleur de données Azure Arc nécessite certaines autorisations qui peuvent être considérées comme des privilèges élevés, telles que la création d’un espace de noms Kubernetes ou la création d’un rôle de cluster. Les étapes suivantes peuvent être suivies pour séparer le déploiement du contrôleur de données en plusieurs étapes, chacune pouvant être effectuée par un utilisateur ou un compte de service disposant des autorisations requises. Cette séparation des tâches garantit que chaque utilisateur ou compte de service impliqué dans le processus n’a que les autorisations requises et rien de plus.

Déployer un espace de noms dans lequel le contrôleur de données sera créé

Cette étape crée un espace de noms Kubernetes dédié dans lequel le contrôleur de données Arc sera déployé. Il est essentiel d’effectuer cette étape en premier, car les étapes suivantes utilisent ce nouvel espace de noms comme étendue pour les autorisations qui sont accordées.

Autorisations requises pour effectuer cette action :

  • Espace de noms
    • Créer
    • Modifier (si nécessaire pour les clusters OpenShift)

Exécutez une commande semblable à la suivante pour créer un espace de noms dédié dans lequel le contrôleur de données sera créé.

kubectl create namespace arc

Si vous utilisez OpenShift, vous devrez modifier les annotations openshift.io/sa.scc.supplemental-groups et openshift.io/sa.scc.uid-range sur l’espace de noms à l’aide de kubectl edit namespace <name of namespace>. Modifiez ces annotations existantes pour qu’elles correspondent à ces ID/plages fsGroup et UID spécifiques.

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

Attribuer des autorisations au compte de service et aux utilisateurs/groupes de déploiement

Cette étape crée un compte de service et attribue des rôles et des rôles de cluster au compte de service afin que le compte de service puisse être utilisé dans un travail pour déployer le contrôleur de données Arc avec les privilèges minimum requis.

Autorisations requises pour effectuer cette action :

  • Compte de service
    • Créer
  • Role
    • Créer
  • Liaison de rôle
    • Créer
  • Rôle de cluster
    • Créer
  • Liaison de rôle de cluster
    • Créer
  • Toutes les autorisations accordées au compte de service (pour plus d’informations, voir arcdata-deployer.yaml ci-dessous)

Enregistrez une copie de arcdata-deployer.yaml et remplacez l’espace réservé {{NAMESPACE}} dans le fichier par l’espace de noms créé à l’étape précédente, par exemple : arc. Exécutez la commande suivante pour créer le compte de service du système de déploiement avec le fichier modifié.

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

Accorder des autorisations aux utilisateurs pour créer le travail d’amorçage et le contrôleur de données

Autorisations requises pour effectuer cette action :

  • Role
    • Créer
  • Liaison de rôle
    • Créer

Enregistrez une copie d’arcdata-installer.yaml et remplacez l’espace réservé {{INSTALLER_USERNAME}} dans le fichier par le nom de l’utilisateur auquel accorder les autorisations (par exemple, john@contoso.com). Ajoutez des sujets de liaison de rôle supplémentaires tels que d’autres utilisateurs ou groupes selon les besoins. Exécutez la commande suivante pour créer les autorisations du programme d’installation avec le fichier modifié.

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

Déployer le travail d’amorçage

Autorisations requises pour effectuer cette action :

  • Utilisateur affecté au rôle arcdata-installer-role à l’étape précédente

Exécutez la commande suivante pour créer le travail d’amorçage qui exécutera les étapes préparatoires de déploiement du contrôleur de données.

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

Créer le contrôleur de données Arc

Vous êtes maintenant prêt à créer le contrôleur de données lui-même.

Tout d'abord, créez une copie du fichier modèle localement sur votre ordinateur afin de pouvoir modifier certains des paramètres.

Créer les métriques et les tableaux de bord des tableaux de bord d’utilisateur et des mots de passe

Au début du fichier, vous pouvez spécifier un nom d’utilisateur et un mot de passe utilisés pour l’authentification auprès des tableaux de bord des métriques et des journaux en tant qu’administrateur. Choisissez un mot de passe sécurisé et partagez-le uniquement avec ceux qui doivent disposer de ces privilèges.

Une clé secrète Kubernetes est stockée sous la forme d’une chaîne encodée en base64, une pour le nom d’utilisateur et l’autre pour le mot de passe.

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

Si vous le souhaitez, vous pouvez créer des certificats SSL/TLS pour les journaux et les tableaux de bord de métriques. Suivez les instructions indiquées dans la procédure Spécifier les certificats SSL/TLS durant un déploiement des outils natifs Kubernetes.

Modifier la configuration du contrôleur de données

Modifier la configuration du contrôleur de données selon les besoins :

OBLIGATOIRE

  • location : modifiez-le pour qu’il corresponde à l’emplacement Azure dans lequel les métadonnées relatives au contrôleur de données sont stockées. Consultez la liste des régions disponibles.
  • logsui-certificate-secret : nom du secret créé sur le cluster Kubernetes pour le certificat de l’interface utilisateur des journaux.
  • metricsui-certificate-secret : nom du secret créé sur le cluster Kubernetes pour le certificat de l’interface utilisateur des métriques.

Passez en revue ces valeurs et mettez-les à jour pour votre déploiement :

  • storage..className : classe de stockage à utiliser pour les fichiers de données et les fichiers journaux du contrôleur de données. En cas de doute sur les classes de stockage disponibles dans votre cluster Kubernetes, vous pouvez exécuter la commande suivante : kubectl get storageclass. La valeur par défaut est default, ce qui suppose qu'il existe une classe de stockage nommée default et non pas qu’une classe de stockage est utilisée par défaut. Remarque : Il existe deux paramètres className à définir pour la classe de stockage souhaitée, l’un pour les données et l’autre pour les journaux.

  • serviceType : modifiez le type de service en NodePort si vous n’utilisez pas de programme d’équilibrage de charge.

  • Sécurité pour Azure Red Hat OpenShift ou Red Hat OpenShift Container Platform, remplacez les paramètres security: par les valeurs suivantes dans le fichier YAML du contrôleur de données.

    security:
      allowDumps: false
      allowNodeMetricsCollection: false
      allowPodMetricsCollection: false
    

Facultatif

Les paramètres suivants sont facultatifs.

  • name : le nom par défaut du contrôleur de données est arc, mais vous pouvez le modifier si vous le souhaitez.
  • displayName : affectez-lui la même valeur que l’attribut Name en haut du fichier.
  • registry : Microsoft Container Registry est le registre par défaut. Si vous extrayez les images de Microsoft Container Registry et les transférez vers un registre de conteneurs privé, entrez l’adresse IP ou le nom DNS de votre registre ici.
  • dockerRegistry : secret à utiliser pour extraire les images à partir d’un registre de conteneurs privé, si nécessaire.
  • repository : le registre par défaut sur Microsoft Container Registry est arcdata. Si vous utilisez un registre de conteneurs privé, entrez le chemin du dossier/référentiel contenant les images de conteneur des services de données avec Azure Arc.
  • imageTag : l’étiquette de la dernière version actuelle est utilisée par défaut dans le modèle, mais vous pouvez la modifier si vous souhaitez utiliser une version antérieure.
  • logsui-certificate-secret : nom du secret créé sur le cluster Kubernetes pour le certificat de l’interface utilisateur des journaux.
  • metricsui-certificate-secret : nom du secret créé sur le cluster Kubernetes pour le certificat de l’interface utilisateur des métriques.

L’exemple suivant montre un fichier YAML de contrôleur de données terminé.

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

enregistrez le fichier modifié sur votre ordinateur local et exécutez la commande suivante pour créer le contrôleur de données :

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

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

Surveillance de l’état de la création

La création du contrôleur prend plusieurs minutes. Vous pouvez superviser la progression dans une autre fenêtre de terminal avec les commandes suivantes :

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

Vous pouvez également vérifier l’état de la création ou les journaux de n’importe quel pod en exécutant une commande comme celle qui figure ci-dessous. C’est particulièrement pratique pour résoudre les éventuels problèmes.

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

Vous avez plusieurs options supplémentaires pour créer le contrôleur de données Azure Arc :

Vous voulez juste essayer ? Commencez rapidement avec Démarrage rapide avec Azure Arc sur AKS, Amazon EKS ou GKE, ou dans une machine virtuelle Azure.