Restreindre les charges de travail GKE privilégiées dans les organisations

Vous pouvez utiliser des règles pour contrôler les charges de travail privilégiées qui peuvent s'exécuter dans les clusters Google Kubernetes Engine (GKE) de votre organisation. Cloud de Confiance by S3NS Ce document vous explique comment utiliser des règles pour définir des sources de charges de travail approuvées et appliquer de bonnes pratiques afin d'améliorer votre stratégie de sécurité.

Ce document est destiné aux administrateurs d'identité et de compte qui souhaitent autoriser l'exécution de charges de travail privilégiées approuvées uniquement dans l'organisation. Vous devez déjà connaître les concepts présentés dans les pages suivantes :

Fonctionnement du contrôle d'admission des charges de travail privilégiées pour les organisations

Par défaut, GKE Autopilot applique un ensemble de mesures de sécurité pour les charges de travail. La seule façon d'exécuter des charges de travail qui enfreignent ces contraintes consiste à installer des listes d'autorisation pour ces charges de travail. Pour installer une liste d'autorisation à partir d'une source spécifique, le cluster doit être configuré pour accepter les listes d'autorisation de cette source.

Par défaut, Cloud de Confiance les organisations permettent aux administrateurs de plate-forme de configurer les clusters pour qu'ils acceptent les listes d'autorisation des partenaires GKE et des projets Open Source validés. Si votre organisation a des exigences de sécurité qui limitent les charges de travail privilégiées à un ensemble de sources connues explicites, vous pouvez utiliser une règle d'administration pour modifier le comportement par défaut.

Lorsque vous appliquez une liste de sources de listes d'autorisation approuvées pour votre organisation, votre dossier ou votre projet, les administrateurs de plate-forme ne peuvent spécifier que ces sources lorsqu'ils créent ou mettent à jour des clusters Autopilot ou Standard. Si un cluster est créé ou mis à jour avec une source non approuvée spécifiée, l'opération échoue.

Les règles d'administration que vous devez configurer dépendent de votre cas d'utilisation, comme suit :

Avant de commencer

  1. Enable the Resource Manager API.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  2. Si vos équipes disposent de listes d'autorisation pour les charges de travail privilégiées dont elles sont propriétaires, demandez-leur de vous fournir les chemins d'accès à ces listes d'autorisation dans Cloud Storage.

Rôles et autorisations requis

Pour obtenir les autorisations nécessaires pour gérer des règles d'administration, demandez à votre administrateur de vous accorder le rôle IAM Administrateur des règles d'administration (roles/orgpolicy.policyAdmin) dans l'organisation, le dossier ou le projet. Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.

Configurer une règle d'administration pour les listes d'autorisation

Vous pouvez contrôler les sources approuvées des listes d'autorisation pour une organisation, un dossier ou un projet en créant ou en mettant à jour une règle d'administration basée sur la contrainte gérée constraints/container.managed.autopilotPrivilegedAdmission. Lorsque vous appliquez cette règle d'administration, les administrateurs de cluster ne peuvent installer des listes d'autorisation qu'à partir des sources que vous définissez dans la règle.

En plus de ces étapes, nous vous recommandons d'appliquer une règle d'administration qui autorise uniquement l'exécution de clusters Autopilot dans votre environnement. Lorsqu'il n'y a pas de clusters Standard dans l'environnement, seules vos charges de travail privilégiées approuvées peuvent s'exécuter. Pour en savoir plus, consultez la section Configurer une règle d'administration pour autoriser uniquement les clusters Autopilot.

Pour configurer une règle d'administration pour les listes d'autorisation de charges de travail privilégiées approuvées, sélectionnez l'une des options suivantes :

