Usa vincoli personalizzati
I criteri dell'organizzazione di Google Cloud offrono un sistema centralizzato e programmatico un controllo completo sulle risorse dell'organizzazione. Come amministratore dei criteri dell'organizzazione, puoi definire un criterio dell'organizzazione, un insieme di restrizioni denominate vincoli che si applicano le risorse Google Cloud e i discendenti di queste risorse nel Gerarchia delle risorse di Google Cloud. Puoi applicare i criteri dell'organizzazione all'indirizzo a livello di organizzazione, cartella o progetto.
I criteri dell'organizzazione forniscono vincoli predefiniti per vari servizi Google Cloud. Tuttavia, se vuoi più granulare, personalizzabile controllo sui campi specifici con restrizioni nella tua organizzazione criteri, puoi anche creare vincoli personalizzati e utilizzare dei vincoli in un criterio dell'organizzazione.
Vantaggi
Puoi utilizzare un criterio dell'organizzazione personalizzato per consentire o negare su batch Dataproc serverless. Ad esempio, se una richiesta di creazione di un carico di lavoro batch non riesce a soddisfare la convalida di vincoli personalizzati come impostata dal criterio dell'organizzazione la richiesta avrà esito negativo e verrà restituito un errore al chiamante.
Eredità dei criteri
Per impostazione predefinita, i criteri dell'organizzazione vengono ereditati dai discendenti dei le risorse a cui applichi il criterio. Ad esempio, se applichi un criterio su una cartella, Google Cloud applica i criteri a tutti i progetti . Per scoprire di più su questo comportamento e su come modificarlo, consulta Regole di valutazione della gerarchia.
Prezzi
Il servizio Criteri dell'organizzazione, inclusi i vincoli predefiniti e personalizzati, è disponibile su senza costi aggiuntivi.
Prima di iniziare
- Configurare il progetto
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Dataproc Serverless API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Dataproc Serverless API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Assicurati di conoscere ID organizzazione.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per gestire i criteri dell'organizzazione,
chiedi all'amministratore di concederti
Ruolo IAM Amministratore criteri dell'organizzazione (roles/orgpolicy.policyAdmin
) per la risorsa dell'organizzazione.
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Questo ruolo predefinito contiene le autorizzazioni necessarie per gestire i criteri dell'organizzazione. Per vedere le autorizzazioni esatte obbligatorie, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per gestire i criteri dell'organizzazione sono necessarie le seguenti autorizzazioni:
-
orgpolicy.constraints.list
-
orgpolicy.policies.create
-
orgpolicy.policies.delete
-
orgpolicy.policies.list
-
orgpolicy.policies.update
-
orgpolicy.policy.get
-
orgpolicy.policy.set
Potresti anche riuscire a ottenere queste autorizzazioni con ruoli personalizzati altri ruoli predefiniti.
Crea un vincolo personalizzato
Un vincolo personalizzato viene definito in un file YAML dalle risorse, dai metodi
condizioni e azioni a cui è applicato. Dataproc Serverless supporta
vincoli personalizzati applicati al metodo CREATE
del
BATCH
risorsa (vedi
Vincoli di Dataproc Serverless su risorse e operazioni).
Per creare un file YAML per un vincolo personalizzato Dataproc Serverless:
name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- dataproc.googleapis.com/Batch
methodTypes:
- CREATE
condition: CONDITION
actionType: ACTION
displayName: DISPLAY_NAME
description: DESCRIPTION
Sostituisci quanto segue:
ORGANIZATION_ID
: l'ID della tua organizzazione, ad esempio123456789
.CONSTRAINT_NAME
: il nome che vuoi per il tuo nuovo un vincolo personalizzato. Un vincolo personalizzato deve iniziare concustom.
e può includere solo lettere maiuscole, lettere minuscole o numeri, per ad esempiocustom.batchMustHaveSpecifiedCategoryLabel
. La lunghezza massima di questo campo è 70 senza contare il prefisso, ad esempioorganizations/123456789/customConstraints/custom
.CONDITION
: una condizione CEL scritta in base a di una risorsa di servizio supportata. Questo campo ha un limite massimo di 1000 caratteri. Consulta Risorse supportate per ulteriori informazioni sulle risorse disponibili per la scrittura delle condizioni. Condizione di esempio:("category" in resource.labels) && (resource.labels['category'] in ['retail', 'ads', 'service'])
.ACTION
: l'azione da eseguire se la condizione è sono soddisfatte determinate condizioni. Può essereALLOW
oDENY
.DISPLAY_NAME
: un nome semplice per di blocco. Nome visualizzato di esempio: "Applica 'categoria' batch' requisito dell'etichetta". Questo campo ha una lunghezza massima di 200 caratteri.DESCRIPTION
: una descrizione del del vincolo che viene visualizzato come messaggio di errore quando il criterio viene violato. Questo campo ha una lunghezza massima di 2000 caratteri. Descrizione di esempio: Consenti la creazione in batch Dataproc solo se presenta un 'categoria' etichetta con "retail", "ads" o "service" ".
Per saperne di più su come creare un vincolo personalizzato, consulta Definizione di vincoli personalizzati.
Configura un vincolo personalizzato
Dopo aver creato un nuovo vincolo personalizzato utilizzando Google Cloud CLI, devi configurarlo per disponibile per i criteri dell'organizzazione nella tua organizzazione. Per configurare 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 tuo
personalizzato. Ad esempio: /home/user/customconstraint.yaml
.
Al termine, troverai i vincoli personalizzati come criteri dell'organizzazione disponibili
nel tuo elenco di criteri dell'organizzazione
di Google Cloud.
Per verificare che il vincolo personalizzato esista, utilizza il metodo
Comando gcloud org-policies list-custom-constraints
:
gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
ORGANIZATION_ID
con l'ID della risorsa dell'organizzazione.
Per ulteriori informazioni, vedi
Visualizzazione dei criteri dell'organizzazione.
Applica un vincolo personalizzato
Puoi applicare un vincolo booleano creando un criterio dell'organizzazione che vi faccia riferimento. applicando il criterio dell'organizzazione a una risorsa Google Cloud.Console
Per applicare un vincolo booleano:
- Nella console Google Cloud, vai alla pagina Criteri dell'organizzazione.
- Seleziona il selettore di progetti nella parte superiore della pagina.
- Dal selettore di progetti, scegli il progetto per il quale vuoi impostare criterio dell'organizzazione.
- Seleziona il vincolo dall'elenco nella pagina Criteri dell'organizzazione. Dovrebbe essere visualizzata la pagina Dettagli criterio per il vincolo in questione.
- Per configurare il criterio dell'organizzazione per questa risorsa, fai clic su Gestisci criterio.
- Nella pagina Modifica criterio, seleziona Sostituisci criterio della risorsa padre.
- Fai clic su Aggiungi una regola.
- In Applicazione, scegli se applicare questo criterio dell'organizzazione deve essere attivato o disattivato.
- Se vuoi, per applicare le condizioni del criterio dell'organizzazione a un tag, fai clic su Aggiungi condizione. Tieni presente che se aggiungi una regola condizionale a un'organizzazione devi aggiungere almeno una regola incondizionata. In caso contrario, la norma non potrà essere salvata. Per ulteriori informazioni i dettagli, vedi Impostazione di un criterio dell'organizzazione con i tag.
- Se si tratta di un vincolo personalizzato, puoi fare clic su Testa modifiche per simulare l'effetto di questo criterio dell'organizzazione. Per ulteriori informazioni, vedi Testa le modifiche ai criteri dell'organizzazione con Policy Simulator.
- Per completare e applicare il criterio dell'organizzazione, fai clic su Imposta criterio. Le norme potrebbero essere necessari fino a 15 minuti.
gcloud
Per creare un criterio dell'organizzazione che applichi un vincolo booleano, crea un criterio File YAML che fa 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 in modo forzato i tuoi di blocco. -
CONSTRAINT_NAME
: il nome definito per il vincolo personalizzato. Per ad esempio
.custom.batchMustHaveSpecifiedCategoryLabel
Per applicare il criterio dell'organizzazione contenente il vincolo, esegui questo comando:
gcloud org-policies set-policy POLICY_PATH
Sostituisci POLICY_PATH
con il percorso completo del criterio dell'organizzazione
YAML. L'applicazione del criterio richiederà fino a 15 minuti.
Testa il vincolo personalizzato
L'esempio di creazione batch seguente presuppone che sia stato creato un vincolo personalizzato
creato e applicato alla creazione in batch per richiedere che il batch abbia una "categoria"
etichetta associata con il valore "retail", "ads" o "service:
("category" in resource.labels) && (resource.labels['category'] in ['retail', 'ads', 'service'])
.
Tieni presente che la parola "category" dell'esempio non ha uno dei valori obbligatori.
gcloud dataproc batches submit spark \
--region us-west1
--jars file:///usr/lib/spark/examples/jars/spark-examples.jar \
--class org.apache.spark.examples.SparkPi \
--network default \
--labels category=foo \
-- 100
Esempio di output:
Operation denied by custom org policies: ["customConstraints/custom.batchMustHaveSpecifiedCategoryLabel
": ""Only allow Dataproc batch creation if it has a 'category' label with
a 'retail', 'ads', or 'service' value""]
Vincoli serverless di Dataproc su risorse e operazioni
I seguenti vincoli personalizzati serverless di Dataproc sono disponibili per l'uso quando si crea (invia) un carico di lavoro batch.
Generali
resource.labels
RuntimeConfig
resource.runtimeConfig.version
resource.runtimeConfig.containerImage
resource.runtimeConfig.properties
ExecutionConfig
resource.environmentConfig.executionConfig.serviceAccount
resource.environmentConfig.executionConfig.networkTags
resource.environmentConfig.executionConfig.kmsKey
resource.environmentConfig.executionConfig.stagingBucket
PeripheralsConfig
resource.environmentConfig.peripheralsConfig.metastoreService
resource.environmentConfig.peripheralsConfig.sparkHistoryServerConfig.dataprocCluster
Esempi di vincoli personalizzati per i casi d'uso comuni
La tabella riportata di seguito fornisce esempi di modelli batch serverless personalizzati di Dataproc. vincoli:
Descrizione | Sintassi del vincolo |
---|---|
Il batch deve collegare una "categoria" con valori consentiti. |
name: organizations/ORGANIZATION_ID/customConstraints/custom.batchMustHaveSpecifiedCategoryLabel resourceTypes: - dataproc.googleapis.com/Batch methodTypes: - CREATE condition: ("category" in resource.labels) &&(resource.labels['category'] in ['retail', 'ads', 'service']) actionType: ALLOW displayName: Enforce batch "category" label requirement. description: Only allow batch creation if it attaches a "category" label with an allowable value. |
Il batch deve impostare una versione di runtime consentita. |
name: organizations/ORGANIZATION_ID/customConstraints/custom.batchMustUseAllowedVersion resourceTypes: - dataproc.googleapis.com/Batch methodTypes: - CREATE condition: (has(resource.runtimeConfig.version)) &&(resource.runtimeConfig.version in ["2.0.45", "2.0.48"]) actionType: ALLOW displayName: Enforce batch runtime version. description: Only allow batch creation if it sets an allowable runtime version. |
Il batch non può impostare più di 20 esecutori iniziali Spark. |
name: organizations/ORGANIZATION_ID/customConstraints/custom.batchInitialExecutorMax20 resourceTypes: - dataproc.googleapis.com/Batch methodTypes: - CREATE condition: (has(resource.runtimeConfig.properties)) &&('spark.executor.instances' in resource.runtimeConfig.properties) &&(int(resource.runtimeConfig.properties['spark.executor.instances'])>20) actionType: DENY displayName: Enforce maximum number of batch Spark executor instances. description: Deny batch creation if it specifies more than 20 Spark executor instances. |
Il batch non può impostare più di 20 esecutori iniziali per l'allocazione dinamica di Spark. |
name: organizations/ORGANIZATION_ID/customConstraints/custom.batchDynamicAllocationInitialExecutorMax20 resourceTypes: - dataproc.googleapis.com/Batch methodTypes: - CREATE condition: (has(resource.runtimeConfig.properties)) &&('spark.dynamicAllocation.initialExecutors' in resource.runtimeConfig.properties) &&(int(resource.runtimeConfig.properties['spark.dynamicAllocation.initialExecutors'])>20) actionType: DENY displayName: Enforce maximum number of batch dynamic allocation initial executors. description: Deny batch creation if it specifies more than 20 Spark dynamic allocation initial executors. |
Il batch non deve consentire più di 20 esecutori di allocazione dinamica. |
name: organizations/ORGANIZATION_ID/customConstraints/custom.batchDynamicAllocationMaxExecutorMax20 resourceTypes: - dataproc.googleapis.com/Batch methodTypes: - CREATE condition: (resource.runtimeConfig.properties['spark.dynamicAllocation.enabled']=='false') || (('spark.dynamicAllocation.maxExecutors' in resource.runtimeConfig.properties) &&(int(resource.runtimeConfig.properties['spark.dynamicAllocation.maxExecutors'])<=20)) actionType: ALLOW displayName: Enforce batch maximum number of dynamic allocation executors. description: Only allow batch creation if dynamic allocation is disabled or the maximum number of dynamic allocation executors is set to less than or equal to 20. |
Il batch deve impostare la chiave KMS su un pattern consentito. |
name: organizations/ORGANIZATION_ID/custom.batchKmsPattern resourceTypes: - dataproc.googleapis.com/Batch methodTypes: - CREATE condition: matches(resource.environmentConfig.executionConfig.kmsKey, '^keypattern[a-z]$') actionType: ALLOW displayName: Enforce batch KMS Key pattern. description: Only allow batch creation if it sets the KMS key to an allowable pattern. |
Il batch deve impostare il prefisso del bucket gestione temporanea su un valore consentito. |
name: organizations/ORGANIZATION_ID/customConstraints/custom.batchStagingBucketPrefix
resourceTypes:
- dataproc.googleapis.com/Batch
methodTypes:
- CREATE
condition: resource.environmentConfig.executionConfig.stagingBucket.startsWith(A |
Passaggi successivi
- Per saperne di più sui criteri dell'organizzazione, consulta Introduzione al servizio Criteri dell'organizzazione.
- Scopri di più su come creare e gestire i criteri dell'organizzazione.
- Consulta l'elenco completo dei vincoli dei criteri dell'organizzazione predefiniti.