Analizza i criteri dell'organizzazione

Questa pagina contiene informazioni sull'analisi delle impostazioni dei criteri dell'organizzazione per vedere quali risorse sono coperte da un determinato criterio dell'organizzazione. Con Policy Analyzer per i criteri dell'organizzazione puoi creare una query di analisi per ottenere informazioni sui criteri dell'organizzazione personalizzati e predefiniti.

Una query di analisi è composta da un ambito e un vincolo.

  • Vincolo: specifica il nome della risorsa di un vincolo.
  • Ambito: specifica un'organizzazione per definire l'ambito dell'analisi. Tutti i criteri dell'organizzazione con il vincolo specificato definito in questo ambito sono inclusi nell'analisi.

Per ulteriori informazioni sui criteri dell'organizzazione, consulta l'introduzione al servizio Criteri dell'organizzazione. Per saperne di più su come creare vincoli personalizzati, consulta Creazione e gestione di vincoli personalizzati.

Prima di iniziare

  • Attiva Cloud Asset API.

    Abilita l'API

    Devi abilitare l'API nel progetto o nell'organizzazione che utilizzerai per inviare la query. Non deve essere necessariamente la stessa risorsa a cui hai definito l'ambito della query.

  • (Facoltativo) Se vuoi eseguire più di 20 query di analisi dei criteri per organizzazione al giorno, assicurati di avere attivato il livello premium di Security Command Center a livello di organizzazione. Per ulteriori informazioni, consulta Domande sulla fatturazione.

Autorizzazioni e ruoli richiesti

Per ottenere le autorizzazioni necessarie per eseguire l'analisi dei criteri dell'organizzazione, chiedi all'amministratore di concederti i seguenti ruoli IAM sulla risorsa dell'organizzazione in cui vuoi eseguire l'analisi:

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

Questi ruoli predefiniti contengono le autorizzazioni necessarie per eseguire un'analisi dei criteri dell'organizzazione. Per visualizzare le autorizzazioni esatte necessarie, espandi la sezione Autorizzazioni richieste:

Autorizzazioni obbligatorie

Per eseguire un'analisi dei criteri dell'organizzazione sono necessarie le seguenti autorizzazioni:

  • Per eseguire l'analisi:
    • cloudasset.assets.analyzeOrgPolicy
    • cloudasset.assets.searchAllResources
    • cloudasset.assets.searchAllIamPolicies
  • Per visualizzare i vincoli personalizzati: orgpolicy.customConstraints.get

Potresti anche essere in grado di ottenere queste autorizzazioni con i ruoli personalizzati o altri ruoli predefiniti.

Prezzi e quote

L'analizzatore dei criteri per i criteri dell'organizzazione su larga scala (oltre 20 query per organizzazione al giorno) e le visualizzazioni di ereditarietà sono disponibili solo per i clienti con attivazioni a livello di organizzazione di Security Command Center.

La quota per Policy Analyzer per i criteri dell'organizzazione è condivisa tra tutti gli strumenti di Policy Analyzer. Per ulteriori informazioni, consulta Domande sulla fatturazione.

Analizza i criteri configurati

Un criterio dell'organizzazione è creato a partire da un vincolo e da condizioni facoltative in base alle quali viene applicato. Puoi utilizzare Analizzatore criteri per restituire un elenco di criteri dell'organizzazione con un determinato vincolo e le risorse a cui sono associati.

Per ogni criterio dell'organizzazione rilevato nell'ambito della query, Policy Analyzer restituisce una voce di risultato. Una voce risultato contiene i seguenti campi:

  • consolidatedPolicy: la risorsa a cui è associato il criterio dell'organizzazione e l'applicazione effettiva dei criteri su tale risorsa in relazione alle regole di valutazione della gerarchia.

  • project: l'ID della risorsa di progetto a cui appartiene questo criterio consolidato.

  • folders: l'ID di qualsiasi risorsa della cartella predecessori della risorsa a cui è associato il criterio dell'organizzazione.

  • organization: l'ID della risorsa dell'organizzazione predecessore della risorsa a cui è associato il criterio dell'organizzazione.

  • policyBundle: il criterio dell'organizzazione configurato completo associato alla risorsa precedente e i criteri dell'organizzazione definiti nei predecessori nella gerarchia delle risorse.