Console

  1. Dans la Cloud de Confiance console, accédez à la page Règles d'administration :

    Accéder à la page Règles d'administration

  2. Dans le tableau des contraintes, recherchez la contrainte gérée container.managed.autopilotPrivilegedAdmission.

  3. Cliquez sur Actions > Modifier la règle. La page Modifier la règle s'ouvre.

  4. Dans la section Source de la règle, sélectionnez Remplacer la règle parente.

  5. Dans la section Règles, cliquez sur Ajouter une règle.

  6. Dans la section Application, sélectionnez Activé. La section Paramètres s'affiche.

  7. Pour contrôler si les listes d'autorisation approuvées par GKE peuvent être installées, procédez comme suit :

    1. Dans le paramètre allowAnyGKEPath, cliquez sur Modifier. Le volet Modifier les valeurs des paramètres s'ouvre.
    2. Dans la section Type de valeur, sélectionnez Défini par l'utilisateur.
    3. Dans la section Valeurs définies par l'utilisateur, sélectionnez l'une des options suivantes :

      • True : les administrateurs peuvent configurer des clusters pour exécuter des listes d'autorisation à partir de n'importe quel chemin commençant par gke://. Il s'agit de la valeur par défaut.
      • False : les administrateurs peuvent configurer des clusters pour exécuter des listes d'autorisation uniquement à partir des chemins que vous spécifiez dans le paramètre allowPaths de la règle d'administration. Si vous ne spécifiez pas de chemins dans le paramètre allowPaths, les clusters ne peuvent exécuter aucune liste d'autorisation à partir d'aucune source.
    4. Cliquez sur Enregistrer. Le volet Modifier les valeurs des paramètres se ferme.

  8. Pour définir les listes d'autorisation spécifiques qui peuvent être installées, procédez comme suit :

    1. Dans le paramètre allowPaths, cliquez sur Modifier. Le volet Modifier les valeurs des paramètres s'ouvre.
    2. Dans la section Type de valeur, sélectionnez Défini par l'utilisateur.
    3. Dans la section Valeurs définies par l'utilisateur, spécifiez un ou plusieurs chemins d'accès aux sources de listes d'autorisation. Pour en savoir plus sur ce que vous pouvez spécifier, voir Chemins d'accès aux listes d'autorisation.
    4. Cliquez sur Enregistrer. Le volet Modifier les valeurs des paramètres se ferme.
    5. Dans la section Modifier la règle, cliquez sur OK.
  9. Facultatif : pour tester l'impact de l'application de la règle d'administration, cliquez sur Tester les modifications. Pour en savoir plus, consultez la section Tester les modifications apportées aux règles d'administration à l'aide de Policy Simulator.

  10. Pour appliquer la règle en mode dry run, cliquez sur Définir la règle de dry run.

  11. Une fois que vous avez vérifié que la règle d'administration fonctionne comme prévu en mode dry run, définissez la règle active en cliquant sur Définir la règle.

L'application complète des modifications apportées à votre règle d'administration peut prendre jusqu'à 15 minutes.

