Analyser les règles d'administration

Cette page contient des informations sur l'analyse des paramètres de vos règles d'administration afin de connaître les ressources couvertes par chaque règle d'administration. Policy Analyzer pour les règles d'administration vous permet de 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 comprend un champ d'application et une contrainte.

  • Contrainte: spécifie le nom de ressource d'une contrainte.
  • Champ d'application: indique une organisation pour définir le champ d'application de l'analyse. Toutes les règles d'administration 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 d'administration, consultez la page Présentation du service de règles d'administration. Pour en savoir plus sur la création de contraintes personnalisées, consultez Créer et gérer des contraintes personnalisées.

Avant de commencer

Activez Cloud Asset API.

Activer l'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 votre requête.

Rôles et autorisations requis

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

Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

Ces rôles prédéfinis contiennent les autorisations requises pour exécuter une analyse des règles d'administration. Pour afficher 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.

Analyser les règles configurées

Une règle d'administration est créée à partir d'une contrainte et de conditions facultatives en vertu desquelles cette contrainte est appliquée. Vous pouvez utiliser Policy Analyzer pour renvoyer une liste de règles d'administration avec une contrainte particulière, ainsi que 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, Policy Analyzer 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 associée et application effective des règles sur cette ressource en fonction des règles d'évaluation de la hiérarchie.

  • policyBundle: règle d'administration complète configurée associée à la ressource ci-dessus, et règles d'administration définies sur ses ancêtres dans la hiérarchie des ressources.

gcloud

Pour analyser l'application d'une contrainte de règle d'administration dans une organisation, utilisez la commande gcloud beta asset analyze-org-policies:

gcloud beta 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 contrainte de règle d'administration que vous souhaitez analyser. Pour obtenir la liste des contraintes, consultez la section Contraintes liées aux règles d'administration.

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

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

  • FILTER_QUERY: requête de filtre permettant de 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 renvoie que les stratégies associées au projet avec l'ID de projet 1234567890.

La réponse YAML est semblable à ceci:

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 connaître l'application d'une contrainte de règle d'administration, utilisez la méthode analyzeOrgPolicies de l'API Cloud Asset.

Méthode HTTP et URL :

GET http://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 ressource d'organisation. Pour savoir comment trouver l'ID de votre organisation, consultez Créer et gérer des organisations.

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

  • FILTER_QUERY: requête de filtre permettant de 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 renvoie que les stratégies associées au projet avec l'ID de projet 1234567890.

  • PAGE_SIZE: nombre d'entrées de résultat par page que vous souhaitez afficher. Pour afficher un nombre illimité d'entrées, saisissez unlimited. Une requête effectuée avec cet indicateur renvoie une valeur nextPageToken si le nombre total d'entrées de résultat est supérieur à PAGE_SIZE.

  • PAGE_TOKEN: à définir sur les requêtes après la première requête qui inclut l'indicateur page_size. Vous pouvez utiliser les valeurs nextPageToken reçues des réponses précédentes pour renvoyer une page de résultats particulière.

La réponse JSON est semblable à ceci:

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 un projet, un dossier ou une ressource d'organisation. Policy Analyzer permet de renvoyer une liste de tous les conteneurs auxquels des règles d'administration sont associées, avec une contrainte particulière. Policy Analyzer renvoie également le nom complet de chaque conteneur et le parent du conteneur dans la hiérarchie.

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:

  • fullResourceName: nom complet de la ressource de conteneur.

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

  • consolidatedPolicy: conteneur auquel la règle d'administration est associée et application effective des règles sur ce conteneur en ce qui concerne les règles d'évaluation de la hiérarchie.

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

gcloud

Pour analyser la façon dont une contrainte de règle d'administration est appliquée aux conteneurs au sein d'une organisation, utilisez la commande gcloud beta asset analyze-org-policy-governed-containers:

gcloud beta 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 contrainte de règle d'administration que vous souhaitez analyser. Pour obtenir la liste des contraintes, consultez la section Contraintes liées aux règles d'administration.

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

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

  • FILTER_QUERY: requête de filtre permettant de 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 enfants de l'organisation avec l'ID d'organisation 012345678901.