Console

  1. Nella console Google Cloud, vai alla pagina Analizzatore criteri.

    Vai all'Analizzatore criteri

  2. Nella sezione Analizza criterio dell'organizzazione, trova il riquadro etichettato Come sono configurati i criteri dell'organizzazione per le risorse nella mia organizzazione? e fai clic su Crea query in quel riquadro.

  3. Nella casella Seleziona l'organizzazione query, seleziona l'organizzazione per la quale vuoi analizzare i criteri dell'organizzazione.

  4. Seleziona il tipo di vincolo da analizzare. Per un vincolo predefinito, seleziona Vincolo integrato. Per un vincolo personalizzato, seleziona Vincolo personalizzato.

  5. Inserisci il nome del vincolo da analizzare. Il prefisso del tipo di vincolo che stai analizzando è già incluso. Ad esempio, per il vincolo di limitazione di dominio predefinito, inserisci iam.allowedPolicyMemberDomains e per un vincolo personalizzato inseriscine il nome, ad esempio disableGkeAutoUpgrade.

  6. Fai clic su Analizza, quindi su Esegui query. La pagina del report mostra i parametri di query che hai inserito e una tabella dei risultati di tutte le risorse a cui è applicato direttamente il vincolo.

  7. Puoi salvare questa query per visualizzarla di nuovo in un secondo momento facendo clic su Copia URL query. Per visualizzare questa query, vai all'URL generato.

  8. Puoi visualizzare l'ereditarietà del vincolo analizzato selezionando almeno una risorsa dall'elenco, quindi facendo clic su Visualizza ereditarietà. Puoi anche passare immediatamente alla visualizzazione quando crei la query di analisi, facendo clic su Analizza e poi su Visualizza. Per saperne di più, consulta Visualizzare l'ereditarietà.

gcloud

Per ottenere un'analisi di come un vincolo del criterio dell'organizzazione viene applicato all'interno di un'organizzazione, utilizza il comando gcloud asset analyze-org-policies:

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

Sostituisci quanto segue:

  • CONSTRAINT_NAME: il nome del vincolo del criterio dell'organizzazione da analizzare. Per un elenco dei vincoli, consulta Vincoli dei criteri dell'organizzazione.

  • ORGANIZATION_ID: l'ID della risorsa organizzazione. Per saperne di più su come trovare l'ID organizzazione, vedi Creazione e gestione delle organizzazioni.

  • LIMIT_POLICIES: il numero di voci di risultati che vuoi visualizzare. Per visualizzare un numero illimitato di voci, inserisci unlimited.

  • FILTER_QUERY: una query di filtro per visualizzare solo i criteri che corrispondono all'espressione di filtro. L'unico campo disponibile per il filtro è consolidated_policy.attached_resource. Ad esempio, consolidated_policy.attached_resource="//cloudresourcemanager.googleapis.com/projects/1234567890" restituirà solo i criteri associati al progetto con l'ID progetto 1234567890.

La risposta YAML è simile alla seguente:

Esempio di risposta 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

Per ottenere un'analisi di come un vincolo del criterio dell'organizzazione viene applicato all'interno di un'organizzazione, utilizza il metodo analyzeOrgPolicies dell'API Cloud Asset.

Metodo HTTP e URL:

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

Corpo JSON della richiesta:

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

Sostituisci quanto segue:

  • ORGANIZATION_ID: l'ID della risorsa organizzazione. Per saperne di più su come trovare l'ID organizzazione, vedi Creazione e gestione delle organizzazioni.

  • CONSTRAINT_NAME: il nome del vincolo del criterio dell'organizzazione da analizzare. Per un elenco dei vincoli, consulta Vincoli dei criteri dell'organizzazione.

  • FILTER_QUERY: una query di filtro per visualizzare solo i criteri che corrispondono all'espressione di filtro. L'unico campo disponibile per il filtro è consolidated_policy.attached_resource. Ad esempio, consolidated_policy.attached_resource="//cloudresourcemanager.googleapis.com/projects/1234567890" restituirà solo i criteri associati al progetto con l'ID progetto 1234567890.

  • PAGE_SIZE: il numero di voci di risultati per pagina che vuoi visualizzare. Per visualizzare un numero illimitato di voci, inserisci unlimited. Una richiesta effettuata con questo set di flag restituisce un valore nextPageToken se il numero totale di voci di risultati è maggiore del PAGE_SIZE.

  • PAGE_TOKEN: da impostare solo per le richieste successive alla prima richiesta che include il flag page_size. Puoi utilizzare i valori nextPageToken ricevuti dalle risposte precedenti per restituire una determinata pagina di risultati.