gcloud

  1. Créez un fichier YAML qui définit la règle d'administration :

    name: RESOURCE_TYPE/RESOURCE_ID/policies/container.managed.autopilotPrivilegedAdmission
    spec:
      rules:
      - enforce: true
        parameters:
          allowAnyGKEPath: ALLOW_GKE_PATHS
          allowPaths:
          - ALLOWLIST1_PATH
          - ALLOWLIST2_PATH
    

    Remplacez les éléments suivants :

    • RESOURCE_TYPE : type de Cloud de Confiance ressource. Il doit s'agir de l'une des valeurs suivantes :

      • organizations
      • folders
      • projects
    • RESOURCE_ID: ID de l'organisation, ID du dossier ou ID du projet.

    • ALLOW_GKE_PATHS: indique si vous souhaitez autoriser les listes d'autorisation approuvées par GKE. Spécifiez une des valeurs suivantes :

      • True: autorise la configuration du cluster avec n'importe quelle charge de travail partenaire GKE ou charge de travail Open Source validée. Il s'agit de la valeur par défaut.
      • False: autorise la configuration du cluster uniquement avec les chemins d'accès dans le champ allowPaths.

    • ALLOWLIST1_PATH,ALLOWLIST2_PATH : chemin d'accès aux listes d'autorisation. Pour en savoir plus sur ce que vous pouvez spécifier, consultez la section Chemins d'accès aux listes d'autorisation.

    Pour rendre la règle d'administration conditionnelle sur un tag, ajoutez un bloc condition au champ rules. Si vous ajoutez une règle conditionnelle à une règle d'administration, vous devez ajouter au moins une règle non conditionnelle, sinon la règle ne pourra pas être enregistrée. Pour en savoir plus, consultez la section Définir une règle d'administration avec des tags.

  2. Pour définir la règle d'administration en mode dry run, spécifiez la dryRunSpec valeur pour le --update-mask flag dans la gcloud org-policies set-policy commande :

    gcloud org-policies set-policy POLICY_FILEPATH \
        --update-mask=dryRunSpec
    

    Remplacez POLICY_FILEPATH par le chemin d'accès au fichier YAML que vous avez créé à l'étape précédente.

  3. Facultatif : pour tester l'impact de l'application de cette règle d'administration, utilisez la gcloud policy-intelligence simulate org-policy commande :

    gcloud policy-intelligence simulate org-policy \
        --organization=ORGANIZATION_ID \
        --policy-path=POLICY_FILEPATH
    

    Remplacez ORGANIZATION_ID par l'ID de votre organisation.

  4. Une fois que vous avez vérifié que la règle d'administration fonctionne comme prévu en mode dry run, définissez la règle active en spécifiant la valeur spec pour le flag --update-mask dans la commande gcloud org-policies set-policy :

    gcloud org-policies set-policy POLICY_FILEPATH \
        --update-mask=spec
    

    L'application complète des modifications apportées à votre règle d'administration peut prendre jusqu'à 15 minutes.

Configurer une règle d'administration pour autoriser uniquement les clusters Autopilot

Cette section vous explique comment configurer une règle d'administration qui autorise uniquement les clusters Autopilot. Nous vous recommandons de configurer cette règle en plus de créer une règle d'administration pour les listes d'autorisation, car les clusters Standard peuvent exécuter la plupart des charges de travail privilégiées. N'autoriser que les clusters Autopilot signifie que votre environnement n'exécute que les charges de travail privilégiées que vous autorisez. Les étapes de cette section sont facultatives.

Pour configurer cette règle, sélectionnez l'une des options suivantes :

Console

  1. Créez une contrainte personnalisée qui autorise uniquement la création de clusters Autopilot :

    1. Dans la Cloud de Confiance console, accédez à la page Règles d'administration :

      Accéder à la page Règles d'administration

    2. Cliquez sur Contrainte personnalisée. La page Créer une contrainte personnalisée s'ouvre.

    3. Spécifiez un nom à afficher et un ID unique pour la contrainte.

    4. Dans la section Application, procédez comme suit :

      1. Dans la liste Type de ressource, sélectionnez container.googleapis.com/Cluster.
      2. Dans la liste Méthode d'application, sélectionnez Application lors de la création.
      3. Dans la section Condition, cliquez sur Modifier la condition. Le volet Ajouter une condition s'ouvre.
      4. Spécifiez l'expression suivante :

        resource.autopilot.enabled == true
        
      5. Cliquez sur Enregistrer. Le volet Ajouter une condition se ferme.

      6. Dans la section Action, sélectionnez Autoriser.

    5. Cliquez sur Créer une contrainte.

  2. Créez une règle d'administration personnalisée qui applique la contrainte :

    1. Dans le tableau des contraintes, recherchez la contrainte personnalisée que vous avez créée à l'étape précédente.
    2. Cliquez sur Actions > Modifier la règle. La page Modifier la règle s'ouvre.
    3. Dans la section Source de la règle, sélectionnez Remplacer la règle parente.
    4. Cliquez sur Ajouter une règle.
    5. Dans la section Application, sélectionnez Activé.
    6. Pour tester l'impact de l'application de la règle d'administration, cliquez sur Tester les modifications. Pour en savoir plus, consultez la section Tester les modifications apportées aux règles d'administration à l'aide de Policy Simulator.
    7. Pour appliquer la règle en mode dry run, cliquez sur Définir la règle de dry run.
    8. Une fois que vous avez vérifié que la règle d'administration fonctionne comme prévu en mode dry run, définissez la règle active en cliquant sur Définir la règle.

    L'application complète des modifications apportées à votre règle d'administration peut prendre jusqu'à 15 minutes.

