Configurare i criteri dell'organizzazione

I criteri dell'organizzazione ti 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-gap, non esiste un'interfaccia utente o una CLI per i criteri dell'organizzazione. Devi utilizzare l'API o l'interfaccia a riga di comando 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à.
  • 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 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 norma dell'organizzazione.

  • MATCH_SCHEMA: le risorse da abbinare per 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 e UPDATE. Il valore predefinito per il campo disabledOperations è *.

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
  • 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 di marketplace, crea la seguente norma:

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.

Concedi ruoli IAM per gestire i criteri dell'organizzazione

A ogni criterio dell'organizzazione è associato un ruolo IAM. Concedi il ruolo IAM agli utenti e ai gruppi che vuoi gestire con 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.

Leggi la pagina Sezione Corrispondenza con i criteri dell'organizzazione per scoprire di più su questi parametri. Ad esempio, per consentire la creazione di database solo negli spazi dei nomi con l'etichetta owner: dba-team, crea i seguenti criteri:

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 un criterio esistente, eliminalo 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 un criterio 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 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"]