Cette page contient des informations sur l'analyse des paramètres de vos règles d'administration pour déterminer quelles ressources sont couvertes par quelle règle d'administration. Avec l'analyseur de règles pour les règles d'organisation, vous pouvez créer une requête d'analyse pour obtenir des informations sur les règles d'organisation personnalisées et prédéfinies.
Une requête d'analyse se compose 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 une organisation pour définir le champ d'application de l'analyse. Toutes les règles d'administration de l'organisation 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 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.
Pour en savoir plus sur les contraintes gérées, consultez la page Utiliser des contraintes.
Avant de commencer
Enable the Cloud Asset 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 à laquelle vous limitez votre requête.
Facultatif: Si vous souhaitez exécuter plus de 20 requêtes d'analyse des règles par organisation et par jour, assurez-vous d'avoir activé le niveau Premium de Security Command Center au niveau de l'organisation. Pour en savoir plus, consultez Questions sur la facturation.
Rôles et autorisations requis
Pour obtenir les autorisations nécessaires pour exécuter une analyse des règles 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 votre analyse:
-
Pour effectuer l'analyse :
Lecteur d'éléments Cloud (
roles/cloudasset.viewer
) -
Pour afficher les contraintes :
Lecteur des règles d'administration (
roles/orgpolicy.policyViewer
)
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 d'administration. 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 et géré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
L'analyseur de règles pour les règles de l'organisation à grande échelle (plus de 20 requêtes par organisation et par jour) et les visualisations d'héritage ne sont disponibles que pour les clients qui ont activé Security Command Center au niveau de l'organisation.
Le quota de Policy Analyzer pour les règles d'administration est partagé entre tous les outils Policy Analyzer. Pour en savoir plus, consultez la section Questions sur la facturation.
Analyser les règles configurées
Une règle d'administration est créée à partir d'une contrainte et de conditions facultatives dans lesquelles cette contrainte est appliquée. Vous pouvez utiliser Policy Analyzer pour afficher la liste des règles d'administration auxquelles une contrainte particulière est appliquée, ainsi que les ressources auxquelles ces règles 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 associée, et application effective de la règle sur cette ressource par rapport aux règles d'évaluation de la hiérarchie.project
: ID de la ressource de projet à laquelle cette stratégie consolidée appartient.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 à la ressource ci-dessus, ainsi que les règles d'administration définies sur ses ancêtres dans 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 disposez pas d'une règle de sortie, la requête échouera avec une erreur NETWORK_NOT_IN_SAME_SERVICE_PERIMETER
. Pour en savoir plus, consultez la section Requêtes de débogage bloquées par VPC Service Controls.
Console
Dans la console Google Cloud, accédez à la page Analyse des stratégies.
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.
Dans le champ Sélectionner l'organisation de la requête, sélectionnez l'organisation pour laquelle vous souhaitez analyser les règles d'administration.
Sélectionnez le type de contrainte que vous souhaitez analyser. Pour une contrainte prédéfinie ou gérée, sélectionnez Contrainte intégrée. Pour une contrainte personnalisée, sélectionnez Contrainte personnalisée.
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
, pour la contrainte de création de compte de service gérée, saisisseziam.managed.disableServiceAccountKeyCreation
, et pour une contrainte personnalisée, saisissez son nom, par exempledisableGkeAutoUpgrade
.Cliquez sur Analyser, puis sur Exécuter la requête. La page du rapport affiche les paramètres de requête que vous avez saisis ainsi qu'un tableau de résultats de toutes les ressources auxquelles cette contrainte est directement appliquée.
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.
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 également accéder immédiatement à la vue de visualisation lorsque vous créez votre requête d'analyse en cliquant sur Analyser, puis sur 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 dans une organisation, exécutez la 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 contrainte de stratégie de l'organisation 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 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 projet1234567890
.
La réponse YAML ressemble à 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 la ressource de votre organisation. Pour savoir comment rechercher votre ID d'organisation, consultez la section Créer et gérer des organisations.
CONSTRAINT_NAME: nom de la contrainte de stratégie de l'organisation 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 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 projet1234567890
.PAGE_SIZE: nombre d'entrées de résultats par page que vous souhaitez afficher. Pour afficher un nombre illimité d'entrées, saisissez
unlimited
. Une requête effectuée avec cet indicateur défini renvoie une valeurnextPageToken
si le nombre total d'entrées de résultats est supérieur à PAGE_SIZE.PAGE_TOKEN: ne doit être défini que sur les requêtes après la première requête incluant l'indicateur
page_size
. Vous pouvez utiliser les valeursnextPageToken
reçues des réponses précédentes pour renvoyer une page de résultats spécifique.
La réponse JSON ressemble à 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 correspond à une ressource de projet, de dossier ou d'organisation. Vous pouvez utiliser l'outil d'analyse de stratégies pour afficher la liste de tous les conteneurs auxquels une contrainte particulière de règles d'administration d'administration est appliquée. L'analyseur de règles renvoie également le nom complet de chaque conteneur, le parent du conteneur dans la hiérarchie et les balises héritées ou associées au conteneur.
Pour chaque conteneur détecté 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
: 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 stratégie de l'organisation,evaluationValue
estTRUE
. Si les conditions entraînent l'absence d'application de la règle d'administration de l'organisation,evaluationValue
estFALSE
. 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
: toutes les balises directement associées ou héritées par le conteneur et les parents du conteneur dans la hiérarchie.folders
: ID de toutes les ressources de dossier contenant le conteneur auquel la stratégie de l'organisation est associée.fullResourceName
: nom complet du conteneur.organization
: ID de la ressource de l'organisation qui est l'ancêtre du conteneur auquel la stratégie de l'organisation 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 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 stratégie de l'organisation est associée, 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 disposez pas d'une règle de sortie, la requête échouera avec une erreur NETWORK_NOT_IN_SAME_SERVICE_PERIMETER
. Pour en savoir plus, consultez la section Requêtes de débogage bloquées par VPC Service Controls.
Console
Dans la console Google Cloud, accédez à la page Analyse des stratégies.
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.
Dans le champ Sélectionner l'organisation de la requête, sélectionnez l'organisation pour laquelle vous souhaitez analyser les règles d'administration.
Sélectionnez le type de contrainte que vous souhaitez analyser. Pour une contrainte prédéfinie ou gérée, sélectionnez Contrainte intégrée. Pour une contrainte personnalisée, sélectionnez Contrainte personnalisée.
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
, pour la contrainte de création de compte de service gérée, saisisseziam.managed.disableServiceAccountKeyCreation
, et pour une contrainte personnalisée, saisissez son nom, par exempledisableGkeAutoUpgrade
.Cliquez sur Exécuter la requête. La page du rapport affiche les paramètres de requête que vous avez saisis, ainsi qu'un tableau de résultats de tous les conteneurs sur lesquels cette contrainte est appliquée ou par lesquels elle est héritée.
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.
Vous pouvez visualiser l'héritage de la contrainte que vous avez analysée en sélectionnant au moins un conteneur dans la liste, puis en cliquant sur Afficher l'héritage. Vous pouvez également accéder immédiatement à la vue de visualisation lorsque vous créez votre requête d'analyse en cliquant sur Analyser, puis sur 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 contrainte de stratégie de l'organisation 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 la ressource de votre organisation. Pour savoir comment rechercher votre ID d'organisation, consultez la section Créer et gérer des organisations.
LIMIT_CONTAINERS: 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 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 sont enfants de l'organisation avec l'ID d'organisation012345678901
.
La réponse YAML ressemble à 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 aux conteneurs d'une organisation, utilisez la méthode analyzeOrgPolicyGovernedContainers
de l'API Cloud Asset.
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 la ressource de votre organisation. Pour savoir comment rechercher votre ID d'organisation, consultez la section Créer et gérer des organisations.
CONSTRAINT_NAME: nom de la contrainte de stratégie de l'organisation 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 conteneurs correspondant à votre expression de filtrage. Le seul champ disponible pour le filtrage est
parent
. Par exemple,parent="//cloudresourcemanager.googleapis.com/organizations/012345678901"
ne renverrait que les conteneurs qui étaient enfants de l'organisation avec l'ID d'organisation012345678901
.PAGE_SIZE: nombre de pages d'entrées de résultats que vous souhaitez afficher. Pour afficher un nombre illimité d'entrées, saisissez
unlimited
. Une requête effectuée avec cet indicateur défini renvoie une valeurnextPageToken
si le nombre total d'entrées de résultats est supérieur à PAGE_SIZE.PAGE_TOKEN: ne doit être défini que sur les requêtes après la première requête incluant l'indicateur
page_size
. Vous pouvez utiliser les valeursnextPageToken
reçues des réponses précédentes pour renvoyer une page de résultats spécifique.
La réponse JSON ressemble à 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 correspond à une ressource Google Cloud ou à une stratégie d'autorisation IAM (Identity and Access Management). Vous pouvez utiliser l'outil d'analyse de stratégies pour renvoyer la liste de tous les éléments auxquels une contrainte particulière de règles d'administration d'administration est appliquée. Les contraintes personnalisées, les contraintes gérées et les contraintes prédéfinies suivantes sont compatibles:
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 composant détecté dans le champ d'application de la requête, l'outil d'analyse des règles 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 associée, ainsi que l'application effective de la règle sur cette ressource par rapport aux règles d'évaluation de la hiérarchie.conditionEvaluation
: si les conditions incluses entraînent l'application de la stratégie de l'organisation,evaluationValue
estTRUE
. Si les conditions entraînent l'absence d'application de la règle d'administration de l'organisation,evaluationValue
estFALSE
. 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.assetType
: type de ressource de l'asset.effectiveTags
: tous les tags directement associés à la ressource à laquelle la stratégie de l'organisation est associée ou dont elle hérite, ainsi que les parents de la ressource dans la hiérarchie.folders
: ID de toutes les ressources de dossier contenant la ressource à laquelle la stratégie de l'organisation 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 parente.project
: ID du projet contenant la ressource.policyBundle
: règle d'administration entièrement configurée associée à la ressource ci-dessus, ainsi que les 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:
consolidatedPolicy
: ressource à laquelle la règle d'administration est associée, ainsi que l'application effective de la règle sur cette ressource par rapport aux règles d'évaluation de la hiérarchie.assetType
: type de ressource auquel la stratégie d'autorisation est associée.attachedResource
: nom complet de la ressource à laquelle la stratégie d'autorisation est associée.folders
: nom de ressource relatif de tous les dossiers contenant la stratégie d'autorisation.organization
: nom de ressource relatif de l'organisation qui contient la stratégie d'autorisation.policy
: stratégie d'autorisation.project
: nom de ressource relatif du projet contenant la stratégie d'autorisation.policyBundle
: règle d'administration entièrement configurée associée à la ressource ci-dessus, ainsi que les règles d'administration définies sur ses ancêtres dans 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 disposez pas d'une règle de sortie, la requête échouera avec une erreur NETWORK_NOT_IN_SAME_SERVICE_PERIMETER
. Pour en savoir plus, consultez la section Requêtes de débogage bloquées par VPC Service Controls.
Console
Dans la console Google Cloud, accédez à la page Analyse des stratégies.
Dans la section Analyser les règles 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.
Dans le champ Sélectionner l'organisation de la requête, sélectionnez l'organisation pour laquelle vous souhaitez analyser les règles d'administration.
Sélectionnez le type de contrainte que vous souhaitez analyser. Pour une contrainte prédéfinie ou gérée, sélectionnez Contrainte intégrée. Pour une contrainte personnalisée, sélectionnez Contrainte personnalisée.
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 d'accès au niveau du bucket prédéfini, saisissez
storage.uniformBucketLevelAccess
, pour la contrainte gérée de création de compte de service, saisisseziam.managed.disableServiceAccountKeyCreation
, et pour une contrainte personnalisée, saisissez son nom, par exempledisableGkeAccess
.Cliquez sur Exécuter la requête. La page du rapport affiche les paramètres de requête que vous avez saisis, ainsi qu'un tableau de résultats de tous les éléments sur lesquels cette contrainte est appliquée ou par lesquels elle est héritée.
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.
Vous pouvez visualiser l'héritage de la contrainte que vous avez analysée en sélectionnant au moins un élément de la liste, puis en cliquant sur Afficher l'héritage. Vous pouvez également accéder immédiatement à la vue de visualisation lorsque vous créez votre requête d'analyse en cliquant sur Analyser, puis sur Visualiser. Pour en savoir plus, consultez Visualiser l'héritage.
gcloud
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 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 contrainte de stratégie de l'organisation 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 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 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 composants correspondant à votre expression de filtrage. Les champs disponibles pour le filtrage sont
governed_resource.folders
,governed_resource.project
,governed_iam_policy.folders
etgoverned_iam_policy.project
. Par exemple,governed_resource.project="projects/1234567890"
ne renvoie que les composants associés au projet avec l'ID de projet1234567890
.
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 la ressource de votre organisation. Pour savoir comment rechercher votre ID d'organisation, consultez la section Créer et gérer des organisations.
CONSTRAINT_NAME: nom de la contrainte de stratégie de l'organisation 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 composants correspondant à votre expression de filtrage. Les champs disponibles pour le filtrage sont
governed_resource.folders
,governed_resource.project
,governed_iam_policy.folders
etgoverned_iam_policy.project
. Par exemple,governed_resource.project="projects/1234567890"
ne renvoie que les composants associés au projet avec l'ID de projet1234567890
.PAGE_SIZE: nombre de pages d'entrées de résultats que vous souhaitez afficher. Pour afficher un nombre illimité d'entrées, saisissez
unlimited
. Une requête effectuée avec cet indicateur défini renvoie une valeurnextPageToken
si le nombre total d'entrées de résultats est supérieur à PAGE_SIZE.PAGE_TOKEN: ne doit être défini que sur les requêtes après la première requête incluant l'indicateur
page_size
. Vous pouvez utiliser les valeursnextPageToken
reçues des réponses précédentes pour renvoyer une page de résultats spécifique.
La réponse JSON ressemble à 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" } } }
Visualiser l'héritage
Si vous avez activé le niveau Premium de Security Command Center au niveau de l'organisation, vous pouvez visualiser l'héritage des règles d'administration 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 requête d'analyse des règles d'administration pour les règles configurées, les conteneurs ou les composants. 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 hiérarchie des ressources pour les ressources sélectionnées dans votre requête d'analyse:
Indique si la ressource est une organisation, un dossier ou un projet.
Un point bleu indique que la ressource est sélectionnée dans la requête.
Indique que la ressource remplace la stratégie de sa ressource parente.
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 la stratégie par défaut est reliée à son parent par une ligne en pointillés.
Indique que la stratégie de la ressource fusionne avec celle de son parent.
Indique que la règle d'administration de cette ressource applique une contrainte booléenne ou une contrainte de liste avec des valeurs autorisées.
Indique que la règle d'administration de cette ressource est une contrainte de liste avec des valeurs refusées.
Indique que la règle d'administration de cette ressource est une contrainte booléenne qui n'est pas appliquée.
Étape suivante
- Découvrez comment utiliser des contraintes.
- Découvrez comment créer et gérer des contraintes personnalisées.