I criteri dell'organizzazione offrono un controllo centralizzato e programmatico sulle risorse della tua organizzazione. In qualità di amministratore dei criteri dell'organizzazione, puoi configurare i criteri per l'intera organizzazione.
In questa versione di Google Distributed Cloud (GDC) air-gapped, non sono presenti UI o CLI per
i criteri dell'organizzazione. Per gestirle, devi utilizzare l'API o la CLI kubectl.
Vantaggi
La configurazione dei criteri dell'organizzazione offre diversi vantaggi:
- Centralizza il controllo per configurare le limitazioni sull'utilizzo delle risorse della tua organizzazione.
- Definisci e stabilisci sistemi di protezione per i tuoi team di sviluppo per rimanere entro i limiti di conformità.
- Aiutare i proprietari dei progetti e i loro team a muoversi rapidamente senza violare la conformità.
Differenze rispetto a Identity and Access Management
Identity and Access Management si concentra su chi e consente all'amministratore di autorizzare chi può intervenire su risorse specifiche in base alle autorizzazioni.
Le policy dell'organizzazione si concentrano sul cosa e consentono all'amministratore di impostare limitazioni su risorse specifiche per determinare come configurarle.
Elenco dei tipi di policy dell'organizzazione disponibili
In questa release di GDC, puoi utilizzare il seguente tipo di norma.
GDCHRestrictedService
Il tipo di policy GDCHRestrictedService ti consente di limitare il servizio che puoi utilizzare su
GDC. Una volta applicato, il criterio impedisce l'utilizzo delle API a cui fa riferimento. Ad esempio, puoi utilizzare questo tipo di norma per limitare l'utilizzo di un determinato servizio a determinati progetti. Puoi anche utilizzare il criterio per
limitare completamente l'accesso a un nuovo servizio GDC su cui
vuoi eseguire test prima di consentire ai tuoi team di utilizzarlo.
Crea questa policy nello stesso cluster delle risorse del servizio. Puoi creare più istanze di questa norma per servizi o progetti diversi.
Di seguito è riportato un modello per queste norme:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: GDCHRestrictedService
metadata:
name: POLICY_NAME
spec:
match:
MATCH_SCHEMA
parameters:
disabledOperations:
- DISABLED_OPERATION
Sostituisci quanto segue:
POLICY_NAME: il nome della policy dell'organizzazione.MATCH_SCHEMA: le risorse da abbinare a questo vincolo. Per saperne di più, consulta la sezione Definisci l'ambito di una policy dell'organizzazione all'interno di un cluster.DISABLED_OPERATION: i gruppi di operazioni bloccati da questa policy. I valori consentiti sonoCREATEeUPDATE. Il valore predefinito per il campodisabledOperationsè*.
Il criterio GDCHRestrictedService supporta solo le operazioni UPDATE e CREATE. Per
limitare le operazioni GET, LIST e DELETE, ti consigliamo di
utilizzare IAM per assegnare i ruoli.
Il criterio GDCHRestrictedService supporta solo il seguente sottoinsieme dei servizi disponibili su GDC.
| Servizio | Gruppo API | kinds |
|---|---|---|
| Marketplace | marketplace.gdc.goog |
MarketplaceService
|
| Vertex AI Workbench | aiplatform.gdc.goog |
Notebook
|
| Servizio di database - Postgres | postgresql.dbadmin.gdc.goog |
|
| Database Service - Oracle | oracle.dbadmin.gdc.goog |
|
| Transfer Appliance | system.gpc.gke.io |
TransferApplianceRequest |
| Backup | backup.gdc.goog |
BackupRepositoryManager |
| Dataproc Container for Spark (servizio Marketplace) | sparkoperator.k8s.io |
SparkApplication |
Non devi specificare tutti i tipi per un determinato servizio. Puoi limitare l'utilizzo di un sottoinsieme delle funzionalità di un servizio specificando solo i tipi corrispondenti.
Ad esempio, per limitare gli aggiornamenti ai servizi di marketplace, crea la seguente policy:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: GDCHRestrictedService
metadata:
name: no-update-to-marketplace-service
spec:
match:
kinds:
- apiGroups:
- "marketplace.gdc.goog"
kinds:
- MarketplaceService
parameters:
disabledOperations:
- "UPDATE"
Questo criterio impedisce qualsiasi operazione UPDATE su qualsiasi gruppo di API marketplace.gdc.goog con il valore MarketplaceService per il tipo. In effetti, questo criterio impedisce a chiunque di modificare qualsiasi servizio Marketplace.
Per disattivare completamente un servizio, elenca sia CREATE che UPDATE nel
parametro disabledOperations ed elenca tutti i tipi documentati qui.
Concedere ruoli IAM per gestire le norme dell'organizzazione
A ogni criterio dell'organizzazione è associato un ruolo IAM. Assegna il ruolo IAM agli utenti e ai gruppi che vuoi gestire per questo criterio dell'organizzazione specifico. Per
consentire a un utente o a un gruppo di creare, aggiornare o eliminare policy di
tipo GDCHRestrictedService, assegna all'utente o al gruppo il ruolo IAM gdchrestrictedservice-policy-manager.
Definisci l'ambito di un criterio dell'organizzazione all'interno di un cluster
Quando definisci un criterio dell'organizzazione, decidi se deve influire su tutti gli spazi dei nomi, solo su spazi dei nomi specifici o su tutti gli spazi dei nomi tranne un elenco specifico. Per
ottenere questo risultato, utilizza una combinazione dei parametri .spec.match.excludedNamespaces,
.spec.match.namespaceSelector, .spec.match.namespaces e
.spec.match.scope della definizione della policy.
Per scoprire di più su questi parametri, consulta la pagina
Corrispondenza con le policy dell'organizzazione. Ad esempio, per consentire la creazione di
database solo negli spazi dei nomi con l'etichetta owner: dba-team, crea la
seguente policy:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: GDCHRestrictedService
metadata:
name: db-restricted-to-dbas
spec:
match:
scope: Namespaced
namespaceSelector:
matchExpressions:
# We are restricting the use of the service in namespaces that
# don't have the owner: dba-team label
- key: owner
operator: NotIn
values:
- dba-team
kinds:
- apiGroups:
- "postgresql.dbadmin.gdc.goog"
kinds:
- DBCluster
- BackupPlan
- Import
- Restore
- apiGroups:
- "oracle.dbadmin.gdc.goog"
kinds:
- DBCluster
- BackupPlan
- Import
parameters:
disabledOperations:
- "UPDATE"
- "CREATE"
Eseguire il rollback di una policy esistente
Per interrompere l'applicazione di una policy esistente, eliminala utilizzando la CLI kubectl. Utilizza un file kubeconfig che ti dia accesso al cluster in cui è definito il criterio e al ruolo IAM gdchrestrictedservice-policy-manager.
Per eliminare una policy dell'organizzazione, esegui:
kubectl --kubeconfig CLUSTER_KUBECONFIG delete \
GDCHRestrictedService/POLICY_NAME
Sostituisci quanto segue:
CLUSTER_KUBECONFIG: il file kubeconfig del cluster in cui risiede la policy dell'organizzazione.POLICY_NAME: il nome della policy dell'organizzazione da eliminare.
Testare una policy in modalità di audit
Puoi testare una policy senza applicarla. Testa una policy per assicurarti che non interrompa i sistemi esistenti prima di implementarla o per ottenere una stima della diffusione di un comportamento. Per aggiungere un test, aggiungi un enforcementAction alla definizione della policy. Per questo parametro sono possibili tre valori:
deny: la norma è applicata. Questa è l'impostazione predefinita.dryrun: l'azione è consentita, ma puoi notare che si è verificata una violazione delle norme sia negli audit log sia nello stato delle norme. Esamina la violazione conkubectl --kubeconfig CLUSTER_KUBECONFIG get POLICY_TYPE/POLICY_NAME.warn: equivalente adryrun, tranne per il fatto che il test mostra anche un avviso in risposta alla richiesta che ha attivato una violazione delle norme.
Ad esempio, per testare una norma che disattiva Marketplace, crea la seguente norma:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: GDCHRestrictedService
metadata:
name: disable-marketplace-service-project-alice
spec:
enforcementAction: warn
match:
kinds:
- apiGroups: ["marketplace.gdc.goog"]
kinds: ["MarketplaceService"]