Configura i criteri dell'organizzazione

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) con air gap, non sono disponibili UI o CLI per i criteri dell'organizzazione. Devi utilizzare l'API o la CLI kubectl per gestirli.

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 policy.

GDCHRestrictedService

Il tipo di norma 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 che questa policy blocca. I valori consentiti sono CREATE, UPDATE e DELETE. Il valore predefinito del campo disabledOperations è *.

Il criterio 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.

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
  • DBCluster
  • BackupPlan
  • Import
  • Restore
Servizio di database - Oracle oracle.dbadmin.gdc.goog
  • DBCluster
  • BackupPlan
  • Import
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 del 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 CREATE, UPDATE e DELETE nel parametro disabledOperations ed elenca tutti i tipi documentati qui.

Concedi ruoli IAM per gestire le norme dell'organizzazione

A ogni criterio dell'organizzazione è associato un ruolo IAM. Concedi il ruolo IAM agli utenti e ai gruppi che vuoi gestire per quella specifica policy dell'organizzazione. Per consentire a un utente o a un gruppo di creare, aggiornare o eliminare criteri di tipo GDCHRestrictedService, assegna all'utente o al gruppo il ruolo IAM gdchrestrictedservice-policy-manager.

Definisci l'ambito di una policy 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 Sezione di 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 è 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 si trova la policy dell'organizzazione.

  • POLICY_NAME: il nome della policy dell'organizzazione da eliminare.

Testare una policy in modalità di audit

Puoi testare una norma 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 policy viene 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 con kubectl --kubeconfig CLUSTER_KUBECONFIG get POLICY_TYPE/POLICY_NAME.
  • warn: equivalente a dryrun, 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"]