Questa pagina mostra come attivare e utilizzare i vincoli personalizzati all'interno dell'ambiente GKE su AWS.Il servizio Organization Policy di Google Cloudti aiuta a gestire le configurazioni delle risorse e a creare guardrail nel tuo ambiente cloud.
Panoramica
Con i criteri dell'organizzazione personalizzati, puoi creare criteri delle risorse granulari negli ambienti GKE Multi-Cloud per soddisfare i requisiti specifici di sicurezza e conformità della tua organizzazione. Puoi anche creare criteri dell'organizzazione in modalità di prova per testare i nuovi criteri senza influire sui carichi di lavoro di produzione.
Per scoprire di più sui criteri dell'organizzazione, consulta Introduzione al servizio Organization Policy.
Prima di iniziare
Prima di iniziare, assicurati di aver compreso i seguenti argomenti.
Ereditarietà delle norme
Per impostazione predefinita, i criteri dell'organizzazione vengono ereditati dai discendenti delle risorse su cui applichi il criterio. Ad esempio, se applichi un criterio a un'organizzazione, Google Cloud il criterio viene applicato a tutti i progetti dell'organizzazione. Per scoprire di più sull'eredità delle norme e su come modificare le regole di valutazione, consulta Regole di valutazione gerarchica.
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 GKE su AWS. - I vincoli personalizzati appena applicati non vengono applicati automaticamente alle risorse esistenti. Per applicare la limitazione, devi aggiornare le risorse esistenti. Per trovare le risorse esistenti che devono essere aggiornate, puoi applicare una policy di dry run dell'organizzazione.
- Per creare vincoli e applicare i criteri dell'organizzazione, devi disporre del ruolo IAM Amministratore dei criteri dell'organizzazione (
roles/orgpolicy.policyAdmin
) nella tua Google Cloud organizzazione. Per ulteriori informazioni sulle autorizzazioni necessarie per gestire i criteri dell'organizzazione con vincoli personalizzati, consulta Ruoli richiesti.
Prezzi
I criteri dell'organizzazione e i vincoli personalizzati sono offerti senza costi.
Crea vincoli personalizzati
I vincoli personalizzati devono essere specificati utilizzando i campi delle specifiche delle risorse dell'API AwsCluster e AwsNodepool, escludendo i campi descritti come "Solo output".Creare un vincolo personalizzato
Per creare una nuova limitazione personalizzata, devi definirla in un file YAML e applicarla all'organizzazione utilizzando Google Cloud CLI. Questo vincolo deve racchiudere il criterio specifico che vuoi applicare alle risorse GKE su AWS.
Crea un file YAML per definire un vincolo personalizzato sul cluster:
name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- gkemulticloud.googleapis.com/AwsCluster
methodTypes:
- CREATE
condition: CONDITION
actionType: ACTION
displayName: DISPLAY_NAME
description: DESCRIPTION
Per definire un vincolo personalizzato per il pool di nodi, utilizza la seguente configurazione YAML:
name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- gkemulticloud.googleapis.com/AwsNodePool
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. Una limitazione personalizzata 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. Google Cloud 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 del criterio, 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 Definire vincoli personalizzati.
Associa la limitazione alle risorse
Dopo aver creato il file YAML per un nuovo vincolo personalizzato, devi configurarlo per renderlo disponibile per i criteri dell'organizzazione.
Per impostare una limitazione personalizzata, 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 la limitazione personalizzata sia stata creata, usa il comando
gcloud org-policies list-custom-constraints
:gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
L'output elenca i criteri creati:
CUSTOM_CONSTRAINT: custom.allowClusterCreateIfAnnotationPresent ACTION_TYPE: ALLOW METHOD_TYPES: CREATE RESOURCE_TYPES: gkemulticloud.googleapis.com/AwsCluster DISPLAY_NAME: Allow new clusters only when certain annotations are set.
Applica il vincolo personalizzato
Per applicare il nuovo vincolo personalizzato, crea un criterio dell'organizzazione che faccia riferimento al vincolo e poi applicalo.
Crea un file YAML per il criterio dell'organizzazione:
name: RESOURCE_HIERARCHY/policies/POLICY_NAME spec: rules: - enforce: true
Sostituisci quanto segue:
RESOURCE_HIERARCHY
: la posizione della nuova norma, che influisce sull'ambito dell'applicazione. Utilizza la Google Cloud gerarchia delle risorse come guida. Ad esempio, se vuoi applicare il criterio in un progetto specifico, utilizzaprojects/
PROJECT_ID
. Per applicare il criterio in un'organizzazione specifica, utilizzaorganizations/
ORGANIZATION_ID
.POLICY_NAME
: il nome della nuova norma.
Applicare il criterio:
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 il criterio. 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-
Testa il criterio
Testa il criterio dell'organizzazione creando un nuovo cluster AWS in un progetto con limitazioni.Crea un cluster AWS in un progetto con limitazioni.
gcloud container aws clusters create CLUSTER_NAME \ --aws-region AWS_REGION \ --location GOOGLE_CLOUD_LOCATION \ --cluster-version CLUSTER_VERSION \ --fleet-project FLEET_PROJECT \ --vpc-id VPC_ID \ --subnet-ids CONTROL_PLANE_SUBNET_1,CONTROL_PLANE_SUBNET_2,CONTROL_PLANE_SUBNET_3 \ --pod-address-cidr-blocks POD_ADDRESS_CIDR_BLOCKS \ --service-address-cidr-blocks SERVICE_ADDRESS_CIDR_BLOCKS \ --role-arn API_ROLE_ARN \ --database-encryption-kms-key-arn DB_KMS_KEY_ARN \ --admin-users ADMIN_USERS_LIST \ --config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \ --iam-instance-profile CONTROL_PLANE_PROFILE \ --tags "Name=CLUSTER_NAME-cp"
L'output è simile al seguente:
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