Empêcher la création de VM qui utilisent les métadonnées du conteneur

Pour vous assurer que les ressources de votre organisation n'utilisent pas l'agent de démarrage de conteneur obsolète ni les métadonnées gce-container-declaration associées, Google vous recommande d'appliquer une règle d'administration. La contrainte gérée compute.managed.disableVmsWithContainerStartupAgent, lorsqu'elle est appliquée, désactive la création de ressources qui utilisent les métadonnées obsolètes.

Cette page explique comment effectuer les opérations suivantes :

  • Appliquez une règle d'organisation pour désactiver la création d'instances Compute Engine qui utilisent l'agent de démarrage de conteneur.
  • Surveillez l'impact de la règle d'administration en l'appliquant en mode dry run.
  • Identifiez les projets qui tentent d'utiliser l'agent obsolète avec l'explorateur de journaux.

Appliquer la règle d'administration pour désactiver la création de VM qui utilisent les métadonnées de conteneur

Pour empêcher la création de ressources qui utilisent l'agent de démarrage de conteneur obsolète, Google vous recommande d'appliquer une règle d'administration. La contrainte constraints/compute.managed.disableVmsWithContainerStartupAgent empêche la création de ressources avec la clé de métadonnées gce-container-declaration. Cette contrainte n'affecte pas les instances ni les modèles d'instance existants.

Vous pouvez appliquer cette contrainte à l'aide de la console Google Cloud , de Google Cloud CLI ou de l'API Compute Engine.

Console

Pour définir la règle d'administration à l'aide de la console, procédez comme suit :

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

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

  2. Dans le sélecteur de projet, sélectionnez le projet, le dossier ou l'organisation dont vous souhaitez modifier les règles d'administration.

    La page Règles d'administration affiche la liste des contraintes de règles d'administration disponibles.

  3. Sélectionnez la contrainte Désactiver la création d'instances Compute Engine qui utilisent l'agent de démarrage de conteneur obsolète (konlet) dans la liste des contraintes. La page Détails de la règle qui s'affiche décrit la contrainte et fournit des informations sur son application.

  4. Pour mettre à jour la règle d'administration pour cette ressource, cliquez sur Gérer la règle.

  5. Sur la page Modifier la règle, cliquez sur Remplacer la règle parente.

  6. Sélectionnez Ajouter une règle.

  7. Sous Application, sélectionnez Activé.

  8. Si vous le souhaitez, vous pouvez cliquer sur Tester les modifications pour prévisualiser l'impact de la modification de votre règle d'administration avant son application. Pour en savoir plus sur le test des modifications apportées aux règles d'administration, consultez Tester les modifications apportées aux règles d'administration à l'aide de Policy Simulator.

  9. Pour appliquer la règle d'administration en mode dry run, cliquez sur Définir la règle de dry run. Pour en savoir plus, consultez Créer une règle d'administration en mode dry run à partir d'une règle active.

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

gcloud

  1. Créez un fichier YAML pour définir la règle d'administration.

    name: RESOURCE_TYPE/RESOURCE_ID/policies/compute.managed.disableVmsWithContainerStartupAgent
    spec:
      rules:
      - enforce: true
    dryRunSpec:
      rules:
      - enforce: true
    

    Remplacez les éléments suivants :

    • RESOURCE_TYPE avec organizations, folders ou projects.

    • RESOURCE_ID avec l'ID de votre organisation, l'ID du dossier, l'ID du projet ou le numéro du projet, selon le type de ressource spécifié dans RESOURCE_TYPE.

    L'exemple suivant montre un fichier YAML qui applique la règle d'administration pour le projet dont l'ID est 123456 :

    name: projects/123456/policies/compute.managed.disableVmsWithContainerStartupAgent
    spec:
      rules:
      - enforce: true
    dryRunSpec:
      rules:
      - enforce: true
    

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

  2. Exécutez la commande org-policies set-policy avec le flag dryRunSpec pour définir la règle d'administration en mode dry run :

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

    Remplacez POLICY_PATH par le chemin d'accès complet au fichier YAML de votre règle d'administration.

    Pour en savoir plus sur les règles d'administration en mode dry run, consultez Créer une règle d'administration en mode dry run.

  3. Utilisez la commande policy-intelligence simulate orgpolicy pour prévisualiser l'impact de la modification de votre règle d'administration avant qu'elle ne soit appliquée :

    gcloud policy-intelligence simulate orgpolicy \
      --organization=ORGANIZATION_ID \
      --policies=POLICY_PATH
    

    Remplacez les éléments suivants :

    • ORGANIZATION_ID par l'ID de votre organisation, par exemple 1234567890123. Il n'est pas possible de simuler des modifications dans plusieurs organisations.

    • POLICY_PATH par le chemin d'accès complet au fichier YAML de votre règle d'administration.

    Pour en savoir plus sur le test des modifications apportées aux règles d'administration, consultez Tester les modifications apportées aux règles d'administration à l'aide de Policy Simulator.

  4. Après avoir vérifié que la règle d'administration en mode dry run fonctionne comme prévu, définissez la règle active avec la commande org-policies set-policy et le flag spec :

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

    Remplacez POLICY_PATH par le chemin d'accès complet au fichier YAML de votre règle d'administration.

