Gestire le risorse delle funzioni utilizzando vincoli personalizzati
In qualità di amministratore dell'organizzazione, puoi creare vincoli personalizzati per le funzioni Cloud Run. I criteri dell'organizzazione applicano questi vincoli personalizzati a livello di progetto, cartella o organizzazione.
I criteri dell'organizzazione forniscono vincoli predefiniti per vari servizi Google Cloud. Tuttavia, se vuoi un controllo più granulare e personalizzabile sui campi specifici limitati nelle norme dell'organizzazione, puoi anche creare norme dell'organizzazione personalizzate.
Questa pagina descrive in dettaglio come creare vincoli personalizzati per le funzioni create utilizzando le API Cloud Functions v2 e come applicarli a livello di progetto. Per informazioni sui criteri dell'organizzazione personalizzati, consulta Creare e gestire criteri dell'organizzazione personalizzati.
Vantaggi
- Gestione dei costi: utilizza i criteri dell'organizzazione per limitare le dimensioni e i tipi di istanze VM e di dischi che possono essere utilizzati nella tua organizzazione. Puoi anche limitare la famiglia di macchine utilizzata per l'istanza VM.
- Sicurezza, conformità e governance:
- Per applicare i requisiti di sicurezza, puoi richiedere regole specifiche per le porte del firewall sulle VM.
- Per supportare l'isolamento hardware o la conformità delle licenze, puoi richiedere che tutte le VM all'interno di un progetto o di una cartella specifica vengano eseguite su nodi single-tenant.
- Per gestire gli script di automazione, puoi utilizzare i criteri dell'organizzazione personalizzati per verificare che le etichette corrispondano alle espressioni necessarie.
Ereditarietà delle norme
Quando un criterio dell'organizzazione viene applicato a una risorsa, anche tutti i discendenti della risorsa ereditano il criterio dell'organizzazione. Ad esempio, se applichi un criterio a una cartella, Google Cloud lo applica a tutti i progetti nella cartella. Per scoprire di più su questo comportamento e su come modificarlo, consulta Regole di valutazione della gerarchia.
Prezzi
Il servizio di criteri dell'organizzazione, inclusi i criteri dell'organizzazione predefiniti e personalizzati, viene fornito senza costi.
Limitazioni
Ai criteri dell'organizzazione personalizzati si applicano le seguenti limitazioni:
- Non viene applicato per i nomi delle istanze VM quando utilizzi l'API di inserimento collettivo.
- Viene applicato solo al metodo
CREATE
per le risorse Compute Engine. - Disponibile solo nelle API Cloud Functions v2. Non possono essere applicati alle funzioni Cloud Run (1ª generazione.).
- Proteggi le funzioni solo quando utilizzi le API Cloud Functions v2. Le funzioni Cloud Run possono essere modificate anche dall'API Cloud Run. Per una maggiore protezione, potresti dover anche applicare vincoli personalizzati su Cloud Run.
Prima di iniziare
- Assicurati di conoscere il ID organizzazione.
Ruoli obbligatori
- Per creare o modificare le norme dell'organizzazione, il tuo account deve avere il ruolo
roles/orgpolicy.policyAdmin
.
Creare un vincolo personalizzato
Un vincolo personalizzato viene definito in un file YAML dalle risorse, dai metodi, dalle condizioni e dalle azioni supportate dal servizio su cui stai applicando il criterio dell'organizzazione. Le condizioni per i vincoli personalizzati vengono definite utilizzando Common Expression Language (CEL). Per ulteriori informazioni su come creare condizioni nei vincoli personalizzati utilizzando CEL, consulta la sezione CEL di Creare e gestire vincoli personalizzati.
Per specificare un vincolo personalizzato che impedisca la creazione di tutte le funzioni con un massimo di istanze superiore a 150, procedi nel seguente modo:
Crea un nuovo file
maxInstanceConstraint.yaml
con i seguenti contenuti:name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME resourceTypes: - cloudfunctions.googleapis.com/Function methodTypes: - CREATE - UPDATE condition: resource.serviceConfig.maxInstanceCount > 150 actionType: DENY displayName: Deny functions with max instance count greater than 150 description: Functions cannot be created with a max instance count greater than 150
Sostituisci ORGANIZATION_ID
con l'ID della tua organizzazione, ad esempio
123456789
.
Per ulteriori informazioni, consulta Definire vincoli personalizzati.
Configurare un vincolo personalizzato
Dopo aver creato il file YAML per un nuovo vincolo personalizzato, devi configurarlo per renderlo disponibile per i criteri dell'organizzazione nella tua organizzazione. Per impostare un vincolo personalizzato, utilizza il comandogcloud org-policies set-custom-constraint
:
gcloud org-policies set-custom-constraint CONSTRAINT_PATH
CONSTRAINT_PATH
con il percorso completo del
file delle limitazioni personalizzate. Ad esempio: /home/user/customconstraint.yaml
.
Al termine, i vincoli personalizzati sono disponibili come criteri dell'organizzazione
nell'elenco dei criteri dell'organizzazione di Google Cloud.
Per verificare che la limitazione personalizzata esista, utilizza il comando gcloud org-policies list-custom-constraints
:
gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
ORGANIZATION_ID
con l'ID della risorsa della tua organizzazione.
Per ulteriori informazioni, consulta
Visualizzare i criteri dell'organizzazione.
Applicare un criterio dell'organizzazione personalizzato
Puoi applicare un vincolo booleano creando un criterio dell'organizzazione che lo richiami e poi applicando questo criterio dell'organizzazione a una risorsa Google Cloud.Console
- Nella console Google Cloud, vai alla pagina Norme dell'organizzazione.
- Nel selettore di progetti, seleziona il progetto per cui vuoi impostare il criterio dell'organizzazione.
- Nell'elenco della pagina Criteri organizzazione, seleziona il vincolo per visualizzare la pagina Dettagli criteri relativa al vincolo in questione.
- Per configurare il criterio dell'organizzazione per questa risorsa, fai clic su Gestisci criterio.
- Nella pagina Modifica criterio, seleziona Ignora criterio della risorsa padre.
- Fai clic su Aggiungi una regola.
- Nella sezione Applicazione, seleziona se l'applicazione di questo criterio dell'organizzazione è attivata o disattivata.
- (Facoltativo) Per rendere il criterio dell'organizzazione condizionale su un tag, fai clic su Aggiungi condizione. Tieni presente che se aggiungi una regola condizionale a un criterio dell'organizzazione, devi aggiungere almeno una regola non condizionale, altrimenti il criterio non può essere salvato. Per ulteriori informazioni, consulta Impostare un criterio dell'organizzazione con tag.
- Se si tratta di un vincolo personalizzato, puoi fare clic su Prova modifiche per simulare l'effetto di questo criterio dell'organizzazione. Per ulteriori informazioni, consulta Testare le modifiche ai criteri dell'organizzazione con Policy Simulator.
- Per completare e applicare il criterio dell'organizzazione, fai clic su Imposta criterio. L'applicazione del criterio può richiedere fino a 15 minuti.
gcloud
Per creare un criterio dell'organizzazione che applichi un vincolo booleano, crea un file YAML del criterio che faccia riferimento al vincolo:
name: projects/PROJECT_ID/policies/CONSTRAINT_NAME spec: rules: - enforce: true
Sostituisci quanto segue:
-
PROJECT_ID
: il progetto su cui vuoi applicare il vincolo. -
CONSTRAINT_NAME
: il nome definito per il vincolo personalizzato. Ad esempio,custom.cloudFunctionsMaxInstanceLimit
.
Per applicare il criterio dell'organizzazione contenente la limitazione, esegui il seguente comando:
gcloud org-policies set-policy POLICY_PATH
Sostituisci POLICY_PATH
con il percorso completo del file YAML del criterio dell'organizzazione. L'applicazione del criterio può richiedere fino a 15 minuti.
Testa il criterio dell'organizzazione personalizzato
Per creare una funzione con un'istanza massima di 151, esegui il seguente comando:
gcloud functions deploy FUNCTION_NAME \
...
--max-instances 151
Viene visualizzato il seguente output:
Operation denied by custom org policy on resource: ["customConstraints/custom.cloudFunctionsMaxInstanceLimit": "Cloud Functions cannot be created with a max instance count greater than 150."]
Risorse e operazioni supportate dalle funzioni Cloud Run
Tipo di risorsa | Tipi di metodi | Riferimento API |
---|---|---|
cloudfunctions.googleapis.com/Function |
CREATE , UPDATE |
projects.locations.functions |
Esempi comuni di criteri dell'organizzazione
La seguente tabella fornisce la sintassi di alcuni criteri dell'organizzazione personalizzati che potresti trovare utili:
Descrizione | Sintassi dei vincoli |
---|---|
Impedire la creazione di funzioni con un linguaggio specifico |
name: organizations/ORGANIZATION_IDcustomConstraints/custom.cloudFunctionRuntimeBlock resource_types: cloudfunctions.googleapis.com/Function method_types: - CREATE - UPDATE condition: resource.buildConfig.runtime == "python312" action_type: DENY display_name: Deny functions using Python 3.12 description: Functions cannot be created with Python 3.12 as the language runtime |
Richiedere alle funzioni di utilizzare un pool di worker specifico |
name: organizations/ORGANIZATION_ID/customConstraints/custom.cloudFunctionsWorkerPool resource_types: cloudfunctions.googleapis.com/Function method_types: - CREATE - UPDATE condition: resource.buildConfig.workerPool == "WORKER_POOL" action_type: DENY display_name: Require worker pool description: Functions must use a worker pool |
Richiedi che le funzioni memorizzino tutte le immagini container in un repository di immagini specifico |
name: organizations/ORGANIZATION_ID/customConstraints/custom.cloudFunctionsRepository resource_types: cloudfunctions.googleapis.com/Function method_types: - CREATE - UPDATE condition: resource.buildConfig.dockerRepository.startsWith("REPO_PATH") action_type: DENY display_name: Image repository constraint description: Functions must push images to a central image repository under REPO_PATH |
Passaggi successivi
- Per saperne di più sui criteri dell'organizzazione, consulta la Introduzione al servizio Criteri dell'organizzazione.
- Scopri di più su come creare e gestire i criteri dell'organizzazione.
- Consulta l'elenco completo dei vincoli delle norme dell'organizzazione predefiniti.