Le policy dell'organizzazione offrono un controllo centralizzato e programmatico sulle risorse della tua organizzazione. In qualità di amministratore della policy dell'organizzazione, puoi configurare le policy per l'intera organizzazione.
In questa versione di Google Distributed Cloud (GDC) air-gapped, non sono disponibili UI o CLI per le policy dell'organizzazione. Devi utilizzare l'API o la CLI kubectl per gestirle.
Vantaggi
La configurazione delle policy dell'organizzazione offre diversi vantaggi:
- Centralizza il controllo per configurare le limitazioni su come utilizzare le risorse della tua organizzazione.
- Definisci e stabilisci le barriere di protezione per i team di sviluppo in modo che rimangano entro i limiti di conformità.
- Aiuta 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 su 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 policy.
GDCHRestrictedService
Il tipo di policy GDCHRestrictedService consente di limitare il servizio che puoi utilizzare su GDC. Quando viene applicata, la policy impedisce l'utilizzo delle API a cui fa riferimento. Ad esempio, puoi utilizzare questo tipo di policy per limitare l'utilizzo di un determinato servizio a determinati progetti. Puoi anche utilizzare la policy 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 policy per servizi o progetti diversi.
Di seguito è riportato un modello per questa policy:
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 ulteriori informazioni, consulta la sezione Definire 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 sonoCREATE,UPDATEeDELETE. Il valore predefinito del campodisabledOperationsè*.
La policy GDCHRestrictedService supporta solo le operazioni UPDATE, CREATE e DELETE. Per limitare le operazioni GET, LIST e DELETE,
ti consigliamo di utilizzare IAM
per assegnare i ruoli.
La policy GDCHRestrictedService supporta solo il seguente sottoinsieme dei servizi disponibili su GDC.
| Servizio | Gruppo API | tipi |
|---|---|---|
| Marketplace | marketplace.gdc.goog |
MarketplaceService
|
| Vertex AI Workbench | aiplatform.gdc.goog |
Notebook
|
| Servizio di database - Postgres | postgresql.dbadmin.gdc.goog |
|
| Servizio di database - 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 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"
Questa policy impedisce qualsiasi operazione UPDATE su qualsiasi gruppo API marketplace.gdc.goog con il valore MarketplaceService per il tipo. In pratica, questa policy impedisce a chiunque di modificare qualsiasi servizio Marketplace.
Per disattivare completamente un servizio, elenca CREATE, UPDATE e DELETE nel parametro disabledOperations ed elenca tutti i tipi documentati qui.
Concedere i ruoli IAM per gestire le policy dell'organizzazione
Ogni policy dell'organizzazione ha un ruolo IAM associato. Concedi il ruolo IAM agli utenti e ai gruppi che vuoi che gestiscano quella policy dell'organizzazione specifica. 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.
Definire l'ambito di una policy dell'organizzazione all'interno di un cluster
Quando definisci una policy 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 specificato. Per farlo, utilizza una combinazione dei parametri .spec.match.excludedNamespaces, .spec.match.namespaceSelector, .spec.match.namespaces e .spec.match.scope della definizione della policy.
Per saperne di più su questi parametri, consulta la pagina della sezione relativa alla corrispondenza delle 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"
- "DELETE"
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 è definita la policy 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. Sono possibili tre valori per questo parametro:
deny: la policy viene applicata. Questa è l'impostazione predefinita.dryrun: l'azione è consentita, ma puoi vedere che è presente una violazione della policy sia negli audit log sia nello stato della policy. 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 della policy.
Ad esempio, per testare una policy che disattiva Marketplace, crea la seguente policy:
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"]