Analyser les règles d'administration

Cette page contient des informations sur l'analyse des paramètres de vos règles d'administration pour savoir quelles ressources sont couvertes par chaque règle d'administration. Avec l'analyseur de règles pour les règles d'administration, vous pouvez créer une requête d'analyse pour obtenir des informations sur les règles d'administration personnalisées et prédéfinies.

Une requête d'analyse est composée d'un champ d'application et d'une contrainte.

  • Constraint (Contrainte) : spécifie le nom de ressource d'une contrainte.
  • Champ d'application: spécifie l'organisation à laquelle l'analyse doit être appliquée. Toutes les organisations les règles avec la contrainte spécifiée définie dans ce champ d'application sont incluses dans l'analyse.

Pour en savoir plus sur les règles d'administration, consultez la Présentation du service de règles d'administration Pour en savoir plus sur la création de contraintes personnalisées, consultez la page Créer et gérer des contraintes personnalisées.

Avant de commencer

  • Enable the Cloud Asset API.

    Enable the API

    Vous devez activer l'API dans le projet ou l'organisation que vous utiliserez pour envoyer la requête. Il ne doit pas nécessairement s'agir de la même ressource que celle utilisée pour le champ d'application de votre requête auxquelles vous souhaitez vous connecter.

  • Facultatif: si vous souhaitez exécuter plus de 20 requêtes d'analyse des stratégies par organisation par jour, assurez-vous d'avoir activé le service Premium à l'échelle de l'organisation niveau de Security Command Center. Pour en savoir plus, consultez la section Facturation questions.

Rôles et autorisations requis

Pour obtenir les autorisations nécessaires pour exécuter une analyse des règles d'administration de l'organisation, demandez à votre administrateur de vous accorder les rôles IAM suivants sur la ressource de l'organisation dans laquelle vous souhaitez effectuer l'analyse :

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.

Ces rôles prédéfinis contiennent les autorisations requises pour exécuter une analyse des règles de l'organisation. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Les autorisations suivantes sont requises pour exécuter une analyse des règles d'administration :

  • Pour effectuer l'analyse:
    • cloudasset.assets.analyzeOrgPolicy
    • cloudasset.assets.searchAllResources
    • cloudasset.assets.searchAllIamPolicies
  • Pour afficher les contraintes personnalisées: orgpolicy.customConstraints.get

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

Tarifs et quotas

Policy Analyzer pour les règles d'administration à grande échelle (plus de 20 requêtes) par organisation et par jour) et visualisations d'héritage, ne sont disponibles que pour clients avec activations de Security Command Center au niveau de l'organisation.

Le quota de Policy Analyzer pour les règles d'administration est partagé entre tous Policy Analyzer. Pour en savoir plus, consultez Questions concernant la facturation

Analyser les règles configurées

Une règle d'administration est construite à partir d'une contrainte et de conditions facultatives selon laquelle cette contrainte est appliquée. Vous pouvez utiliser Policy Analyzer pour renvoyer une liste de règles d'administration avec un une contrainte particulière et les ressources auxquelles ces stratégies sont associées.

Pour chaque règle d'administration détectée dans le champ d'application de la requête, l'analyseur de règles renvoie une entrée de résultat. Une entrée de résultat contient les champs suivants:

  • consolidatedPolicy: ressource à laquelle la règle d'administration est et l'application effective des règles sur la ressource concernée règles d'évaluation hiérarchiques.

  • project: ID de la ressource du projet pour laquelle cette règle consolidée à votre place.

  • folders : ID de toutes les ressources de dossier qui sont des ancêtres de la ressource à laquelle la stratégie de l'organisation est associée.

  • organization : ID de la ressource de l'organisation qui est l'ancêtre de la ressource à laquelle la stratégie de l'organisation est associée.

  • policyBundle: règle d'administration entièrement configurée associée à l'élément ci-dessus et les règles d'administration définies sur ses ancêtres la hiérarchie des ressources.

Si vos ressources sont protégées par un périmètre de service VPC Service Controls, vous devez créer une règle de sortie ; située dans le périmètre de votre ressource "Organisation" et qui permet d'accéder le service cloudasset.googleapis.com et google.cloud.asset.v1.AssetService.SearchAllResources. Si vous ne une règle de sortie, la requête échoue et renvoie NETWORK_NOT_IN_SAME_SERVICE_PERIMETER erreur. Pour en savoir plus, consultez Requêtes de débogage bloquées par VPC Service Controls

Console

  1. Dans la console Google Cloud, accédez à la page Policy Analyzer.

    Accéder à Policy Analyzer

  2. Dans la section Analyser les règles d'administration, recherchez le volet intitulé Où des règles d'administration spécifiques sont-elles configurées ?, puis cliquez sur Créer une requête dans ce volet.

  3. Dans la zone Sélectionnez l'organisation de la requête, sélectionnez l'organisation pour laquelle vous voulez analyser les règles d'administration.

  4. Sélectionnez le type de contrainte que vous souhaitez analyser. Pour une sélectionnez Contrainte intégrée. Pour définir une contrainte personnalisée, sélectionnez Contrainte personnalisée.

  5. Saisissez le nom de la contrainte que vous souhaitez analyser. Le préfixe du type de contrainte que vous analysez est déjà inclus. Par exemple : Pour la contrainte de restriction de domaine prédéfinie, saisissez iam.allowedPolicyMemberDomains, puis, dans le cas d'une contrainte personnalisée, saisissez son son nom, par exemple disableGkeAutoUpgrade.

  6. Cliquez sur Analyser, puis sur Exécuter la requête. La page du rapport affiche la requête que vous avez saisis, ainsi qu'une table de résultats répertoriant toutes les ressources auxquelles cette contrainte est directement appliquée.

  7. Vous pouvez enregistrer cette requête pour la consulter ultérieurement en cliquant sur Copier l'URL de la requête. Pour afficher cette requête, accédez à l'URL générée.

  8. Vous pouvez visualiser l'héritage de la contrainte que vous avez analysée en sélectionnant au moins une ressource dans la liste, puis en cliquant sur Afficher l'héritage. Vous pouvez aussi accéder immédiatement à la visualisation lorsque vous créez votre requête d'analyse en cliquant sur Analyser, puis Visualiser. Pour en savoir plus, consultez Visualiser l'héritage.