La risposta JSON è simile alla seguente:

Esempio di risposta 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": {}
    }
  }
}

Analizza i container

Un container in questo contesto è un progetto, una cartella o una risorsa organizzazione. Puoi utilizzare l'Analizzatore criteri per restituire un elenco di tutti i container a cui sono applicati criteri dell'organizzazione a cui è applicato un determinato vincolo. Policy Analyzer restituisce anche il nome completo di ciascun contenitore, il contenitore principale nella gerarchia e i tag ereditati o associati al contenitore.

Per ogni contenitore rilevato nell'ambito della query, Policy Analyzer restituisce una voce di risultato. Una voce risultato contiene i seguenti campi:

  • consolidatedPolicy: il container a cui è associato il criterio dell'organizzazione e l'applicazione effettiva dei criteri in quel container in relazione alle regole di valutazione della gerarchia.

  • conditionEvaluation: se le condizioni incluse comportano l'applicazione del criterio dell'organizzazione, evaluationValue è TRUE. Se le condizioni comportano la mancata applicazione del criterio dell'organizzazione, evaluationValue è FALSE. Se la condizione non è supportata da una o più risorse su cui viene applicato il criterio dell'organizzazione, viene restituita la condizione stessa.

  • effectiveTags: tutti i tag direttamente collegati al contenitore o ereditati dal contenitore e dai relativi elementi principali nella gerarchia.

  • folders: l'ID di eventuali risorse della cartella contenenti il container a cui è associato il criterio dell'organizzazione.

  • fullResourceName: il nome completo del contenitore.

  • organization: l'ID della risorsa dell'organizzazione predecessore del container a cui è associato il criterio dell'organizzazione.

  • parent: il nome completo della risorsa dell'elemento padre di questo container.

  • policyBundle: il criterio dell'organizzazione configurato direttamente nel container, se esistente, e i criteri dell'organizzazione definiti sui predecessori del container nella gerarchia delle risorse.

  • project: l'ID del container a cui è associato il criterio dell'organizzazione, se si tratta di una risorsa di progetto.

Console

  1. Nella console Google Cloud, vai alla pagina Analizzatore criteri.

    Vai all'Analizzatore criteri

  2. Nella sezione Analizza criterio dell'organizzazione, trova il riquadro etichettato A quali container è applicato in modo forzato un vincolo del criterio dell'organizzazione? e fai clic su Crea query in quel riquadro.

  3. Nella casella Seleziona l'organizzazione query, seleziona l'organizzazione per la quale vuoi analizzare i criteri dell'organizzazione.

  4. Seleziona il tipo di vincolo da analizzare. Per un vincolo predefinito, seleziona Vincolo integrato. Per un vincolo personalizzato, seleziona Vincolo personalizzato.

  5. Inserisci il nome del vincolo da analizzare. Il prefisso del tipo di vincolo che stai analizzando è già incluso. Ad esempio, per il vincolo di limitazione di dominio predefinito, inserisci iam.allowedPolicyMemberDomains e per un vincolo personalizzato inseriscine il nome, ad esempio disableGkeAutoUpgrade.

  6. Fai clic su Esegui query. La pagina del report mostra i parametri di ricerca che hai inserito e una tabella dei risultati di tutti i container su cui questo vincolo è applicato o ereditato.

  7. Puoi salvare questa query per visualizzarla di nuovo in un secondo momento facendo clic su Copia URL query. Per visualizzare questa query, vai all'URL generato.

  8. Per visualizzare l'ereditarietà del vincolo analizzato, seleziona almeno un container dall'elenco e fai clic su Visualizza ereditarietà. Puoi anche passare immediatamente alla visualizzazione quando crei la query di analisi, facendo clic su Analizza e poi su Visualizza. Per saperne di più, consulta Visualizzare l'ereditarietà.

