Cette page explique comment utiliser une règle d'administration dans le mode de simulation pour surveiller l'impact d'une modification de règle sur vos workflows avant son application.
Une règle d'administration en mode simulation est créée et appliquée de la même manière que les autres règles d'administration d'administration. Les violations de la règle sont consignées dans les journaux d'audit, mais les actions non conformes ne sont pas refusées.
Avant de commencer
Pour utiliser une règle d'organisation en mode de simulation, vous devez avoir activé la facturation pour votre projet Google Cloud . Pour savoir comment vérifier si la facturation est activée pour un projet, consultez Vérifier l'état de facturation de vos projets.
Pour en savoir plus sur les règles d'administration et leurs contraintes, ainsi que sur leur fonctionnement, consultez la section Présentation du service de règles d'administration.
Rôles 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.
Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.
Ce rôle prédéfini contient les autorisations requises pour gérer les règles d'administration. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
Les autorisations suivantes sont requises pour gérer les règles d'administration :
-
orgpolicy.constraints.list
-
orgpolicy.policies.create
-
orgpolicy.policies.delete
-
orgpolicy.policies.list
-
orgpolicy.policies.update
-
orgpolicy.policy.get
-
orgpolicy.policy.set
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Vous pouvez déléguer l'administration des règles d'administration d'administration en ajoutant des conditions IAM à la liaison de rôle "Administrateur des règles d'administration". Pour contrôler les ressources sur lesquelles un compte principal peut gérer les règles d'administration, vous pouvez rendre l'association de rôle conditionnelle à un tag spécifique. Pour en savoir plus, consultez Utiliser des contraintes.
Limites
Les seules contraintes de règles d'administration pouvant être utilisées dans les règles d'administration de dry run sont les suivantes :
- Restreindre l'utilisation des ressources
- Restreindre l'utilisation des points de terminaison
- Limiter les versions TLS
- Restreindre les suites de chiffrement TLS
- Contraintes personnalisées
- Contraintes gérées
Toute tentative de création d'une règle d'administration en mode de simulation à l'aide d'une autre contrainte entraîne une erreur.
Créer une règle d'administration en mode dry run
Utiliser des paramètres de liste
Vous pouvez créer une règle d'administration en mode simulation pour une contrainte à l'aide de la consoleGoogle Cloud ou de Google Cloud CLI. Les exemples suivants montrent comment créer une règle d'administration en mode simulation qui audite l'effet de la contrainte gérée compute.managed.restrictProtocolForwardingCreationForTypes
.
Console
Dans la console Google Cloud , accédez à la page Règles d'administration.
Dans le sélecteur de projets, sélectionnez la ressource pour laquelle vous souhaitez définir la règle d'administration.
Sélectionnez la contrainte Restreint l'utilisation du transfert de protocole dans la liste de la page Règles d'administration.
Sélectionnez l'onglet Exécution à blanc.
Cliquez sur Gérer la règle de dry run.
Sur la page Modifier la règle de simulation, sélectionnez Remplacer la règle parente.
Cliquez sur Ajouter une règle.
Sous Application, sélectionnez Activé.
Sous Paramètres, sélectionnez Modifier
.Dans le volet Modifier les valeurs des paramètres, sélectionnez Défini par l'utilisateur.
Dans la zone Valeurs définies par l'utilisateur, saisissez
EXTERNAL
, puis cliquez sur Enregistrer.Cliquez sur Tester les modifications pour simuler l'effet de cette règle d'administration. Pour en savoir plus, consultez la section Tester les modifications apportées aux règles d'administration à l'aide de Policy Simulator.
Pour appliquer la règle d'administration en mode de simulation, cliquez sur Définir la règle de dry run. Vous pouvez également définir la règle pour le direct en cliquant sur Définir la règle.
Vous pouvez vérifier l'état de votre règle d'administration en mode simulation en accédant à l'onglet Simulation d'une contrainte de règle d'administration.
Pour les projets auxquels une règle d'administration en mode de simulation est appliquée, vous pouvez afficher les journaux d'audit en cliquant sur Afficher les journaux de refus. Pour cette règle d'administration, les journaux d'audit affichent les cas de non-respect comme si la contrainte Restreint l'utilisation du transfert de protocole était appliquée pour n'autoriser que les déploiements de transfert de protocole EXTERNAL
.
gcloud
Pour créer une règle d'administration en mode simulation, créez un fichier YAML qui définit la contrainte avec dryRunSpec
. Exemple :
name: RESOURCE_TYPE/RESOURCE_ID/policies/compute.managed.restrictProtocolForwardingCreationForTypes dryRunSpec: rules: - enforce: true parameters: allowedSchemes: - EXTERNAL
Remplacez les éléments suivants :
RESOURCE_TYPE
avecorganizations
,folders
ouprojects
.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é dansRESOURCE_TYPE
.
Cette règle d'administration n'appliquera pas la contrainte compute.managed.restrictProtocolForwardingCreationForTypes
, mais les journaux d'audit afficheront les cas de non-respect comme si c'était le cas.
Vous pouvez définir une règle d'administration active et une règle d'administration en mode simulation dans le même fichier YAML, si vous définissez à la fois spec
et dryRunSpec
. Exemple :
name: RESOURCE_TYPE/RESOURCE_ID/policies/compute.managed.restrictProtocolForwardingCreationForTypes spec: rules: - values: allowedValues: - INTERNAL - EXTERNAL dryRunSpec: rules: - values: allowedValues: - INTERNAL
Pour appliquer une règle d'administration en mode de simulation, utilisez la commande org-policies set policy
. Pour mettre à jour une règle d'administration existante en mode simulation avec de nouvelles contraintes, utilisez l'indicateur --update-mask
. Exemple :
gcloud org-policies set-policy POLICY_PATH \ --update-mask=UPDATE_MASK
Remplacez les éléments suivants :
POLICY_PATH
par le chemin d'accès complet au fichier YAML de votre règle d'administration.UPDATE_MASK
avecspec
pour ne mettre à jour que la règle active, oudryRunSpec
pour ne mettre à jour que la règle d'administration en mode simulation. Vous pouvez également utiliser*
pour mettre à jour les champsspec
etdryRunSpec
. Si ce champ n'est pas défini lors de la mise à jour d'une règle d'organisation existante, cette commande générera une erreur et la règle d'organisation ne sera pas mise à jour.
Vous pouvez vérifier que la règle d'administration en mode de simulation est définie à l'aide de la commande org-policies describe
. Le champ dryRunSpec
ne s'affiche que s'il existe dans la règle d'administration.
Cette règle d'administration appliquerait la contrainte compute.managed.restrictProtocolForwardingCreationForTypes
de sorte que toutes les valeurs soient autorisées. Toutefois, les journaux d'audit affichent les cas de non-respect comme si seuls les déploiements de transfert de protocole INTERNAL
étaient autorisés.
Utiliser des règles booléennes
Vous pouvez créer une règle d'administration en mode simulation pour une contrainte avec des règles booléennes à l'aide de la console Google Cloud ou de Google Cloud CLI. Les exemples suivants montrent comment créer une règle d'administration en mode simulation qui audite l'effet d'une règle d'administration personnalisée.
Console
Dans la console Google Cloud , accédez à la page Règles d'administration.
Dans le sélecteur de projets, sélectionnez la ressource pour laquelle vous souhaitez définir la règle d'administration.
Sélectionnez la règle d'administration personnalisée que vous souhaitez appliquer dans la liste de la page Règles d'administration.
Sélectionnez l'onglet Exécution à blanc.
Cliquez sur Gérer la règle de dry run.
Sur la page Modifier la règle de simulation, sélectionnez Remplacer la règle parente.
Cliquez sur Ajouter une règle.
Sous Application, sélectionnez Activé, puis cliquez sur OK.
Pour appliquer la règle d'administration en mode de simulation, cliquez sur Définir la règle de dry run. Une fois que vous avez vérifié que la règle d'administration en mode simulation fonctionne comme prévu, vous pouvez définir la règle active en cliquant sur Définir la règle.
Vous pouvez vérifier l'état de votre règle d'administration en mode simulation en accédant à l'onglet Simulation d'une contrainte de règle d'administration.
Pour les projets auxquels une règle d'administration en mode de simulation est appliquée, vous pouvez afficher les journaux d'audit en cliquant sur Afficher les journaux de refus. Pour cette règle d'administration, les journaux d'audit affichent les cas de non-respect comme si la règle d'administration personnalisée était appliquée.
gcloud
Pour créer une règle d'administration en mode simulation, créez un fichier YAML qui définit la contrainte avec dryRunSpec
. Exemple :
name: RESOURCE_TYPE/RESOURCE_ID/policies/CONSTRAINT_NAME dryRunSpec: rules: - enforce: true
Remplacez les éléments suivants :
RESOURCE_TYPE
avecorganizations
,folders
ouprojects
.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é dansRESOURCE_TYPE
.CONSTRAINT_NAME
par le nom de votre contrainte personnalisée. Exemple :custom.disableGkeAutoUpgrade
Cette règle d'administration n'appliquera pas la contrainte personnalisée, mais les journaux d'audit afficheront les cas de non-respect comme si c'était le cas.
Vous pouvez définir une règle d'administration active et une règle d'administration en mode simulation dans le même fichier YAML, si vous définissez à la fois spec
et dryRunSpec
. Exemple :
name: RESOURCE_TYPE/RESOURCE_ID/policies/CONSTRAINT_NAME spec: rules: - enforce: false dryRunSpec: rules: - enforce: true
Pour appliquer une règle d'administration en mode de simulation, utilisez la commande org-policies set policy
. Pour mettre à jour une règle d'administration existante en mode simulation avec de nouvelles contraintes, utilisez l'indicateur --update-mask
. Exemple :
gcloud org-policies set-policy POLICY_PATH \ --update-mask=UPDATE_MASK
Remplacez les éléments suivants :
POLICY_PATH
par le chemin d'accès complet au fichier YAML de votre règle d'administration.UPDATE_MASK
avecspec
pour ne mettre à jour que la règle active, oudryRunSpec
pour ne mettre à jour que la règle d'administration en mode simulation. Vous pouvez également utiliser*
pour mettre à jour les champsspec
etdryRunSpec
. Si ce champ n'est pas défini lors de la mise à jour d'une règle d'organisation existante, cette commande générera une erreur et la règle d'organisation ne sera pas mise à jour.
Vous pouvez vérifier qu'une règle d'administration en mode de simulation est définie à l'aide de la commande org-policies describe
. Le champ dryRunSpec
ne s'affiche que s'il existe dans la règle d'administration.
Cette règle d'administration n'applique pas la contrainte personnalisée. Toutefois, les journaux d'audit affichent les cas de non-respect de la contrainte personnalisée.
Créer une règle d'administration en mode dry run à partir d'une règle active
Vous pouvez utiliser une règle d'administration existante comme point de départ pour une règle d'administration en mode dry run. Vous pouvez le faire pour voir l'impact d'une modification de votre règle existante sur votre environnement.
Vous pouvez créer une règle d'administration en mode simulation à partir d'une règle existante à l'aide de la console Google Cloud ou de Google Cloud CLI.
Console
Dans la console Google Cloud , accédez à la page Règles d'administration.
Dans le sélecteur de projets, sélectionnez une ressource sur laquelle la contrainte Restreindre l'utilisation des services de ressources est déjà configurée.
Sélectionnez la contrainte Restreindre l'utilisation des services de ressources dans la liste de la page Règles d'administration.
Sélectionnez l'onglet En direct.
Cliquez sur Gérer la règle.
Cliquez sur Ajouter une règle.
Dans Valeurs de règles, sélectionnez Personnalisé.
Sous Type de règle, sélectionnez Refuser.
Dans la zone Valeurs personnalisées, saisissez
appengine.googleapis.com
.Cliquez sur OK, puis sur Définir la règle d'exécution à sec.
gcloud
Pour créer une règle d'organisation en mode simulation basée sur une règle d'organisation active existante, obtenez la règle actuelle pour la ressource à l'aide de la commande org-policies describe
. Exemple :
gcloud org-policies describe gcp.restrictServiceUsage \ --project=PROJECT_ID
Remplacez PROJECT_ID
par l'ID ou le numéro du projet dans lequel cette règle d'administration de l'organisation est configurée.
Le résultat doit ressembler à ce qui suit :
name: projects/123456789012/policies/gcp.restrictServiceUsage spec: etag: CJy93KEGEKCJw/QB rules: - values: allowedValues: - compute.googleapis.com updateTime: '2023-04-12T21:11:56.512804Z'
Copiez le résultat de cette commande dans un fichier temporaire. Modifiez ce fichier pour supprimer les champs etag
et updateTime
, et remplacez le champ spec
par dryRunSpec
. Apportez les modifications souhaitées à la configuration de la contrainte dans votre règle d'administration en mode simulation.
Le fichier YAML final devrait ressembler à ce qui suit :
name: projects/123456789012/policies/gcp.restrictServiceUsage dryRunSpec: rules: - values: allowedValues: - compute.googleapis.com - appengine.googleapis.com
Pour appliquer la règle d'administration en mode de simulation, utilisez org-policies set policy
avec l'indicateur --update-mask
. Exemple :
gcloud org-policies set-policy POLICY_PATH \ --update-mask=dryRunSpec
Remplacez POLICY_PATH
par le chemin d'accès complet à votre fichier YAML temporaire de règle d'administration.
Supprimer une règle d'administration en mode de simulation
Vous pouvez supprimer une règle d'administration en mode simulation à l'aide de la console Google Cloud ou de Google Cloud CLI.
Console
Dans la console Google Cloud , accédez à la page Règles d'administration.
Dans le sélecteur de projets, sélectionnez la ressource pour laquelle vous souhaitez définir la règle d'administration.
Sélectionnez la contrainte Restreindre l'utilisation des services de ressources dans la liste de la page Règles d'administration.
Sélectionnez l'onglet Exécution à blanc.
Cliquez sur Supprimer la règle de dry run.
gcloud
Pour supprimer une règle d'administration en mode dry run, créez un fichier YAML qui définit la règle d'administration sans spécification de dry run. Exemple :
name: RESOURCE_TYPE/RESOURCE_ID/policies/gcp.restrictServiceUsage spec: rules: - values: allowedValues: - container.googleapis.com
Remplacez les éléments suivants :
RESOURCE_TYPE
avecorganizations
,folders
ouprojects
.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é dansRESOURCE_TYPE
.
Ensuite, exécutez la commande org-policies set policy
avec l'option --update-mask
définie sur dryRunSpec
. Exemple :
gcloud org-policies set-policy POLICY_PATH \ --update-mask=dryRunSpec
Cela met à jour la règle d'administration existante pour supprimer la spécification d'exécution à blanc et ignorer la partie active de la spécification.
Pour supprimer à la fois les règles d'administration en mode actif et règles d'administration en mode simulation, utilisez la commande org-policies delete
. Exemple :
gcloud org-policies delete CONSTRAINT_NAME \ --RESOURCE_TYPE=RESOURCE_ID
Remplacez les éléments suivants :
CONSTRAINT_NAME
par le nom de la contrainte que vous souhaitez supprimer. Exemple :gcp.restrictServiceUsage
RESOURCE_TYPE
avecorganizations
,folders
ouprojects
.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é dansRESOURCE_TYPE
.
Évaluation efficace des règles d'administration en mode de simulation
Les règles d'administration en mode dry run sont héritées de la même manière que les autres règles d'administration. Si une règle d'administration en mode simulation est définie sur une ressource d'organisation, elle est héritée par toutes les ressources descendantes, sauf si elle est remplacée à un niveau inférieur de la hiérarchie.
L'évaluation de la règle en vigueur indique le résultat des règles d'administration fusionnées sur cette ressource. Par conséquent, les ajustements apportés à la règle d'administration en vigueur sont reflétés dans la règle d'administration effective en mode de simulation, si la règle en mode de simulation est héritée plutôt que définie localement.
Par exemple, considérons une ressource d'organisation, Organization A
, avec une règle d'administration active définie sur enforced: false
et une règle d'administration en mode simulation définie sur enforced: true
. Une ressource enfant, Folder B
, définit également la règle d'administration active sur enforced: false
et hérite de la règle d'administration en mode dry run. Sur Folder B
, la règle active définie signifie que l'évaluation de la règle en vigueur de la règle d'administration en mode de simulation est également enforce: false
, ce qui remplace la règle d'administration en mode de simulation définie dans son organisation parente.
Project X
, ressource enfant de Folder B
, définit la stratégie en direct sur enforced: true
. Comme pour Folder B
, l'évaluation effective de la règle d'administration en mode simulation pour Project X
est enforced: true
, car la règle active est définie.
Une autre ressource enfant de Folder B
, Project Y
, définit la règle d'administration en mode simulation sur enforced: true
. Elle hérite de la règle d'administration de sa ressource parente. L'évaluation effective est donc enforced: false
pour la règle active et enforced: true
pour la règle d'administration en mode simulation.
Ressource | Définir une règle d'administration en direct | Règle d'administration active pour l'organisation | Définir une règle d'administration en mode de simulation | Règle d'administration effective en mode dry run |
---|---|---|---|---|
Organisation A | enforced: false |
enforced: false |
enforced: true |
enforced: true |
Dossier B | enforced: false |
enforced: false |
Aucun | enforced: false |
Dossier C | Aucun | enforced: false |
Aucun | enforced: true |
Projet X | enforced: true |
enforced: true |
Aucun | enforced: true |
Projet Y | Aucun | enforced: false |
enforced: true |
enforced: true |
Analyser les effets d'une règle d'administration en mode de simulation
Une règle d'administration en mode dry run ne bloque aucune opération lorsqu'elle est appliquée. Pour voir l'effet qu'aurait votre règle d'administration, vous pouvez consulter les journaux d'audit des règles d'administration.
Les journaux d'audit des règles d'administration pour les règles d'administration actives et celles en mode simulation sont générés en fonction de l'autorisation ou du refus de l'opération par les règles appliquées à la ressource concernée. Le tableau suivant décrit les situations dans lesquelles un journal d'audit des règles d'administration est généré :
Règle d'administration active | Règle d'administration en mode dry run | Journal d'audit généré |
---|---|---|
Autoriser | Autoriser | Non |
Autoriser | Refuser | Journal d'audit en mode dry run uniquement |
Refuser | Autoriser | Journal d'audit en mode réel et en mode dry run |
Refuser | Refuser | Journal d'audit en mode réel et en mode dry run |
Les cas de non-respect des règles d'administration en mode de simulation s'affichent à côté de ceux en mode actif dans les journaux d'audit. Exemple :
{
"protoPayload": {
"@type": "type.googleapis.com/google.cloud.audit.AuditLog",
"status": {
"code": 7,
"message": "PERMISSION_DENIED"
},
"authenticationInfo": {},
"requestMetadata": {
"callerIp": "1.2.3.4",
"requestAttributes": {},
"destinationAttributes": {}
},
"serviceName": "appengine.googleapis.com",
"methodName": "google.api.appengine.v1.appengine.apps.services.get",
"resourceName": "projects/sur-project-test-3",
"metadata": {
"constraint": "constraints/gcp.restrictServiceUsage",
"checkedValue": "appengine.googleapis.com",
"liveResult": "ALLOWED",
"@type": "type.googleapis.com/google.cloud.audit.OrgPolicyDryRunAuditMetadata",
"dryRunResult": "DENIED"
}
},
"insertId": "1f2bvoxcmg1",
"resource": {
"type": "audited_resource",
"labels": {
"project_id": "sur-project-test-3",
"service": "appengine.googleapis.com",
"method": "google.api.appengine.v1.appengine.apps.services.get"
}
},
"timestamp": "2022-06-16T19:42:58.244990928Z",
"severity": "WARNING",
"logName": "projects/sur-project-test-3/logs/cloudaudit.googleapis.com%2Fpolicy",
"receiveTimestamp": "2022-06-16T19:42:59.572025716Z"
}
Vous pouvez utiliser l'explorateur de journaux pour n'interroger que les cas de non-respect des règles de l'organisation en mode simulation.
Console
Dans la console Google Cloud , vous pouvez utiliser l'explorateur de journaux pour récupérer les entrées du journal d'audit de votre projet, dossier ou organisation Google Cloud :
Dans la console Google Cloud , accédez à la page Journaux > Explorateur de journaux.
Sélectionnez un projet, un dossier ou une organisation Google Cloud existants.
Dans le volet Générateur de requêtes, procédez comme suit :
Dans Type de ressource, sélectionnez la ressource Google Cloud dont vous souhaitez afficher les journaux d'audit.
Dans Nom du journal, sélectionnez le type de journal d'audit policy.
Dans le volet Requête, saisissez ce qui suit :
protoPayload.metadata.dryRunResult = "DENIED" AND \ protoPayload.metadata.liveResult = "ALLOWED"
Si vous rencontrez des problèmes lors de la tentative d'affichage de journaux dans l'explorateur de journaux, consultez les informations de dépannage.
Pour en savoir plus sur l'utilisation de l'explorateur de journaux pour effectuer des requêtes, consultez la page Créer des requêtes dans l'explorateur de journaux.
gcloud
Google Cloud CLI fournit une interface de ligne de commande à l'API Logging. Fournissez un identifiant de ressource valide dans chacun des noms de journaux. Par exemple, si votre requête inclut un ID de projet, l'identifiant de projet que vous spécifiez doit faire référence au nom du projet actuellement sélectionné.
Pour lire les entrées de journal d'audit concernant les cas de non-respect des règles d'administration au niveau de l'organisation en mode simulation, exécutez la commande suivante :
gcloud logging read protoPayload.metadata.dryRunResult = "DENIED" AND \ protoPayload.metadata.liveResult = "ALLOWED" \ --RESOURCE_TYPE=RESOURCE_ID \
Remplacez les éléments suivants :
RESOURCE_TYPE
avecorganization
,folder
ouproject
.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é dansRESOURCE_TYPE
.
Ajoutez l'option --freshness
à votre commande pour lire les journaux datant de plus d'une journée.
Pour en savoir plus sur l'utilisation de gcloud CLI, consultez la page gcloud logging read
.
Si votre organisation comporte de nombreux projets, vous pouvez utiliser des récepteurs agrégés pour agréger et acheminer les entrées de journaux d'audit de tous les projets de votre organisation vers une table BigQuery. Pour en savoir plus sur la création de récepteurs agrégés, consultez Générer et acheminer des journaux au niveau de l'organisation vers des destinations compatibles.
Étapes suivantes
Pour en savoir plus sur la création et la gestion des contraintes de règles d'administration, consultez Utiliser des contraintes.