Questa pagina contiene informazioni sull'analisi delle impostazioni dei criteri dell'organizzazione per vedere quali risorse sono coperte da quali criteri dell'organizzazione. Utilizzando 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. Nell'analisi sono inclusi tutti i criteri dell'organizzazione con il vincolo specificato definito in questo ambito.
Per saperne di più sulle policy dell'organizzazione, consulta la pagina Introduzione al servizio Policy dell'organizzazione.
Per saperne di più su come creare vincoli personalizzati, vedi Creare e gestire vincoli personalizzati.
Per ulteriori informazioni sui vincoli gestiti, consulta la pagina Utilizzo dei vincoli.
Prima di iniziare
Enable the Cloud Asset API.
Devi abilitare l'API nel progetto che utilizzerai per inviare la query. Non deve essere la stessa risorsa a cui limiti l'ambito della query.
(Facoltativo) Se vuoi eseguire più di 20 query di analisi delle policy al giorno per organizzazione, assicurati di aver attivato Security Command Center Premium o Enterprise a livello di organizzazione. Per ulteriori informazioni, consulta Domande sulla fatturazione.
Ruoli e autorizzazioni richiesti
Per ottenere le autorizzazioni necessarie per eseguire un'analisi delle policy dell'organizzazione, chiedi all'amministratore di concederti i seguenti ruoli IAM nella risorsa organizzazione in cui vuoi eseguire l'analisi:
-
Per eseguire l'analisi:
Visualizzatore di asset cloud (
roles/cloudasset.viewer
) -
Per visualizzare i vincoli:
Visualizzatore criterio dell'organizzazione (
roles/orgpolicy.policyViewer
)
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Questi ruoli predefiniti contengono le autorizzazioni necessarie per eseguire un'analisi delle policy dell'organizzazione. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per eseguire un'analisi delle policy 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 e gestiti:
orgpolicy.customConstraints.get
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Prezzi e quote
Policy Analyzer per le policy dell'organizzazione su larga scala (più di 20 query al giorno per organizzazione) e le visualizzazioni dell'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 Policy Analyzer. Per ulteriori informazioni, vedi Domande sulla fatturazione.
Analizza le policy configurate
Un criterio dell'organizzazione è costituito da un vincolo e da condizioni facoltative in base alle quali viene applicato il vincolo. Puoi utilizzare l'Analizzatore policy per restituire un elenco di policy dell'organizzazione con un determinato vincolo e le risorse a cui sono associate.
Per ogni norma dell'organizzazione rilevata nell'ambito della query, Policy Analyzer restituisce una voce di risultato. Una voce di risultato contiene i seguenti campi:
consolidatedPolicy
: la risorsa a cui è collegata la policy dell'organizzazione e l'applicazione effettiva della policy su quella risorsa in relazione alle regole di valutazione gerarchica.project
: l'ID della risorsa progetto a cui appartiene questa norma consolidata.folders
: l'ID di tutte le risorse cartella che sono antenati della risorsa a cui è collegata la policy dell'organizzazione.organization
: l'ID della risorsa organizzazione che è l'antenato della risorsa a cui è collegata la policy dell'organizzazione.policyBundle
: il criterio dell'organizzazione configurato completo collegato alla risorsa precedente e i criteri dell'organizzazione definiti sui relativi antenati nella gerarchia delle risorse.
Se le tue risorse sono protette da un perimetro di servizio Controlli di servizio VPC, devi creare una regola di uscita nel perimetro della risorsa dell'organizzazione che consenta l'accesso al servizio cloudasset.googleapis.com
e al metodo google.cloud.asset.v1.AssetService.SearchAllResources
. Se non hai una regola di uscita, la richiesta non andrà a buon fine e verrà visualizzato un errore NETWORK_NOT_IN_SAME_SERVICE_PERIMETER
. Per ulteriori informazioni, consulta
Eseguire il debug delle richieste bloccate dai Controlli di servizio VPC.
Console
Nella console Google Cloud , vai alla pagina Policy Analyzer.
Nella sezione Analizza policy dell'organizzazione, trova il riquadro etichettato Dove sono configurate le policy dell'organizzazione specifiche? e fai clic su Crea query in questo riquadro.
Nella casella Seleziona organizzazione query, seleziona l'organizzazione per cui vuoi analizzare i criteri dell'organizzazione.
Seleziona il tipo di vincolo che vuoi analizzare. Per un vincolo predefinito o gestito, seleziona Vincolo integrato. Per un vincolo personalizzato, seleziona Vincolo personalizzato.
Inserisci il nome del vincolo che vuoi analizzare. Il prefisso per il tipo di vincolo che stai analizzando è già incluso. Ad esempio, per il vincolo di restrizione del dominio predefinito, inserisci
iam.allowedPolicyMemberDomains
, per il vincolo di creazione dell'account di servizio gestito, inserisciiam.managed.disableServiceAccountKeyCreation
e per un vincolo personalizzato, inserisci il suo nome, ad esempiodisableGkeAutoUpgrade
.Fai clic su Analizza e poi su Esegui query. La pagina del report mostra i parametri della query che hai inserito e una tabella dei risultati di tutte le risorse a cui viene applicato direttamente questo vincolo.
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.
Puoi visualizzare l'ereditarietà del vincolo analizzato selezionando almeno una risorsa dall'elenco e poi 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 la sezione Visualizzare l'ereditarietà.
gcloud
Per ottenere un'analisi di come viene applicato un vincolo dei criteri dell'organizzazione
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 di policy dell'organizzazione che vuoi analizzare. Per un elenco dei vincoli, vedi Vincoli dei criteri dell'organizzazione.
ORGANIZATION_ID: l'ID della risorsa organizzazione. Per saperne di più su come trovare l'ID organizzazione, consulta la pagina Creare e gestire le 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 le norme 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"
restituirebbe solo i criteri collegati al progetto con l'ID progetto1234567890
.
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 viene applicato un vincolo dei criteri dell'organizzazione 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, consulta la pagina Creare e gestire le organizzazioni.
CONSTRAINT_NAME: il nome del vincolo di policy dell'organizzazione che vuoi analizzare. Per un elenco dei vincoli, vedi Vincoli dei criteri dell'organizzazione.
FILTER_QUERY: una query di filtro per visualizzare solo le norme 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"
restituirebbe solo i criteri collegati al progetto con l'ID progetto1234567890
.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 flag impostato restituisce un valorenextPageToken
se il numero totale di voci dei risultati è maggiore di PAGE_SIZE.PAGE_TOKEN: da impostare solo nelle richieste successive alla prima richiesta che include il flag
page_size
. Puoi utilizzare i valorinextPageToken
ricevuti dalle risposte precedenti per restituire una pagina specifica 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
In questo contesto, un container è una risorsa di progetto, cartella o organizzazione. Puoi utilizzare Policy Analyzer per restituire un elenco di tutti i container a cui sono stati applicati in modo forzato criteri dell'organizzazione con un vincolo specifico. Policy Analyzer restituisce anche il nome completo di ogni contenitore, l'elemento padre del contenitore nella gerarchia e i tag ereditati o collegati al contenitore.
Per ogni contenitore rilevato nell'ambito della query, Policy Analyzer restituisce una voce di risultato. Una voce di risultato contiene i seguenti campi:
consolidatedPolicy
: il container a cui è allegato il criterio dell'organizzazione e l'applicazione effettiva del criterio su quel container in relazione alle regole di valutazione gerarchica.conditionEvaluation
: se le condizioni incluse comportano l'applicazione della policy 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 applicata la norma dell'organizzazione, viene restituita la condizione stessa.effectiveTags
: tutti i tag collegati direttamente o ereditati dal contenitore e dai relativi contenitori principali nella gerarchia.folders
: l'ID di qualsiasi risorsa cartella che contenga il contenitore a cui è collegata la policy dell'organizzazione.fullResourceName
: il nome completo del container.organization
: l'ID della risorsa organizzazione che è l'antenato del contenitore a cui è collegata la policy dell'organizzazione.parent
: il nome completo della risorsa padre di questo container.policyBundle
: il criterio dell'organizzazione configurato direttamente sul contenitore, se esistente, e i criteri dell'organizzazione definiti sugli antenati del contenitore nella gerarchia delle risorse.project
: l'ID del contenitore a cui è collegata la policy dell'organizzazione, se si tratta di una risorsa di progetto.
Se le tue risorse sono protette da un perimetro di servizio Controlli di servizio VPC, devi creare una regola di uscita nel perimetro della risorsa dell'organizzazione che consenta l'accesso al servizio cloudasset.googleapis.com
e al metodo google.cloud.asset.v1.AssetService.SearchAllResources
. Se non hai una regola di uscita, la richiesta non andrà a buon fine e verrà visualizzato un errore NETWORK_NOT_IN_SAME_SERVICE_PERIMETER
. Per ulteriori informazioni, consulta
Eseguire il debug delle richieste bloccate dai Controlli di servizio VPC.
Console
Nella console Google Cloud , vai alla pagina Policy Analyzer.
Nella sezione Analizza la policy dell'organizzazione, individua il riquadro con l'etichetta Quali progetti o cartelle sono interessati da un vincolo della policy dell'organizzazione? e fai clic su Crea query in questo riquadro.
Nella casella Seleziona organizzazione query, seleziona l'organizzazione per cui vuoi analizzare i criteri dell'organizzazione.
Seleziona il tipo di vincolo che vuoi analizzare. Per un vincolo predefinito o gestito, seleziona Vincolo integrato. Per un vincolo personalizzato, seleziona Vincolo personalizzato.
Inserisci il nome del vincolo che vuoi analizzare. Il prefisso per il tipo di vincolo che stai analizzando è già incluso. Ad esempio, per il vincolo di restrizione del dominio predefinito, inserisci
iam.allowedPolicyMemberDomains
, per il vincolo di creazione dell'account di servizio gestito, inserisciiam.managed.disableServiceAccountKeyCreation
e per un vincolo personalizzato, inserisci il suo nome, ad esempiodisableGkeAutoUpgrade
.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 contenitori su cui viene applicato o ereditato questo vincolo.
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.
Puoi visualizzare l'ereditarietà del vincolo analizzato selezionando almeno un contenitore dall'elenco e poi 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 la sezione Visualizzare l'ereditarietà.
gcloud
Per ottenere un'analisi di come viene applicato un vincolo dei criteri dell'organizzazione 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 di policy dell'organizzazione che vuoi analizzare. Per un elenco dei vincoli, vedi Vincoli dei criteri dell'organizzazione.
ORGANIZATION_ID: l'ID della risorsa organizzazione. Per saperne di più su come trovare l'ID organizzazione, consulta la pagina Creare e gestire le organizzazioni.
LIMIT_CONTAINERS: il numero di voci dei 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 contenitori secondari dell'organizzazione con l'ID organizzazione012345678901
.
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 viene applicato un vincolo dei criteri dell'organizzazione 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, consulta la pagina Creare e gestire le organizzazioni.
CONSTRAINT_NAME: il nome del vincolo di policy dell'organizzazione che vuoi analizzare. Per un elenco dei vincoli, vedi 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"
restituirebbe solo i contenitori secondari dell'organizzazione con l'ID organizzazione012345678901
.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 flag impostato restituisce un valorenextPageToken
se il numero totale di voci dei risultati è maggiore di PAGE_SIZE.PAGE_TOKEN: da impostare solo nelle richieste successive alla prima richiesta che include il flag
page_size
. Puoi utilizzare i valorinextPageToken
ricevuti dalle risposte precedenti per restituire una pagina specifica 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
In questo contesto, un asset è una Google Cloud risorsa o un criterio di autorizzazione Identity and Access Management (IAM). Puoi utilizzare Policy Analyzer per restituire un elenco di tutti gli asset a cui sono stati applicati in modo forzato criteri dell'organizzazione con un vincolo specifico. Sono supportati i vincoli personalizzati, i vincoli gestiti 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, il relativo elemento principale nella gerarchia e qualsiasi risorsa di progetto, cartella e organizzazione antenata sopra l'asset nella gerarchia.
Per ogni asset rilevato nell'ambito della query, Policy Analyzer restituisce una voce di risultato.
Una voce di risultato per una risorsa contiene i seguenti campi:
consolidatedPolicy
: la risorsa a cui è collegata la policy dell'organizzazione e l'applicazione effettiva della policy su quella risorsa in relazione alle regole di valutazione gerarchica.conditionEvaluation
: se le condizioni incluse comportano l'applicazione della policy 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 applicata la policy dell'organizzazione, viene restituita la condizione stessa.assetType
: il tipo di risorsa dell'asset.effectiveTags
: tutti i tag collegati direttamente o ereditati dalla risorsa a cui sono collegati i criteri dell'organizzazione e dai relativi genitori nella gerarchia.folders
: l'ID di qualsiasi risorsa cartella che contenga la risorsa a cui è collegata la norma dell'organizzazione.fullResourceName
: il nome completo della risorsa.organization
: il nome della risorsa relativa dell'organizzazione che contiene la risorsa.parent
: il nome completo della risorsa principale della risorsa.project
: l'ID del progetto che contiene la risorsa.policyBundle
: il criterio dell'organizzazione configurato completo collegato alla risorsa precedente e i criteri dell'organizzazione definiti sui relativi antenati nella gerarchia delle risorse.
Una voce di risultato per una policy di autorizzazione contiene i seguenti campi:
consolidatedPolicy
: la risorsa a cui è collegata la policy dell'organizzazione e l'applicazione effettiva della policy su quella risorsa in relazione alle regole di valutazione gerarchica.assetType
: il tipo di risorsa a cui sono associati i criteri di autorizzazione.attachedResource
: il nome completo della risorsa a cui è collegata la policy di autorizzazione.folders
: il nome della risorsa relativa di tutte le cartelle che contengono la policy di autorizzazione.organization
: il nome della risorsa relativa dell'organizzazione che contiene la policy di autorizzazione.policy
: il criterio di autorizzazione.project
: il nome della risorsa relativa del progetto che contiene il criterio consenti.policyBundle
: il criterio dell'organizzazione configurato completo collegato alla risorsa precedente e i criteri dell'organizzazione definiti sui relativi antenati nella gerarchia delle risorse.
Se le tue risorse sono protette da un perimetro di servizio Controlli di servizio VPC, devi creare una regola di uscita nel perimetro della risorsa dell'organizzazione che consenta l'accesso al servizio cloudasset.googleapis.com
e al metodo google.cloud.asset.v1.AssetService.SearchAllResources
. Se non hai una regola di uscita, la richiesta non andrà a buon fine e verrà visualizzato un errore NETWORK_NOT_IN_SAME_SERVICE_PERIMETER
. Per ulteriori informazioni, consulta
Eseguire il debug delle richieste bloccate dai Controlli di servizio VPC.
Console
Nella console Google Cloud , vai alla pagina Policy Analyzer.
Nella sezione Analizza policy dell'organizzazione, individua il riquadro etichettato Quali risorse sono interessate da un vincolo della policy dell'organizzazione? e fai clic su Crea query in questo riquadro.
Nella casella Seleziona organizzazione query, seleziona l'organizzazione per cui vuoi analizzare i criteri dell'organizzazione.
Seleziona il tipo di vincolo che vuoi analizzare. Per un vincolo predefinito o gestito, seleziona Vincolo integrato. Per un vincolo personalizzato, seleziona Vincolo personalizzato.
Inserisci il nome del vincolo che vuoi analizzare. Il prefisso per il tipo di vincolo che stai analizzando è già incluso. Ad esempio, per il vincolo di accesso predefinito a livello di bucket, inserisci
storage.uniformBucketLevelAccess
, per il vincolo gestito di creazione dell'account di servizio, inserisciiam.managed.disableServiceAccountKeyCreation
e per un vincolo personalizzato, inserisci il relativo nome, ad esempiodisableGkeAccess
.Fai clic su Esegui query. La pagina del report mostra i parametri di ricerca che hai inserito e una tabella dei risultati di tutte le risorse a cui viene applicato o ereditato questo vincolo.
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.
Puoi visualizzare l'ereditarietà del vincolo analizzato selezionando almeno un asset dall'elenco e poi 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 la sezione Visualizzare l'ereditarietà.
gcloud
Per ottenere un'analisi di come viene applicato un vincolo dei criteri dell'organizzazione alle risorse 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 di policy dell'organizzazione che vuoi analizzare. Per un elenco dei vincoli, vedi Vincoli dei criteri dell'organizzazione.
ORGANIZATION_ID: l'ID della risorsa organizzazione. Per saperne di più su come trovare l'ID organizzazione, consulta la pagina Creare e gestire le 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
egoverned_iam_policy.project
. Ad esempio,governed_resource.project="projects/1234567890"
restituirebbe solo gli asset collegati al progetto con l'ID progetto1234567890
.
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 viene applicato un vincolo dei criteri dell'organizzazione 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, consulta la pagina Creare e gestire le organizzazioni.
CONSTRAINT_NAME: il nome del vincolo di policy dell'organizzazione che vuoi analizzare. Per un elenco dei vincoli, vedi 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
egoverned_iam_policy.project
. Ad esempio,governed_resource.project="projects/1234567890"
restituirebbe solo gli asset collegati al progetto con l'ID progetto1234567890
.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 flag impostato restituisce un valorenextPageToken
se il numero totale di voci dei risultati è maggiore di PAGE_SIZE.PAGE_TOKEN: da impostare solo nelle richieste successive alla prima richiesta che include il flag
page_size
. Puoi utilizzare i valorinextPageToken
ricevuti dalle risposte precedenti per restituire una pagina specifica 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 o Enterprise di Security Command Center, puoi visualizzare l'ereditarietà dei criteri dell'organizzazione che hai analizzato utilizzando la console Google Cloud .
Per visualizzare la visualizzazione dell'ereditarietà, crea una query di analisi dei criteri dell'organizzazione per criteri configurati, container o asset. Nella pagina Esegui analisi query, fai clic su Analizza e poi seleziona Visualizza.
Puoi anche andare all'URL di una query salvata, selezionare le risorse che vuoi evidenziare e poi fare clic su
Visualizza ereditarietà.La pagina Ereditarietà delle risorse mostra una visualizzazione della gerarchia delle risorse per le risorse selezionate nella query di analisi:
Indica se la risorsa è un'organizzazione, una cartella o un progetto.
Un punto blu indica che la risorsa è selezionata nella query.
Indica che la risorsa esegue l'override del criterio della risorsa padre.
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 punteggiata che la collega alla risorsa padre.
Indica che la risorsa unisce i criteri alla risorsa padre.
Indica che il criterio dell'organizzazione per questa risorsa applica un vincolo booleano o un vincolo dell'elenco con valori consentiti.
Indica che il criterio dell'organizzazione per questa risorsa è un vincolo di elenco con valori negati.
Indica che il criterio dell'organizzazione per questa risorsa è un vincolo booleano che non viene applicato.
Passaggi successivi
- Scopri di più sull'utilizzo dei vincoli.
- Scopri come creare e gestire vincoli personalizzati.