gcloud

Obtenir une analyse de l'application d'une contrainte de règle d'administration au sein d'une organisation, utilisez Commande gcloud asset analyze-org-policies:

gcloud asset analyze-org-policies \
    --constraint=CONSTRAINT_NAME  \
    --scope=organizations/ORGANIZATION_ID \
    --limit=LIMIT_POLICIES \
    --filter=FILTER_QUERY

Remplacez les éléments suivants :

  • CONSTRAINT_NAME: nom de la règle d'administration que vous voulez analyser. Pour obtenir la liste des contraintes, consultez Contraintes liées aux règles d'administration.

  • ORGANIZATION_ID : ID de la ressource de votre organisation. Pour savoir comment rechercher votre ID d'organisation, consultez la section Créer et gérer des organisations.

  • LIMIT_POLICIES : nombre d'entrées de résultats que vous souhaitez afficher. Pour afficher un nombre illimité d'entrées, saisissez unlimited.

  • FILTER_QUERY : requête de filtre pour n'afficher que les règles correspondant à votre expression de filtrage. Le seul champ disponible pour le filtrage est consolidated_policy.attached_resource. Par exemple, consolidated_policy.attached_resource="//cloudresourcemanager.googleapis.com/projects/1234567890" ne renverrait que les règles associées au projet avec l'ID de projet 1234567890.

La réponse YAML est semblable à ce qui suit:

Exemple de réponse YAML

---
consolidatedPolicy:
  appliedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
  attachedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
  rules:
  - enforce: true
policyBundle:
- appliedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
  attachedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
  reset: true
- appliedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  rules:
  - enforce: true
---
consolidatedPolicy:
  appliedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  rules:
  - enforce: true
policyBundle:
- appliedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  rules:
  - enforce: true

REST

Pour obtenir une analyse de la manière dont une contrainte de règle d'administration est appliquée au sein d'une organisation, utilisez la méthode analyzeOrgPolicies de l'API Cloud Asset.

Méthode HTTP et URL :

GET https://cloudasset.googleapis.com/v1/organizations/ORGANIZATION_ID:analyzeOrgPolicies

Corps JSON de la requête :

JSON_REQUEST="{
  'constraint': 'CONSTRAINT_NAME',
  'filter': 'FILTER_QUERY',
  'page_size': PAGE_SIZE,
  'page_token': PAGE_TOKEN
}"

Remplacez les éléments suivants :

  • ORGANIZATION_ID: ID de votre organisation ressource. Pour savoir comment trouver votre ID d'organisation, consultez Créer et gérer des organisations

  • CONSTRAINT_NAME: nom de la règle d'administration que vous voulez analyser. Pour obtenir la liste des contraintes, consultez Contraintes liées aux règles d'administration.

  • FILTER_QUERY: requête de filtre permettant de n'afficher que les règles qui correspondent à votre expression de filtrage. Le seul champ disponible pour le filtrage est consolidated_policy.attached_resource. Par exemple : consolidated_policy.attached_resource="//cloudresourcemanager.googleapis.com/projects/1234567890" ne renverrait que les conditions associées au projet avec le ID du projet 1234567890.

  • PAGE_SIZE: nombre d'entrées de résultats par page souhaitée pour les afficher. Pour afficher un nombre illimité d'entrées, saisissez unlimited. Une demande effectuée avec cet ensemble d'indicateurs renvoie une valeur nextPageToken si le nombre total de entrées de résultats est supérieure à PAGE_SIZE.

  • PAGE_TOKEN: à définir uniquement pour les requêtes après le premier requête incluant l'option page_size. Vous pouvez utiliser nextPageToken valeurs reçues des réponses précédentes pour renvoyer une une page de résultats spécifique.

La réponse JSON est semblable à celle-ci:

Exemple de réponse JSON