gcloud

Per ottenere un'analisi di come un vincolo del criterio dell'organizzazione viene applicato ai container all'interno di un'organizzazione, utilizza il comando 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

Sostituisci quanto segue:

  • CONSTRAINT_NAME: il nome del vincolo del criterio dell'organizzazione da analizzare. Per un elenco dei vincoli, consulta Vincoli dei criteri dell'organizzazione.

  • ORGANIZATION_ID: l'ID della risorsa organizzazione. Per saperne di più su come trovare l'ID organizzazione, vedi Creazione e gestione delle organizzazioni.

  • LIMIT_CONTAINERS: il numero di voci di risultati che vuoi visualizzare. Per visualizzare un numero illimitato di voci, inserisci unlimited.

  • FILTER_QUERY: una query di filtro per visualizzare solo i container che corrispondono all'espressione di filtro. L'unico campo disponibile per il filtro è parent. Ad esempio, parent="//cloudresourcemanager.googleapis.com/organizations/012345678901" restituirebbe solo i container secondari dell'organizzazione con l'ID organizzazione 012345678901.

La risposta YAML è simile alla seguente:

Esempio di risposta 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

Per ottenere un'analisi di come un vincolo del criterio dell'organizzazione viene applicato ai container all'interno di un'organizzazione, utilizza il metodo analyzeOrgPolicyGovernedContainers dell'API Cloud Asset.

Metodo HTTP e URL:

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

Corpo JSON della richiesta:

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

Sostituisci quanto segue:

  • ORGANIZATION_ID: l'ID della risorsa organizzazione. Per saperne di più su come trovare l'ID organizzazione, vedi Creazione e gestione delle organizzazioni.

  • CONSTRAINT_NAME: il nome del vincolo del criterio dell'organizzazione da analizzare. Per un elenco dei vincoli, consulta Vincoli dei criteri dell'organizzazione.

  • FILTER_QUERY: una query di filtro per visualizzare solo i container che corrispondono all'espressione di filtro. L'unico campo disponibile per il filtro è parent. Ad esempio, parent="//cloudresourcemanager.googleapis.com/organizations/012345678901" restituirà solo i container secondari dell'organizzazione con l'ID organizzazione 012345678901.

  • PAGE_SIZE: il numero di pagine di voci dei risultati che vuoi visualizzare. Per visualizzare un numero illimitato di voci, inserisci unlimited. Una richiesta effettuata con questo set di flag restituisce un valore nextPageToken se il numero totale di voci di risultati è maggiore del PAGE_SIZE.

  • PAGE_TOKEN: da impostare solo per le richieste successive alla prima richiesta che include il flag page_size. Puoi utilizzare i valori nextPageToken ricevuti dalle risposte precedenti per restituire una determinata pagina di risultati.

La risposta JSON è simile alla seguente:

Esempio di risposta 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": {}
    }
  }
}

Analizzare gli asset

Un asset in questo contesto è una risorsa Google Cloud o un criterio di autorizzazione di Identity and Access Management (IAM). Puoi utilizzare Analizzatore criteri per restituire un elenco di tutti gli asset a cui sono stati applicati criteri dell'organizzazione a cui è applicato un determinato vincolo. Sono supportati i vincoli personalizzati e i seguenti vincoli predefiniti:

  • 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 restituisce il nome completo di ogni asset, l'asset padre nella gerarchia e qualsiasi progetto predecessore, cartella e risorsa organizzazione al di sopra dell'asset nella gerarchia.

Per ogni asset rilevato nell'ambito della query, Analizzatore criteri restituisce una voce di risultato.