REST

Pour définir la règle d'administration, utilisez la méthode organizations.policies.create.

POST https://orgpolicy.googleapis.com/v2/{parent=organizations/ORGANIZATION_ID}/policies

Le corps JSON de la requête contient la définition d'une règle d'administration. Si cette contrainte n'est pas compatible avec les paramètres, omettez le bloc parameters sous rules.

{
  "name": "RESOURCE_TYPE/RESOURCE_ID/policies/compute.managed.disableVmsWithContainerStartupAgent",
  "spec": {
    "rules": [
      {
        "enforce": true,
      }
    ]
  },
  "dryRunSpec": {
    "rules": [
      {
        "enforce": true,
      }
    ]
  }
}

Remplacez les éléments suivants :

  • RESOURCE_TYPE avec organizations, folders ou projects.

  • RESOURCE_ID avec l'ID de votre organisation, l'ID du dossier, l'ID du projet ou le numéro du projet, selon le type de ressource spécifié dans RESOURCE_TYPE.

L'exemple suivant montre un corps de requête qui applique la règle d'administration de l'organisation au projet dont l'ID est 123456 :

  {
    "name": "projects/123456/policies/compute.managed.disableVmsWithContainerStartupAgent",
    "spec": {
      "rules": [
        {
          "enforce": true,
        }
      ]
    },
    "dryRunSpec": {
      "rules": [
        {
          "enforce": true,
        }
      ]
    }
  }
  ```

Optionally, to make the organization policy conditional on a tag, add a
`condition` block to the `rules`. If you add a conditional rule to an
organization policy, you must add at least one unconditional rule or the
policy cannot be saved. For more details, see
[Setting an organization policy with tags](/resource-manager/docs/organization-policy/tags-organization-policy).

For more information about dry-run organization policies, see
[Create an organization policy in dry-run mode](/resource-manager/docs/organization-policy/dry-run-policy).

Surveiller l'utilisation des métadonnées obsolètes en appliquant la règle en mode de simulation

Au lieu d'appliquer directement la règle, ce qui bloque la création d'instances utilisant les métadonnées de déclaration de conteneur, vous pouvez l'appliquer en mode simulation. Ce paramètre vous permet de surveiller et d'enregistrer toutes les actions que la règle peut bloquer, sans interférer réellement avec les opérations. Pour en savoir plus, consultez Créer une règle d'administration en mode dry run.

Lorsqu'une action déclenche la stratégie de simulation (par exemple, si vous tentez de créer une instance avec la clé de métadonnées gce-container-declaration), une entrée de journal est générée dans Cloud Audit Logs.

Pour identifier les projets qui tentent d'utiliser l'agent obsolète, procédez comme suit :

  1. Dans la console Google Cloud , accédez à la page Explorateur de journaux.

    Accéder à l'explorateur de journaux

  2. Dans le volet Requête, saisissez la requête suivante :

    protoPayload.metadata.dryRun="true"
    protoPayload.methodName="CheckOrgPolicy"
    protoPayload.resourceName =~ "/compute.managed.disableVmsWithContainerStartupAgent"
    
  3. Cliquez sur Exécuter la requête.

  4. Identifiez les projets qui tentent d'utiliser l'agent obsolète en examinant les entrées de journal. Les journaux des cas de non-respect en mode test présentent les caractéristiques suivantes :

    • Ils sont liés à orgpolicy.googleapis.com.
    • Le champ protoPayload.metadata.dryRun est défini sur true.
    • La contrainte constraints/compute.managed.disableVmsWithContainerStartupAgent est incluse dans les détails de la non-conformité.
  5. Consultez les informations des journaux d'audit pour comprendre où et pourquoi l'agent obsolète est toujours utilisé. Ces informations peuvent guider les efforts de migration de ces charges de travail vers des alternatives compatibles.

  6. Une fois que vous avez vérifié que la règle d'administration en mode dry run fonctionne comme prévu, appliquez la règle en remplaçant l'état d'application du mode dry run par le mode actif.

Pour en savoir plus sur l'utilisation de l'explorateur de journaux, consultez Afficher les journaux à l'aide de l'explorateur de journaux.

Étapes suivantes