{
  "orgPolicyResults": [
    {
      "consolidatedPolicy": {
        "attachedResource": "//cloudresourcemanager.googleapis.com/folders/123456789012",
        "rules": [
          {
            "values": {
              "allowedValues": [
                "C0265whk2"
              ]
            }
          },
          {
            "values": {
              "allowedValues": [
                "C03kd36xr"
              ]
            }
          }
        ],
        "appliedResource": "//cloudresourcemanager.googleapis.com/folders/123456789012"
      },
      "policyBundle": [
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/123456789012",
          "rules": [
            {
              "values": {
                "allowedValues": [
                  "C03kd36xr"
                ]
              }
            }
          ],
          "inheritFromParent": true,
          "appliedResource": "//cloudresourcemanager.googleapis.com/folders/123456789012"
        },
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/234567890123",
          "rules": [
            {
              "values": {
                "allowedValues": [
                  "C0265whk2"
                ]
              }
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/folders/234567890123"
        }
      ]
    },
    {
      "consolidatedPolicy": {
        "attachedResource": "//cloudresourcemanager.googleapis.com/folders/234567890123",
        "rules": [
          {
            "values": {
              "allowedValues": [
                "C0265whk2"
              ]
            }
          }
        ],
        "appliedResource": "//cloudresourcemanager.googleapis.com/folders/234567890123"
      },
      "policyBundle": [
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/234567890123",
          "rules": [
            {
              "values": {
                "allowedValues": [
                  "C0265whk2"
                ]
              }
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/folders/234567890123"
        }
      ]
    }
  ]
  "constraint": {
    "googleDefinedConstraint": {
      "name": "constraints/iam.allowedPolicyMemberDomains",
      "displayName": "Domain restricted sharing",
      "description": "This list constraint defines one or more Cloud Identity or Google Workspace customer IDs whose principals can be added to IAM policies. \u003cbr\u003eBy default, all user identities are allowed to be added to IAM policies. Only allowed values can be defined in this constraint, denied values are not supported. \u003cbr\u003eIf this constraint is active, only principals that belong to the allowed customer IDs can be added to IAM policies.",
      "constraintDefault": "ALLOW",
      "listConstraint": {}
    }
  }
}

Analyser les conteneurs

Dans ce contexte, un conteneur est une ressource de projet, de dossier ou d'organisation. Vous pouvez utiliser Policy Analyzer pour renvoyer la liste de tous les conteneurs auxquelles sont appliquées des règles d'administration auxquelles une contrainte particulière est appliquée. Policy Analyzer renvoie également le nom complet de chaque conteneur, le parent du conteneur dans la hiérarchie, ainsi que les tags hérités ou associés le conteneur.

Pour chaque conteneur détecté dans le champ d'application de la requête, Policy Analyzer renvoie une entrée de résultat. Une entrée de résultat contient les champs suivants:

  • consolidatedPolicy : conteneur auquel la règle d'administration est associée, ainsi que l'application effective de la règle sur ce conteneur par rapport aux règles d'évaluation de la hiérarchie.

  • conditionEvaluation: si les conditions incluses entraînent l'application de la règle d'administration, evaluationValue est TRUE. Si les conditions entraînent l'absence d'application de la règle d'administration de l'organisation, evaluationValue est FALSE. Si la condition n'est pas compatible avec une ou plusieurs des ressources sur lesquelles la règle d'administration est appliquée, la condition elle-même est renvoyée.

  • effectiveTags: tous les tags directement associés ou hérités par le et ses parents dans la hiérarchie.

  • folders: ID de toutes les ressources de dossier contenant le conteneur dans lequel la règle d'administration est associée.

  • fullResourceName: nom complet du conteneur.

  • organization: ID de la ressource d'organisation qui est l'ancêtre de le conteneur auquel la règle d'administration est associée.

  • parent : nom complet de la ressource du parent de ce conteneur.

  • policyBundle : la règle d'administration de l'organisation configurée directement sur le conteneur, le cas échéant, et les règles d'administration de l'organisation définies sur les ancêtres du conteneur dans la hiérarchie des ressources.

  • project: ID du conteneur auquel la règle d'administration est définie s'il s'agit d'une ressource de projet.

Si vos ressources sont protégées par un périmètre de service VPC Service Controls, vous devez créer une règle de sortie dans le périmètre de la ressource de votre organisation qui autorise l'accès au service cloudasset.googleapis.com et à la méthode google.cloud.asset.v1.AssetService.SearchAllResources. Si vous ne une règle de sortie, la requête échoue et renvoie NETWORK_NOT_IN_SAME_SERVICE_PERIMETER erreur. Pour en savoir plus, consultez Requêtes de débogage bloquées par VPC Service Controls

Console

  1. Dans la console Google Cloud, accédez à la page Policy Analyzer.

    Accéder à Policy Analyzer

  2. Dans la section Analyser les règles d'administration, recherchez le volet intitulé Quels projets ou dossiers sont concernés par une contrainte de règle d'administration ?, puis cliquez sur Créer une requête dans ce volet.

  3. Dans la zone Sélectionnez l'organisation de la requête, sélectionnez l'organisation pour laquelle vous voulez analyser les règles d'administration.

  4. Sélectionnez le type de contrainte que vous souhaitez analyser. Pour une sélectionnez Contrainte intégrée. Pour définir une contrainte personnalisée, sélectionnez Contrainte personnalisée.

  5. Saisissez le nom de la contrainte que vous souhaitez analyser. Le préfixe du type de contrainte que vous analysez est déjà inclus. Par exemple : Pour la contrainte de restriction de domaine prédéfinie, saisissez iam.allowedPolicyMemberDomains, puis, dans le cas d'une contrainte personnalisée, saisissez son son nom, par exemple disableGkeAutoUpgrade.

  6. Cliquez sur Exécuter la requête. La page du rapport affiche les paramètres de requête saisie, ainsi qu'une table de résultats de tous les conteneurs concernés par cette contrainte appliquée ou héritée.

  7. Vous pouvez enregistrer cette requête pour la consulter ultérieurement en cliquant sur Copier l'URL de la requête. Pour afficher cette requête, accédez à l'URL générée.

  8. Vous pouvez visualiser l'héritage de la contrainte analysée en sélectionnant au moins un conteneur dans la liste, puis en cliquant Afficher l'héritage Vous pouvez aussi accéder immédiatement à la visualisation lorsque vous créez votre requête d'analyse en cliquant sur Analyser, puis Visualiser. Pour en savoir plus, consultez Visualiser l'héritage.

gcloud

Pour obtenir une analyse de l'application d'une contrainte de règle d'administration sur les conteneurs d'une organisation, utilisez la commande gcloud asset analyze-org-policy-governed-containers :

gcloud asset analyze-org-policy-governed-containers \
    --constraint=CONSTRAINT_NAME  \
    --scope=organizations/ORGANIZATION_ID \
    --limit=LIMIT_CONTAINERS \
    --filter=FILTER_QUERY

Remplacez les éléments suivants :

  • CONSTRAINT_NAME: nom de la règle d'administration que vous voulez analyser. Pour obtenir la liste des contraintes, consultez Contraintes liées aux règles d'administration.

  • ORGANIZATION_ID : ID de la ressource de votre organisation. Pour savoir comment trouver votre ID d'organisation, consultez Créer et gérer des organisations

  • LIMIT_CONTAINERS: le nombre d'entrées de résultats que vous que vous souhaitez voir. Pour afficher un nombre illimité d'entrées, saisissez unlimited.

  • FILTER_QUERY: requête de filtre permettant de n'afficher que les conteneurs qui correspondent à votre expression de filtrage. Le seul champ disponible pour le filtrage est parent. Exemple : parent="//cloudresourcemanager.googleapis.com/organizations/012345678901" ne renverrait que les conteneurs enfants de l'organisation l'ID d'organisation 012345678901.

La réponse YAML est semblable à ce qui suit:

Exemple de réponse YAML

---
consolidatedPolicy:
  appliedResource: //cloudresourcemanager.googleapis.com/projects/donghe-project1
  attachedResource: //cloudresourcemanager.googleapis.com/projects/donghe-project1
  rules:
  - values:
      allowedValues:
      - projects/donghe-project1/zones/us-central1-a/instances/instance-1
fullResourceName: //cloudresourcemanager.googleapis.com/projects/donghe-project1
parent: //cloudresourcemanager.googleapis.com/folders/86513245445
policyBundle:
- appliedResource: //cloudresourcemanager.googleapis.com/projects/donghe-project1
  attachedResource: //cloudresourcemanager.googleapis.com/projects/donghe-project1
  inheritFromParent: true
  rules:
  - values:
      allowedValues:
      - projects/donghe-project1/zones/us-central1-a/instances/instance-1
---
consolidatedPolicy:
  appliedResource: //cloudresourcemanager.googleapis.com/projects/jeffreyai-prj01-on-ipa1
  attachedResource: //cloudresourcemanager.googleapis.com/projects/jeffreyai-prj01-on-ipa1
  rules:
  - denyAll: true
fullResourceName: //cloudresourcemanager.googleapis.com/projects/jeffreyai-prj01-on-ipa1
parent: //cloudresourcemanager.googleapis.com/organizations/474566717491
policyBundle:
- appliedResource: //cloudresourcemanager.googleapis.com/projects/jeffreyai-prj01-on-ipa1
  attachedResource: //cloudresourcemanager.googleapis.com/projects/jeffreyai-prj01-on-ipa1
  inheritFromParent: true
  rules:
  - denyAll: true
---
consolidatedPolicy:
  appliedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
  attachedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
  rules:
  - values:
      allowedValues:
      - projects/opa-test-project-1-364621/zones/us-central1-a/instances/instance-1
fullResourceName: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
parent: //cloudresourcemanager.googleapis.com/folders/666681422980
policyBundle:
- appliedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
  attachedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-1-364621
  rules:
  - values:
      allowedValues:
      - projects/opa-test-project-1-364621/zones/us-central1-a/instances/instance-1

REST

Pour obtenir une analyse de la façon dont une contrainte de règle d'administration est appliquée sur conteneurs au sein d'une organisation, utilisez l'API Cloud Asset Méthode analyzeOrgPolicyGovernedContainers.

Méthode HTTP et URL :

GET https://cloudasset.googleapis.com/v1/organizations/ORGANIZATION_ID:analyzeOrgPolicyGovernedContainers

Corps JSON de la requête :

JSON_REQUEST="{
  'constraint': 'CONSTRAINT_NAME',
  'filter': '"FILTER_QUERY"',
  'page_size': PAGE_SIZE,
  'page_token': PAGE_TOKEN
}"