gcloud

  1. Créez une contrainte personnalisée qui autorise uniquement la création de clusters Autopilot :

    1. Créez un fichier YAML qui définit la contrainte personnalisée :

      name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
      resourceTypes: container.googleapis.com/Cluster
      methodTypes:
      - CREATE
      condition: resource.autopilot.enabled == true
      actionType: ALLOW
      displayName: "Allow only Autopilot clusters"
      

      Remplacez les éléments suivants :

      • ORGANIZATION_ID : ID de votre organisation.
      • CONSTRAINT_NAME : nom de votre nouvelle contrainte.
    2. Définissez la contrainte personnalisée :

      gcloud org-policies set-custom-constraint CONSTRAINT_FILEPATH
      

      Remplacez CONSTRAINT_FILEPATH par le chemin d'accès au fichier YAML que vous avez créé à l'étape précédente.

    La contrainte personnalisée est disponible pour être utilisée dans une règle d'administration.

  2. Créez une règle d'administration personnalisée qui applique la contrainte :

    1. Créez un fichier YAML qui définit la règle d'administration :

      name: RESOURCE_TYPE/RESOURCE_ID/policies/custom.CONSTRAINT_NAME
      spec:
        rules:
        - enforce: true
      

      Remplacez les éléments suivants :

      • RESOURCE_TYPE : type de Cloud de Confiance ressource. Il doit s'agir de l'une des valeurs suivantes :

        • organizations
        • folders
        • projects
      • RESOURCE_ID: ID de l'organisation, du dossier ou du projet.

      Pour rendre la règle d'administration conditionnelle sur un tag, ajoutez un bloc condition au champ rules. Si vous ajoutez une règle conditionnelle à une règle d'administration, vous devez ajouter au moins une règle non conditionnelle, sinon la règle ne pourra pas être enregistrée. Pour en savoir plus, consultez la section Définir une règle d'administration avec des tags.

    2. Pour définir la règle d'administration en mode dry run, spécifiez la dryRunSpec valeur pour le --update-mask flag dans la gcloud org-policies set-policy commande :

      gcloud org-policies set-policy POLICY_FILEPATH \
          --update-mask=dryRunSpec
      

      Remplacez POLICY_FILEPATH par le chemin d'accès au fichier YAML que vous avez créé à l'étape précédente.

    3. Pour tester l'impact de l'application de cette règle d'administration, utilisez la gcloud policy-intelligence simulate org-policy commande :

      gcloud policy-intelligence simulate org-policy \
          --organization=ORGANIZATION_ID \
          --policy-path=POLICY_FILEPATH
      

      Remplacez ORGANIZATION_ID par l'ID de votre organisation.

    4. Une fois que vous avez vérifié que la règle d'administration fonctionne comme prévu en mode dry run, définissez la règle active en spécifiant la valeur spec pour le flag --update-mask dans la commande gcloud org-policies set-policy :

      gcloud org-policies set-policy POLICY_FILEPATH \
          --update-mask=spec
      

      L'application complète des modifications apportées à votre règle d'administration peut prendre jusqu'à 15 minutes.

Étape suivante