La réponse YAML est semblable à ceci:

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 l'application d'une contrainte de règle d'administration sur les conteneurs d'une organisation, utilisez la méthode analyzeOrgPolicyGovernedContainers de l'API Cloud Asset.

Méthode HTTP et URL :

GET http://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 ressource d'organisation. Pour savoir comment trouver l'ID de votre organisation, consultez Créer et gérer des organisations.

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

  • FILTER_QUERY: requête de filtre permettant de 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 enfants de l'organisation avec l'ID d'organisation 012345678901.

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

  • PAGE_TOKEN: à définir sur les requêtes après la première requête qui inclut l'indicateur page_size. Vous pouvez utiliser les valeurs nextPageToken reçues des réponses précédentes pour renvoyer une page de résultats particulière.

La réponse JSON est semblable à ceci:

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 ou une stratégie d'autorisation Identity and Access Management (IAM). Policy Analyzer vous permet de renvoyer une liste de tous les éléments auxquels des règles d'administration sont associées avec une contrainte particulière. Policy Analyzer renvoie également le nom complet de chaque élément, le parent de l'élément dans la hiérarchie et les ressources ancêtres, de dossier et d'organisation au-dessus de l'élément 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:

  • fullResourceName: nom complet de la ressource.

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

  • project: nom de ressource relatif du projet contenant la ressource.

  • folders: nom de ressource relatif de tous les dossiers contenant la ressource.

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

  • consolidatedPolicy: ressource à laquelle la règle d'administration est associée et application effective des règles sur cette ressource en fonction des règles d'évaluation de la hiérarchie.

  • policyBundle: règle d'administration complète configurée associée à la ressource ci-dessus, et règles d'administration définies sur ses ancêtres dans la hiérarchie des ressources.

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

  • attachedResource: ressource à laquelle la stratégie d'autorisation est associée.

  • policy: règle d'autorisation.

  • project: nom de ressource relatif du projet contenant la stratégie d'autorisation.

  • 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 stratégie d'autorisation.

  • consolidatedPolicy: ressource à laquelle la règle d'administration est associée et application effective des règles sur cette ressource en fonction des règles d'évaluation de la hiérarchie.

  • policyBundle: règle d'administration complète configurée associée à la ressource ci-dessus, et règles d'administration définies sur ses ancêtres dans la hiérarchie des ressources.

gcloud

Pour analyser la façon dont une contrainte de règle d'administration est appliquée aux éléments d'une organisation, utilisez la commande gcloud beta asset analyze-org-policy-governed-assets:

gcloud beta 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 contrainte de règle d'administration que vous souhaitez analyser. Pour obtenir la liste des contraintes, consultez la section Contraintes liées aux règles d'administration.

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

  • LIMIT_ASSETS: nombre d'entrées de résultat 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 éléments qui correspondent à votre expression de filtrage. Les champs de filtrage disponibles sont governed_resource.folders, governed_resource.project, governed_iam_policy.folders et governed_iam_policy.project. Par exemple, governed_resource.project="projects/1234567890" ne renvoie que les éléments associés au projet avec l'ID de projet 1234567890.

La réponse YAML est semblable à ceci:

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 analyser la façon dont une contrainte de règle d'administration est appliquée aux éléments d'une organisation, utilisez la méthode analyzeOrgPolicyGovernedAssets de l'API Cloud Asset.

Méthode HTTP et URL :

GET http://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 ressource d'organisation. Pour savoir comment trouver l'ID de votre organisation, consultez Créer et gérer des organisations.

  • CONSTRAINT_NAME: nom de la contrainte de règle d'administration que vous souhaitez 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 éléments qui correspondent à votre expression de filtrage. Les champs de filtrage disponibles sont governed_resource.folders, governed_resource.project, governed_iam_policy.folders et governed_iam_policy.project. Par exemple, governed_resource.project="projects/1234567890" ne renvoie que les éléments associés au projet avec l'ID de projet 1234567890.

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

  • PAGE_TOKEN: à définir sur les requêtes après la première requête qui inclut l'indicateur page_size. Vous pouvez utiliser les valeurs nextPageToken reçues des réponses précédentes pour renvoyer une page de résultats particulière.

La réponse JSON est semblable à ceci:

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"
    }
  }
}

Étapes suivantes