Remplacez les éléments suivants :

  • ORGANIZATION_ID: ID de votre organisation ressource. Pour savoir comment trouver votre ID d'organisation, consultez Créer et gérer des organisations

  • CONSTRAINT_NAME: nom de la règle d'administration que vous voulez analyser. Pour obtenir la liste des contraintes, consultez la section Contraintes liées aux règles d'administration.

  • FILTER_QUERY : requête de filtre pour n'afficher que les conteneurs correspondant à votre expression de filtrage. Le seul champ disponible pour le filtrage est parent. Par exemple : parent="//cloudresourcemanager.googleapis.com/organizations/012345678901" ne renvoie que les conteneurs qui étaient des enfants de l'organisation avec ID d'organisation 012345678901.

  • PAGE_SIZE : nombre de pages d'entrées de résultats souhaitées : pour les afficher. Pour afficher un nombre illimité d'entrées, saisissez unlimited. Une requête effectuée avec cet indicateur défini renvoie une valeur nextPageToken si le nombre total d'entrées de résultats est supérieur à PAGE_SIZE.

  • PAGE_TOKEN: à définir uniquement pour les requêtes après le premier requête incluant l'option page_size. Vous pouvez utiliser nextPageToken valeurs reçues des réponses précédentes pour renvoyer une une page de résultats spécifique.