Una voce di risultato per una risorsa contiene i seguenti campi:

  • consolidatedPolicy: la risorsa a cui è associato il criterio dell'organizzazione e l'applicazione effettiva dei criteri su tale risorsa in relazione alle regole di valutazione della gerarchia.

  • conditionEvaluation: se le condizioni incluse comportano l'applicazione del criterio dell'organizzazione, evaluationValue è TRUE. Se le condizioni comportano la mancata applicazione del criterio dell'organizzazione, evaluationValue è FALSE. Se la condizione non è supportata da una o più risorse su cui viene applicato il criterio dell'organizzazione, viene restituita la condizione stessa.

  • assetType: il tipo di risorsa dell'asset.

  • effectiveTags: tutti i tag direttamente collegati o ereditati dalla risorsa a cui è associato il criterio dell'organizzazione e dai padre della risorsa nella gerarchia.

  • folders: l'ID di eventuali risorse della cartella contenenti la risorsa a cui è associato il criterio dell'organizzazione.

  • fullResourceName: il nome completo della risorsa.

  • organization: il nome della risorsa relativa dell'organizzazione che contiene la risorsa.

  • parent: il nome completo dell'elemento padre della risorsa.

  • project: l'ID del progetto che contiene la risorsa.

  • policyBundle: il criterio dell'organizzazione configurato completo associato alla risorsa precedente e i criteri dell'organizzazione definiti nei predecessori nella gerarchia delle risorse.

Una voce di risultato per un criterio di autorizzazione contiene i seguenti campi:

  • consolidatedPolicy: la risorsa a cui è associato il criterio dell'organizzazione e l'applicazione effettiva dei criteri su tale risorsa in relazione alle regole di valutazione della gerarchia.

  • assetType: il tipo di risorsa a cui è associato il criterio di autorizzazione.

  • attachedResource: il nome completo della risorsa a cui è associato il criterio di autorizzazione.

  • folders: il nome risorsa relativa delle cartelle che contengono il criterio di autorizzazione.

  • organization: il nome della risorsa relativa dell'organizzazione che contiene il criterio di autorizzazione.

  • policy: il criterio di autorizzazione.

  • project: il nome della risorsa relativa del progetto che contiene il criterio di autorizzazione.

  • policyBundle: il criterio dell'organizzazione configurato completo associato alla risorsa precedente e i criteri dell'organizzazione definiti nei predecessori nella gerarchia delle risorse.

Console

  1. Nella console Google Cloud, vai alla pagina Analizzatore criteri.

    Vai all'Analizzatore criteri

  2. Nella sezione Analizza criterio organizzazione, trova il riquadro denominato A quali asset è applicato in modo forzato un vincolo del criterio dell'organizzazione? e fai clic su Crea query in quel riquadro.

  3. Nella casella Seleziona l'organizzazione query, seleziona l'organizzazione per la quale vuoi analizzare i criteri dell'organizzazione.

  4. Seleziona il tipo di vincolo da analizzare. Per un vincolo predefinito, seleziona Vincolo integrato. Per un vincolo personalizzato, seleziona Vincolo personalizzato.

  5. Inserisci il nome del vincolo da analizzare. Il prefisso del tipo di vincolo che stai analizzando è già incluso. Ad esempio, per il vincolo di accesso predefinito a livello di bucket, inserisci storage.uniformBucketLevelAccess e per un vincolo personalizzato inseriscine il nome, ad esempio disableGkeAccess.

  6. Fai clic su Esegui query. La pagina del report mostra i parametri di ricerca inseriti e una tabella dei risultati di tutti gli asset a cui viene applicato o da cui eredita questo vincolo.

  7. Puoi salvare questa query per visualizzarla di nuovo in un secondo momento facendo clic su Copia URL query. Per visualizzare questa query, vai all'URL generato.

  8. Puoi visualizzare l'ereditarietà del vincolo analizzato selezionando almeno un asset dall'elenco, quindi facendo clic su Visualizza ereditarietà. Puoi anche passare immediatamente alla visualizzazione quando crei la query di analisi, facendo clic su Analizza e poi su Visualizza. Per saperne di più, consulta Visualizzare l'ereditarietà.

gcloud

Per ottenere un'analisi di come un vincolo del criterio dell'organizzazione viene applicato agli asset all'interno di un'organizzazione, utilizza il comando 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

