Questa pagina mostra come attivare e utilizzare i vincoli personalizzati nell'ambiente dei cluster GKE collegati. Google CloudIl servizio Organization Policy ti aiuta a gestire le configurazioni delle risorse e a creare misure di protezione nel tuo ambiente cloud.
Panoramica
Con i criteri dell'organizzazione personalizzati, puoi creare criteri granulari per le risorse negli ambienti GKE Multi-Cloud per soddisfare i requisiti specifici di sicurezza e conformità della tua organizzazione. Puoi anche creare policy dell'organizzazione in modalità dry run per testare nuove policy senza influire sui carichi di lavoro di produzione.
Per saperne di più sulle policy dell'organizzazione, consulta Introduzione al servizio Policy dell'organizzazione.
Prima di iniziare
Prima di iniziare, assicurati di comprendere i seguenti argomenti:
Ereditarietà delle policy
Per impostazione predefinita, le policy dell'organizzazione vengono ereditate dai discendenti delle risorse su cui applichi la policy. Ad esempio, se applichi una policy a un'organizzazione, Google Cloud applica la policy a tutti i progetti dell'organizzazione. Per scoprire di più sull'ereditarietà delle norme e su come modificare le regole di valutazione, consulta Regole di valutazione della gerarchia.
Limitazioni
Prima di creare vincoli personalizzati, tieni presente le seguenti limitazioni:
- I vincoli personalizzati possono essere applicati solo ai metodi
CREATE
oUPDATE
per le risorse dei cluster GKE collegati. - I vincoli personalizzati appena applicati non vengono applicati automaticamente alle risorse esistenti. Per applicare il vincolo, devi aggiornare le risorse esistenti. Per trovare le risorse esistenti che devono essere aggiornate, puoi applicare una policy dell'organizzazione dry run.
- Per creare vincoli e applicare le policy dell'organizzazione, devi disporre del ruolo IAM Organization Policy Administrator (
roles/orgpolicy.policyAdmin
) nella tua organizzazione Google Cloud . Per ulteriori informazioni sulle autorizzazioni richieste per gestire le policy dell'organizzazione con vincoli personalizzati, consulta Ruoli richiesti.
Prezzi
I criteri dell'organizzazione e i vincoli personalizzati sono offerti senza costi aggiuntivi.
Creare vincoli personalizzati
I vincoli personalizzati devono essere specificati utilizzando i campi nella specifica della risorsa API AttachedCluster, escludendo i campi descritti come "Solo output".
Crea un vincolo personalizzato
Per creare un nuovo vincolo personalizzato, definisci il vincolo in un file YAML e applicalo nella tua organizzazione utilizzando Google Cloud CLI. Questo vincolo deve includere il criterio specifico che vuoi applicare alle risorse dei cluster GKE collegati.
Crea un file YAML per il vincolo personalizzato:
name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME resourceTypes: - gkemulticloud.googleapis.com/AttachedCluster 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 del nuovo vincolo personalizzato. Un vincolo personalizzato deve iniziare concustom.
e può includere solo lettere maiuscole, lettere minuscole o numeri. Ad esempio:custom.allowClusterCreateIfAnnotationPresent
. La lunghezza massima di questo campo è di 70 caratteri, senza contare il prefisso, ad esempioorganizations/123456789/customConstraints/custom
.CONDITION
: una condizione scritta in base a una rappresentazione di una risorsa cluster collegata. Le condizioni sono scritte in Common Expression Language (CEL). Questo campo ha una lunghezza massima di 1000 caratteri. Ad esempio, condizione:"key" in resource.annotations && resource.annotations.key == "created-by"
.ACTION
: l'azione da eseguire se la condizione è soddisfatta. Può essereALLOW
oDENY
.DISPLAY_NAME
: un nome visualizzato per il vincolo. Questo campo ha una lunghezza massima di 200 caratteri.DESCRIPTION
: una descrizione del vincolo da visualizzare come messaggio di errore in caso di violazione della policy, ad esempio"Allow new clusters only when certain annotations are set."
Questo campo ha una lunghezza massima di 2000 caratteri.
Per saperne di più su come creare un vincolo personalizzato, consulta Definizione di vincoli personalizzati.
Associa il vincolo alle tue risorse
Dopo aver creato il file YAML per un nuovo vincolo personalizzato, devi configurarlo per renderlo disponibile per le policy dell'organizzazione.
Per impostare un vincolo personalizzato, utilizza il comando
gcloud org-policies set-custom-constraint
:gcloud org-policies set-custom-constraint PATH_TO_FILE
Sostituisci
PATH_TO_FILE
con il percorso della definizione YAML del vincolo personalizzato.Per verificare che il vincolo personalizzato sia stato creato, utilizza il comando
gcloud org-policies list-custom-constraints
:gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
L'output elenca le policy create:
CUSTOM_CONSTRAINT: custom.allowClusterCreateIfAnnotationPresent ACTION_TYPE: ALLOW METHOD_TYPES: CREATE RESOURCE_TYPES: gkemulticloud.googleapis.com/AttachedCluster DISPLAY_NAME: Allow new clusters only when certain annotations are set.
Applica il vincolo personalizzato
Per applicare il nuovo vincolo personalizzato, crea una policy dell'organizzazione che faccia riferimento al vincolo, quindi applica la policy dell'organizzazione.
Crea un file YAML per la policy dell'organizzazione:
name: RESOURCE_HIERARCHY/policies/POLICY_NAME spec: rules: - enforce: true
Sostituisci quanto segue:
RESOURCE_HIERARCHY
: la posizione della nuova policy, che influisce sull'ambito di applicazione. Utilizza la Google Cloud gerarchia delle risorse come guida. Ad esempio, se vuoi applicare la policy in un progetto specifico, utilizzaprojects/
PROJECT_ID
. Per applicare la policy in un'organizzazione specifica, utilizzaorganizations/
ORGANIZATION_ID
.POLICY_NAME
: il nome della nuova policy.
Applica la policy:
gcloud org-policies set-policy PATH_TO_POLICY
Sostituisci
PATH_TO_POLICY
con il percorso del file di definizione dei criteri.Verifica che il criterio esista:
gcloud org-policies list --RESOURCE_FLAG=RESOURCE_ID
Sostituisci quanto segue:
RESOURCE_FLAG
: la Google Cloud risorsa in cui hai applicato la policy. Ad esempio, un progetto o un'organizzazione.RESOURCE_ID
: l'ID della risorsa in cui hai applicato il criterio. Ad esempio, l'ID progetto o l'ID organizzazione.
L'output è simile al seguente:
CONSTRAINT: custom.allowClusterCreateIfAnnotationPresent LIST_POLICY: - BOOLEAN_POLICY: SET ETAG: CPjb27wGEOijhL4B-
Testare la policy
Testa la policy dell'organizzazione registrando un cluster EKS in un progetto con limitazioni.
Registra un cluster EKS in un progetto con limitazioni.
gcloud container attached clusters register CLUSTER_NAME \ --location=GOOGLE_CLOUD_REGION \ --fleet-project=PROJECT_NUMBER \ --platform-version=PLATFORM_VERSION \ --distribution=eks \ --issuer-url=ISSUER_URL \ --context=KUBECONFIG_CONTEXT \ --kubeconfig=KUBECONFIG_PATH
L'output è simile al seguente:
ERROR: (gcloud.container.attached.clusters.register) FAILED_PRECONDITION: Operation denied by org policy on resource 'projects/PROJECT_NUMBER/locations/GOOGLE_CLOUD_REGION': ["customConstraints/custom.allowClusterCreateIfAnnotationPresent": "Allow new clusters only when certain annotations are set."] '@type': type.googleapis.com/google.rpc.ErrorInfo domain: googleapis.com metadata: customConstraints: customConstraints/custom.allowClusterCreateIfAnnotationPresent service: gkemulticloud.googleapis.com reason: CUSTOM_ORG_POLICY_VIOLATION