La réponse JSON est semblable à celle-ci:

Exemple de réponse JSON

{
  "governedContainers": [
    {
      "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/opa-test-project-2",
      "parent": "//cloudresourcemanager.googleapis.com/folders/513502730678",
      "consolidatedPolicy": {
        "attachedResource": "//cloudresourcemanager.googleapis.com/folders/513502730678",
        "rules": [
          {
            "enforce": false
          }
        ],
        "appliedResource": "//cloudresourcemanager.googleapis.com/folders/513502730678"
      },
      "policyBundle": [
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/513502730678",
          "rules": [
            {
              "enforce": false
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/folders/513502730678"
        },
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/666681422980",
          "rules": [
            {
              "enforce": true
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/folders/666681422980"
        }
      ]
    },
    {
      "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/opa-test-project-1",
      "parent": "//cloudresourcemanager.googleapis.com/folders/513502730678",
      "consolidatedPolicy": {
        "attachedResource": "//cloudresourcemanager.googleapis.com/folders/513502730678",
        "rules": [
          {
            "enforce": false
          }
        ],
        "appliedResource": "//cloudresourcemanager.googleapis.com/folders/513502730678"
      },
      "policyBundle": [
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/513502730678",
          "rules": [
            {
              "enforce": false
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/folders/513502730678"
        },
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/666681422980",
          "rules": [
            {
              "enforce": true
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/folders/666681422980"
        }
      ]
    }
  ]
  "constraint": {
    "googleDefinedConstraint": {
      "name": "constraints/compute.requireOsLogin",
      "displayName": "Require OS Login",
      "description": "This boolean constraint, when set to \u003ccode\u003etrue\u003c/code\u003e, enables OS Login on all newly created Projects. All VM instances created in new projects will have OS Login enabled. On new and existing projects, this constraint prevents metadata updates that disable OS Login at the project or instance level. \u003cbr\u003eBy default, the OS Login feature is disabled on Compute Engine projects.\u003cbr\u003eGKE instances in private clusters running node pool versions 1.20.5-gke.2000 and later support OS Login. GKE instances in public clusters do not currently support OS Login. If this constraint is applied to a Project running public clusters, GKE instances running in that Project may not function properly.",
      "constraintDefault": "ALLOW",
      "booleanConstraint": {}
    }
  }
}

Analyser les éléments

Dans ce contexte, un élément est une ressource Google Cloud Stratégie d'autorisation IAM (Identity and Access Management). Vous pouvez utiliser Policy Analyzer pour renvoyer la liste de tous les éléments ayant des règles d'administration auxquelles une contrainte particulière est appliquée. Les contraintes personnalisées et les contraintes prédéfinies suivantes sont acceptées:

  • constraints/ainotebooks.accessMode
  • constraints/ainotebooks.disableFileDownloads
  • constraints/ainotebooks.disableRootAccess
  • constraints/ainotebooks.disableTerminal
  • constraints/ainotebooks.environmentOptions
  • constraints/ainotebooks.requireAutoUpgradeSchedule
  • constraints/ainotebooks.restrictVpcNetworks
  • constraints/compute.disableGuestAttributesAccess
  • constraints/compute.disableInstanceDataAccessApis
  • constraints/compute.disableNestedVirtualization
  • constraints/compute.disableSerialPortAccess
  • constraints/compute.disableSerialPortLogging
  • constraints/compute.disableVpcExternalIpv6
  • constraints/compute.requireOsLogin
  • constraints/compute.requireShieldedVm
  • constraints/compute.restrictLoadBalancerCreationForTypes
  • constraints/compute.restrictProtocolForwardingCreationForTypes
  • constraints/compute.restrictXpnProjectLienRemoval
  • constraints/compute.setNewProjectDefaultToZonalDNSOnly
  • constraints/compute.skipDefaultNetworkCreation
  • constraints/compute.trustedImageProjects
  • constraints/compute.vmCanIpForward
  • constraints/compute.vmExternalIpAccess
  • constraints/gcp.detailedAuditLoggingMode
  • constraints/gcp.resourceLocations
  • constraints/iam.allowedPolicyMemberDomains
  • constraints/iam.automaticIamGrantsForDefaultServiceAccounts
  • constraints/iam.disableServiceAccountCreation
  • constraints/iam.disableServiceAccountKeyCreation
  • constraints/iam.disableServiceAccountKeyUpload
  • constraints/iam.restrictCrossProjectServiceAccountLienRemoval
  • constraints/iam.serviceAccountKeyExpiryHours
  • constraints/resourcemanager.accessBoundaries
  • constraints/resourcemanager.allowedExportDestinations
  • constraints/sql.restrictAuthorizedNetworks
  • constraints/sql.restrictNoncompliantDiagnosticDataAccess
  • constraints/sql.restrictNoncompliantResourceCreation
  • constraints/sql.restrictPublicIp
  • constraints/storage.publicAccessPrevention
  • constraints/storage.restrictAuthTypes
  • constraints/storage.uniformBucketLevelAccess

Policy Analyzer renvoie le nom complet de chaque composant, le parent du composant dans la hiérarchie, ainsi que toutes les ressources de projet, de dossier et d'organisation ancêtres situées au-dessus du composant dans la hiérarchie.

Pour chaque élément détecté dans le champ d'application de la requête, Policy Analyzer renvoie une entrée de résultat.

Une entrée de résultat pour une ressource contient les champs suivants:

  • consolidatedPolicy: ressource à laquelle la règle d'administration est et l'application effective des règles sur la ressource concernée règles d'évaluation hiérarchiques.

  • conditionEvaluation: si les conditions incluses entraînent l'application de la règle d'administration, evaluationValue est TRUE. Si les conditions entraîne la non-application de la règle d'administration, evaluationValue est FALSE Si la condition n'est pas prise en charge par une ou plusieurs des ressources sur à laquelle la règle d'administration est appliquée, la condition elle-même est renvoyée.

  • assetType: type de ressource de l'élément.

  • effectiveTags: tous les tags directement associés ou hérités par le ressource à laquelle la règle d'administration est associée et dont le rôle parents dans la hiérarchie.

  • folders: ID de toutes les ressources de dossier contenant la ressource à laquelle la règle d'administration est associée.

  • fullResourceName: nom complet de la ressource.

  • organization : nom de ressource relatif de l'organisation qui contient la ressource.

  • parent: nom complet de la ressource parent de la ressource.

  • project: ID du projet contenant la ressource.

  • policyBundle: règle d'administration entièrement configurée associée à l'élément ci-dessus et les règles d'administration définies sur ses ancêtres la hiérarchie des ressources.

Une entrée de résultat pour une règle d'autorisation contient les champs suivants:

  • consolidatedPolicy: ressource à laquelle la règle d'administration est et l'application effective des règles sur la ressource concernée règles d'évaluation hiérarchiques.

  • assetType: type de ressource de la ressource à laquelle la règle d'autorisation est joint.

  • attachedResource: nom complet de la ressource à laquelle la règle d'autorisation est jointe.

  • folders : nom de ressource relatif de tous les dossiers contenant la stratégie d'autorisation.

  • organization: nom de ressource relatif de l'organisation contenant la règle d'autorisation.

  • policy: règle d'autorisation.

  • project: nom de ressource relatif du projet contenant l'autorisation .

  • policyBundle: règle d'administration entièrement configurée associée à l'élément ci-dessus et les règles d'administration définies sur ses ancêtres la hiérarchie des ressources.

Si vos ressources sont protégées par un périmètre de service VPC Service Controls, vous devez créer une règle de sortie dans le périmètre de la ressource de votre organisation qui autorise l'accès au service cloudasset.googleapis.com et à la méthode google.cloud.asset.v1.AssetService.SearchAllResources. Si vous ne une règle de sortie, la requête échoue et renvoie NETWORK_NOT_IN_SAME_SERVICE_PERIMETER erreur. Pour en savoir plus, consultez la section Requêtes de débogage bloquées par VPC Service Controls.

Console

  1. Dans la console Google Cloud, accédez à la page Policy Analyzer.

    Accéder à Policy Analyzer

  2. Dans la section Analyser la règle d'administration, recherchez le volet intitulé Quelles ressources sont affectées par une contrainte de règle d'administration ? puis cliquez sur Créer une requête dans ce volet.

  3. Dans la zone Sélectionnez l'organisation de la requête, sélectionnez l'organisation pour laquelle vous voulez analyser les règles d'administration.

  4. Sélectionnez le type de contrainte que vous souhaitez analyser. Pour une sélectionnez Contrainte intégrée. Pour définir une contrainte personnalisée, sélectionnez Contrainte personnalisée.

  5. Saisissez le nom de la contrainte que vous souhaitez analyser. Le préfixe de type de contrainte que vous analysez est déjà inclus. Par exemple : pour la contrainte d'accès prédéfinie au niveau du bucket, saisissez storage.uniformBucketLevelAccess, puis, dans le cas d'une contrainte personnalisée, saisissez son son nom, par exemple disableGkeAccess.

  6. Cliquez sur Exécuter la requête. La page du rapport affiche les paramètres de requête saisie et une table de résultats répertoriant tous les éléments auxquels cette contrainte est appliquée appliquée ou héritée.

  7. Vous pouvez enregistrer cette requête pour la consulter de nouveau ultérieurement en cliquant sur Copier l'URL de la requête. Pour afficher cette requête, accédez à l'URL générée.

  8. Vous pouvez visualiser l'héritage de la contrainte analysée en sélectionnant au moins un asset dans la liste, puis en cliquant Afficher l'héritage Vous pouvez aussi accéder immédiatement à la visualisation lorsque vous créez votre requête d'analyse en cliquant sur Analyser, puis Visualiser. Consultez la section Visualiser l'héritage. pour en savoir plus.

gcloud

Pour obtenir une analyse de la façon dont une contrainte de règle d'administration est appliquée sur ressources au sein d'une organisation, utilisez Commande gcloud asset analyze-org-policy-governed-assets:

gcloud asset analyze-org-policy-governed-assets \
    --constraint=CONSTRAINT_NAME  \
    --scope=organizations/ORGANIZATION_ID \
    --limit=LIMIT_ASSETS \
    --filter=FILTER_QUERY

Remplacez les éléments suivants :

  • CONSTRAINT_NAME: nom de la règle d'administration que vous voulez analyser. Pour obtenir la liste des contraintes, consultez Contraintes liées aux règles d'administration.

  • ORGANIZATION_ID : ID de la ressource de votre organisation. Pour savoir comment rechercher votre ID d'organisation, consultez la section Créer et gérer des organisations.

  • LIMIT_ASSETS: nombre d'entrées de résultats souhaitées pour les afficher. Pour afficher un nombre illimité d'entrées, saisissez unlimited.

  • FILTER_QUERY: requête de filtre permettant de n'afficher que les éléments qui correspondent à votre expression de filtrage. Les champs disponibles pour le filtrage sont governed_resource.folders, governed_resource.project, governed_iam_policy.folders et governed_iam_policy.project. Pour par exemple, governed_resource.project="projects/1234567890" ne renvoie que éléments associés au projet dont l'ID est 1234567890.

La réponse YAML ressemble à ce qui suit :

Exemple de réponse YAML

---
consolidatedPolicy:
  appliedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-2
  attachedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-2
  rules:
  - enforce: false
governedResource:
  folders:
  - folders/513502730678
  - folders/666681422980
  fullResourceName: //container.googleapis.com/projects/opa-test-project-2/zones/us-central1-c/clusters/opa-test-project-2-cluster-1/nodePools/default-pool
  organization: organizations/474566717491
  parent: //container.googleapis.com/projects/opa-test-project-2/zones/us-central1-c/clusters/opa-test-project-2-cluster-1
  project: projects/892625391619
policyBundle:
- appliedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-2
  attachedResource: //cloudresourcemanager.googleapis.com/projects/opa-test-project-2
  reset: true
- appliedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  attachedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  rules:
  - enforce: true
---
consolidatedPolicy:
  appliedResource: //cloudresourcemanager.googleapis.com/projects/project2-244918
  attachedResource: //cloudresourcemanager.googleapis.com/projects/project2-244918
  rules:
  - enforce: false
governedResource:
  folders:
  - folders/800636178739
  - folders/408342778736
  fullResourceName: //container.googleapis.com/projects/project2-244918/zones/us-central1-c/clusters/cluster-1/nodePools/default-pool
  organization: organizations/474566717491
  parent: //container.googleapis.com/projects/project2-244918/zones/us-central1-c/clusters/cluster-1
  project: projects/761097189269
policyBundle:
- appliedResource: //cloudresourcemanager.googleapis.com/projects/project2-244918
  attachedResource: //cloudresourcemanager.googleapis.com/projects/project2-244918
  rules:
  - enforce: false
- appliedResource: //cloudresourcemanager.googleapis.com/folders/408342778736
  attachedResource: //cloudresourcemanager.googleapis.com/folders/408342778736
  rules:
  - condition:
      description: cond-desc1
      expression: resource.matchTag("474566717491/env", "prod")
      title: cond-title1
    enforce: false
  - enforce: true
- appliedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  attachedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  rules:
  - enforce: true
---
consolidatedPolicy:
  appliedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  attachedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  rules:
  - enforce: true
governedResource:
  fullResourceName: //container.googleapis.com/projects/probe-per-rt-project/zones/us-west1-a/clusters/test-cluster-for-backup/nodePools/default-pool
  organization: organizations/474566717491
  parent: //container.googleapis.com/projects/probe-per-rt-project/zones/us-west1-a/clusters/test-cluster-for-backup
  project: projects/896190383908
policyBundle:
- appliedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  attachedResource: //cloudresourcemanager.googleapis.com/organizations/474566717491
  rules:
  - enforce: true

REST

Pour obtenir une analyse de la façon dont une contrainte de règle d'administration est appliquée aux composants d'une organisation, utilisez la méthode analyzeOrgPolicyGovernedAssets de l'API Cloud Asset.

Méthode HTTP et URL :

GET https://cloudasset.googleapis.com/v1/organizations/ORGANIZATION_ID:analyzeOrgPolicyGovernedAssets

Corps JSON de la requête :

JSON_REQUEST="{
  'constraint': 'CONSTRAINT_NAME',
  'filter': 'FILTER_QUERY',
  'page_size': PAGE_SIZE,
  'page_token': PAGE_TOKEN
}"

Remplacez les éléments suivants :

  • ORGANIZATION_ID: ID de votre organisation ressource. Pour savoir comment trouver votre ID d'organisation, consultez Créer et gérer des organisations

  • CONSTRAINT_NAME: nom de la règle d'administration que vous voulez analyser. Pour obtenir la liste des contraintes, consultez Contraintes liées aux règles d'administration.

  • FILTER_QUERY: requête de filtre permettant de n'afficher que les éléments qui correspondent à votre expression de filtrage. Les champs disponibles pour le filtrage sont governed_resource.folders, governed_resource.project, governed_iam_policy.folders et governed_iam_policy.project. Pour par exemple, governed_resource.project="projects/1234567890" ne renvoie que éléments associés au projet dont l'ID est 1234567890.

  • PAGE_SIZE : nombre de pages d'entrées de résultats souhaitées : pour les afficher. Pour afficher un nombre illimité d'entrées, saisissez unlimited. Une requête effectuée avec cet indicateur défini renvoie une valeur nextPageToken si le nombre total d'entrées de résultats est supérieur à PAGE_SIZE.

  • PAGE_TOKEN: à définir uniquement pour les requêtes après le premier requête incluant l'option page_size. Vous pouvez utiliser nextPageToken valeurs reçues des réponses précédentes pour renvoyer une une page de résultats spécifique.

La réponse JSON est semblable à celle-ci:

Exemple de réponse JSON

{
  "governedAssets": [
    {
      "governedResource": {
        "fullResourceName": "//container.googleapis.com/projects/opa-test-project-2/zones/us-central1-c/clusters/opa-test-project-2-cluster-1/nodePools/default-pool",
        "parent": "//container.googleapis.com/projects/opa-test-project-2/zones/us-central1-c/clusters/opa-test-project-2-cluster-1",
        "project": "projects/892625391619",
        "folders": [
          "folders/513502730678",
          "folders/666681422980"
        ],
        "organization": "organizations/474566717491"
      },
      "consolidatedPolicy": {
        "attachedResource": "//cloudresourcemanager.googleapis.com/projects/opa-test-project-2",
        "rules": [
          {
            "enforce": false
          }
        ],
        "appliedResource": "//cloudresourcemanager.googleapis.com/projects/opa-test-project-2"
      },
      "policyBundle": [
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/projects/opa-test-project-2",
          "reset": true,
          "appliedResource": "//cloudresourcemanager.googleapis.com/projects/opa-test-project-2"
        },
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/organizations/474566717491",
          "rules": [
            {
              "enforce": true
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/organizations/474566717491"
        }
      ]
    },
    {
      "governedResource": {
        "fullResourceName": "//container.googleapis.com/projects/project2-244918/zones/us-central1-c/clusters/cluster-1/nodePools/default-pool",
        "parent": "//container.googleapis.com/projects/project2-244918/zones/us-central1-c/clusters/cluster-1",
        "project": "projects/761097189269",
        "folders": [
          "folders/800636178739",
          "folders/408342778736"
        ],
        "organization": "organizations/474566717491"
      },
      "consolidatedPolicy": {
        "attachedResource": "//cloudresourcemanager.googleapis.com/projects/project2-244918",
        "rules": [
          {
            "enforce": false
          }
        ],
        "appliedResource": "//cloudresourcemanager.googleapis.com/projects/project2-244918"
      },
      "policyBundle": [
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/projects/project2-244918",
          "rules": [
            {
              "enforce": false
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/projects/project2-244918"
        },
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/408342778736",
          "rules": [
            {
              "enforce": false,
              "condition": {
                "expression": "resource.matchTag(\"474566717491/env\", \"prod\")",
                "title": "cond-title1",
                "description": "cond-desc1"
              }
            },
            {
              "enforce": true
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/folders/408342778736"
        },
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/organizations/474566717491",
          "rules": [
            {
              "enforce": true
            }
          ],
          "appliedResource": "//cloudresourcemanager.googleapis.com/organizations/474566717491"
        }
      ]
    }
  ]
  "constraint": {
    "customConstraint": {
      "name": "organizations/474566717491/customConstraints/custom.disableGkeAutoUpgrade",
      "resourceTypes": [
        "container.googleapis.com/NodePool"
      ],
      "methodTypes": [
        "CREATE",
        "UPDATE"
      ],
      "condition": "resource.management.autoUpgrade == false",
      "actionType": "ALLOW",
      "displayName": "Disable GKE auto upgrade",
      "description": "Only allow GKE NodePool resource create or updates if AutoUpgrade is not enabled"
    }
  }
}

Visualiser l'héritage

Si le niveau Premium est activé au niveau de l'organisation Security Command Center, vous pouvez visualiser l'héritage des règles d'administration que vous avez analysées à l'aide de la console Google Cloud.

Pour afficher la visualisation de l'héritage, créez une analyse des règles d'administration pour rechercher les règles configurées, conteneurs ou éléments. Sur la page Exécuter une analyse de requête, cliquez sur Analyser, puis sélectionnez Visualiser.

Vous pouvez également accéder à l'URL d'une requête enregistrée, sélectionner les ressources que vous souhaitez mettre en avant, puis cliquer sur Afficher l'héritage.

La page Héritage des ressources affiche une visualisation de la ressource. pour les ressources sélectionnées dans votre requête d'analyse:

Visualisation de l'héritage des règles d'administration dans une hiérarchie de ressources Visualisation d'une règle booléenne non appliquée.

  1. Indique si la ressource est une organisation, un dossier ou un projet.

  2. Un point bleu indique que la ressource est sélectionnée dans la requête.

  3. Indique que la ressource remplace la stratégie de sa ressource parente.

  4. Indique que la ressource réinitialise la règle d'administration de l'organisation sur la valeur par défaut gérée par Google pour cette règle. Une ressource qui rétablit les valeurs par défaut de la règle possède une en pointillés qui le connectent à leur parent.

  5. Indique que la ressource fusionne la règle avec son parent.

  6. Indique que la règle d'administration sur cette ressource applique une une contrainte booléenne appliquée, ou une contrainte de liste avec des valeurs autorisées valeurs.

  7. Indique que la règle d'administration sur cette ressource est une contrainte de liste dont les valeurs sont refusées.

  8. Indique que la règle d'administration de cette ressource est une contrainte booléenne qui n'est pas appliquée.

Étape suivante