Sostituisci quanto segue:

  • CONSTRAINT_NAME: il nome del vincolo del criterio dell'organizzazione da analizzare. Per un elenco dei vincoli, consulta Vincoli dei criteri dell'organizzazione.

  • ORGANIZATION_ID: l'ID della risorsa organizzazione. Per saperne di più su come trovare l'ID organizzazione, vedi Creazione e gestione delle organizzazioni.

  • LIMIT_ASSETS: il numero di voci di risultati che vuoi visualizzare. Per visualizzare un numero illimitato di voci, inserisci unlimited.

  • FILTER_QUERY: una query di filtro per visualizzare solo gli asset che corrispondono all'espressione di filtro. I campi disponibili per il filtro sono governed_resource.folders, governed_resource.project, governed_iam_policy.folders e governed_iam_policy.project. Ad esempio, governed_resource.project="projects/1234567890" restituirà solo gli asset collegati al progetto con l'ID progetto 1234567890.

La risposta YAML è simile alla seguente:

Esempio di risposta 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

Per ottenere un'analisi di come un vincolo del criterio dell'organizzazione viene applicato agli asset all'interno di un'organizzazione, utilizza il metodo analyzeOrgPolicyGovernedAssets dell'API Cloud Asset.

Metodo HTTP e URL:

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

Corpo JSON della richiesta:

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

Sostituisci quanto segue:

  • ORGANIZATION_ID: l'ID della risorsa organizzazione. Per saperne di più su come trovare l'ID organizzazione, vedi Creazione e gestione delle organizzazioni.

  • CONSTRAINT_NAME: il nome del vincolo del criterio dell'organizzazione da analizzare. Per un elenco dei vincoli, consulta Vincoli dei criteri dell'organizzazione.

  • FILTER_QUERY: una query di filtro per visualizzare solo gli asset che corrispondono all'espressione di filtro. I campi disponibili per il filtro sono governed_resource.folders, governed_resource.project, governed_iam_policy.folders e governed_iam_policy.project. Ad esempio, governed_resource.project="projects/1234567890" restituirà solo gli asset collegati al progetto con l'ID progetto 1234567890.

  • PAGE_SIZE: il numero di pagine di voci dei risultati che vuoi visualizzare. Per visualizzare un numero illimitato di voci, inserisci unlimited. Una richiesta effettuata con questo set di flag restituisce un valore nextPageToken se il numero totale di voci di risultati è maggiore del PAGE_SIZE.

  • PAGE_TOKEN: da impostare solo per le richieste successive alla prima richiesta che include il flag page_size. Puoi utilizzare i valori nextPageToken ricevuti dalle risposte precedenti per restituire una determinata pagina di risultati.

La risposta JSON è simile alla seguente:

Esempio di risposta 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"
    }
  }
}

Visualizzare l'ereditarietà

Se hai un'attivazione a livello di organizzazione del livello Premium di Security Command Center, puoi visualizzare l'ereditarietà dei criteri dell'organizzazione che hai analizzato utilizzando la console Google Cloud.

Per visualizzare la visualizzazione ereditarietà, crea una query di analisi dei criteri dell'organizzazione per criteri configurati, containers o asset. Nella pagina Esegui analisi delle query, fai clic su Analizza e seleziona Visualizza.

Puoi anche accedere all'URL di una query salvata, selezionare le risorse da evidenziare, quindi fare clic su Visualizza ereditarietà.

La pagina Eredità delle risorse mostra una visualizzazione della gerarchia delle risorse selezionate nella query di analisi:

Visualizzazione dell'ereditarietà dei criteri dell'organizzazione in una gerarchia di risorse. Visualizzazione di un criterio booleano non applicato.

  1. Indica se la risorsa è un'organizzazione, una cartella o un progetto.

  2. Un punto blu indica che la risorsa è selezionata nella query.

  3. Indica che la risorsa sostituisce il criterio della risorsa padre.

  4. Indica che la risorsa reimposta il criterio dell'organizzazione sul valore predefinito gestito da Google per quel criterio. Una risorsa che reimposta il criterio sul valore predefinito ha una linea tratteggiata che la collega all'elemento padre.

  5. Indica il criterio di unione delle risorse con l'elemento padre.

  6. Indica che il criterio dell'organizzazione su questa risorsa applica in modo forzato un vincolo booleano o un vincolo di elenco con valori consentiti.

  7. Indica che il criterio dell'organizzazione su questa risorsa è un vincolo di elenco con valori negati.

  8. Indica che il criterio dell'organizzazione su questa risorsa è un vincolo booleano non applicato in modo forzato.

Passaggi successivi