Installa Policy Controller

Questa pagina mostra come installare Policy Controller. Policy Controller controlla, verifica e applica la conformità dei cluster ai criteri relativi a sicurezza, normative o regole aziendali.

Questa pagina è destinata agli amministratori IT e agli operatori che vogliono assicurarsi che tutte le risorse in esecuzione all'interno della piattaforma cloud soddisfino i requisiti di conformità dell'organizzazione fornendo e mantenendo l'automazione per l'audit o l'applicazione. Per scoprire di più sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei Google Cloud contenuti, consulta Ruoli utente e attività comuni di GKE Enterprise.

Policy Controller è disponibile se utilizzi la versione GKE Enterprise di Google Kubernetes Engine (GKE). Per saperne di più, consulta la pagina Prezzi della versione GKE Enterprise di Google Kubernetes Engine (GKE).

Prima di iniziare

Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:

  1. Installa e inizializza Google Cloud CLI, che fornisce i comandi gcloud, kubectl e nomos utilizzati in queste istruzioni. Se hai già installato gcloud CLI, scarica l'ultima versione eseguendo gcloud components update. Se utilizzi Cloud Shell, Google Cloud CLI è preinstallato.
  2. Assicurati che Open Policy Agent Gatekeeper open source non sia installato sul tuo cluster. Se è così, disinstalla Gatekeeper prima di installare Policy Controller.

  3. Abilita le API richieste:

    console

    1. Abilita l'API GKE Enterprise.

      Abilita l'API GKE Enterprise

    2. Abilita l'API Policy Controller.

      Abilitare l'API Policy Controller

    gcloud

    Esegui questo comando:

    gcloud services enable anthos.googleapis.com anthospolicycontroller.googleapis.com
    
  4. Crea o assicurati di avere accesso a un cluster che esegue una versione di Kubernetes 1.14.x o successive. Policy Controller potrebbe sembrare in esecuzione su versioni di Kubernetes precedenti alla 1.14.x, ma il prodotto non si comporta correttamente.

  5. Concedi i ruoli IAM richiesti all'utente che registra il cluster.

  6. Se prevedi di utilizzare Google Cloud CLI per configurare Policy Controller, registra il cluster in un parco risorse ora. Se prevedi di utilizzare la console Google Cloud , registra i cluster quando installi Policy Controller.

  7. Se utilizzi cluster GKE collegati, assicurati che il cluster AKS non abbia il componente aggiuntivo Azure Policy ed evita di etichettare gli spazi dei nomi con la chiave control-plane.

  8. Se utilizzi Google Distributed Cloud su VMware o bare metal, assicurati di installare Policy Controller su un cluster utente. Policy Controller non può essere installato su un cluster di amministrazione.

Installa Policy Controller

Console

Per installare Policy Controller nella console Google Cloud , completa i seguenti passaggi:

  1. Nella console Google Cloud , vai alla pagina Policy di GKE Enterprise nella sezione Posture Management.

    Vai alle norme

  2. Fai clic su Configura Policy Controller.

  3. (Facoltativo) Per modificare le impostazioni predefinite del parco risorse, fai clic su Personalizza impostazioni del parco risorse. Nella finestra di dialogo visualizzata, procedi nel seguente modo:

    1. Nella sezione Aggiungi/modifica pacchetti di policy, includi o escludi un pacchetto di policy facendo clic sul pulsante di attivazione/disattivazione pertinente.
    2. Nella sezione Modifica la configurazione di Policy Controller, segui questi passaggi:

      1. Per attivare il webhook di modifica, seleziona la casella di controllo Abilita webhook di modifica. Questa funzionalità non è compatibile con i cluster Autopilot.
      2. Nella casella Intervallo di audit, inserisci il periodo in secondi tra due controlli consecutivi.
      3. Nella casella Spazi dei nomi esentabili, inserisci un elenco di spazi dei nomi. Policy Controller ignora gli oggetti in questi spazi dei nomi. Questa funzionalità non è compatibile con i cluster Autopilot.

        Best practice:

        Esonera gli spazi dei nomi di sistema per evitare errori nel tuo ambiente. Puoi trovare le istruzioni per escludere gli spazi dei nomi e un elenco di spazi dei nomi comuni creati dai servizi Google Cloud nella pagina Escludi spazi dei nomi.

      4. Per abilitare i vincoli referenziali, seleziona la casella di controllo Abilita i modelli di vincolo che fanno riferimento a oggetti diversi dall'oggetto attualmente valutato.

      5. Nell'elenco Versione, seleziona la versione di Policy Controller che vuoi utilizzare.

    3. Fai clic su Salva modifiche.

  4. Fai clic su Configura.

  5. Nella finestra di dialogo di conferma, fai clic su Conferma. Se non hai abilitato in precedenza Policy Controller, facendo clic su Conferma viene abilitata l'API anthospolicycontroller.googleapis.com e viene installato Policy Controller sui tuoi cluster.

  6. (Facoltativo) Sincronizza i cluster esistenti con le impostazioni predefinite:

    1. Nella scheda Impostazioni, fai clic su Sincronizza con le impostazioni del parco risorse.
    2. Nell'elenco Cluster nel parco risorse, seleziona i cluster che vuoi sincronizzare, quindi fai clic su Sincronizza con le impostazioni del parco risorse. Il completamento di questa operazione può richiedere alcuni minuti.

Viene visualizzata la scheda Impostazioni di Policy Controller. Quando Policy Controller è installato e configurato sui tuoi cluster, le colonne di stato mostrano Installato . L'operazione può richiedere diversi minuti.

gcloud

Abilita Policy Controller eseguendo questo comando:

gcloud container fleet policycontroller enable \
    --memberships=MEMBERSHIP_NAME

Puoi impostare campi aggiuntivi per configurare Policy Controller. Ad esempio, potresti voler indicare a Policy Controller di esentare alcuni spazi dei nomi dall'applicazione. Per un elenco completo dei campi che puoi configurare, consulta la documentazione di Policy Controller Google Cloud CLI o esegui gcloud container fleet policycontroller enable --help.

Per configurare le impostazioni a livello di parco risorse per Policy Controller:

  1. Crea un file denominato fleet-default.yaml che contenga le configurazioni predefinite per Policy Controller. Il campo installSpec è obbligatorio per attivare i valori predefiniti a livello di flotta. Questo esempio mostra le opzioni che puoi configurare:

    # cat fleet-default.yaml
    
     policyControllerHubConfig:
      installSpec: INSTALL_SPEC_ENABLED 
      # Uncomment to set default deployment-level configurations.
      # deploymentConfigs:
      #   admission:
      #     containerResources:
      #       limits:
      #        cpu: 1000m
      #         memory: 8Gi
      #       requests:
      #         cpu: 500m
      #         memory: 4Gi
      # Uncomment to set policy bundles that you want to install by default.
      # policyContent:
      #   bundles:
      #     cis-k8s-v1.5.1:
      #       exemptedNamespaces:
      #       - "namespace-name"
      # Uncomment to exempt namespaces from admission.
      # exemptableNamespaces:
      # - "namespace-name"
      # Uncomment to enable support for referential constraints
      # referentialRulesEnabled: true
      # Uncomment to disable audit, adjust value to set audit interval
      # auditIntervalSeconds: 0
      # Uncomment to log all denies and dryrun failures
      # logDeniesEnabled: true
      # Uncomment to enable mutation
      # mutationEnabled: true
      # Uncomment to adjust the value to set the constraint violation limit
      # constraintViolationLimit: 20
      # ... other fields ...
    
    Best practice:

    Esonera gli spazi dei nomi di sistema per evitare errori nel tuo ambiente. Puoi trovare le istruzioni per escludere gli spazi dei nomi e un elenco di spazi dei nomi comuni creati dai servizi Google Cloud nella pagina Escludi spazi dei nomi.

  2. Applica la configurazione predefinita al tuo parco risorse:

    gcloud container fleet policycontroller enable \
      --fleet-default-member-config=fleet-default.yaml
    
  3. Per verificare che la configurazione sia stata applicata, esegui questo comando:

    gcloud container fleet policycontroller describe
    
  4. Per rimuovere la configurazione predefinita a livello di parco risorse, esegui questo comando:

    gcloud container fleet policycontroller enable \
      --no-fleet-default-member-config
    

Terraform

Per attivare Policy Controller nel tuo parco risorse con la libreria di modelli predefinita installata, consulta il seguente esempio:

resource "google_gke_hub_feature" "policycontroller" {
  name     = "policycontroller"
  location = "global"
  project  = data.google_project.default.project_id

  fleet_default_member_config {
    policycontroller {
      policy_controller_hub_config {
        install_spec = "INSTALL_SPEC_ENABLED"
        policy_content {
          bundles {
            bundle = "pss-baseline-v2022"
          }
          template_library {
            installation = "ALL"
          }
        }
      }
    }
  }
}

Puoi trasmettere più blocchi bundle per installare uno qualsiasi dei bundle elencati nella panoramica dei bundle di Policy Controller.

Per scoprire di più sull'utilizzo di Terraform, consulta Supporto di Terraform per Policy Controller.

Verifica l'installazione di Policy Controller

Dopo aver installato Policy Controller, puoi verificare che l'installazione sia stata completata correttamente.

Console

Completa i seguenti passaggi:

  1. Nella console Google Cloud , vai alla pagina Policy di GKE Enterprise nella sezione Posture Management.

    Vai alle norme

  2. Nella scheda Impostazioni, controlla la colonna Stato di Policy Controller nella tabella dei cluster. Un'installazione riuscita ha lo stato Installato .

gcloud

Esegui questo comando:

gcloud container fleet policycontroller describe --memberships=MEMBERSHIP_NAME

Un'installazione riuscita mostra membershipStates: MEMBERSHIP_NAME: policycontroller: state: ACTIVE.

Verificare l'installazione della libreria di modelli di vincolo

Quando installi Policy Controller, la libreria di modelli di vincolo viene installata per impostazione predefinita. Il completamento dell'installazione potrebbe richiedere diversi minuti. Puoi verificare che la raccolta di modelli sia stata completata correttamente.

Console

Completa i seguenti passaggi:

  1. Nella console Google Cloud , vai alla pagina Policy di GKE Enterprise nella sezione Posture Management.

    Vai alle norme

  2. Nella scheda Impostazioni, nella tabella del cluster, seleziona il numero elencato nella colonna Bundle installati. Nel riquadro Stato dei contenuti delle policy, l'installazione della libreria di modelli è riuscita e lo stato è Installato .

gcloud

Esegui questo comando:

kubectl get constrainttemplates

Dovresti vedere un output simile al seguente esempio:

NAME                                      AGE
k8sallowedrepos                           84s
k8scontainerlimits                        84s
k8spspallowprivilegeescalationcontainer   84s
...[OUTPUT TRUNCATED]...

Quando un modello di vincolo individuale viene installato correttamente, il campo status.created è true.

Interazioni di Policy Controller con Config Sync

Se utilizzi Policy Controller con Config Sync, devi essere a conoscenza delle seguenti interazioni con le risorse archiviate nella fonte di riferimento, ad esempio un repository Git, sincronizzate da Config Sync:

  • Non puoi sincronizzare un modello di vincolo che fa parte anche della libreria di modelli, a meno che quest'ultima non sia disattivata.

  • Se vuoi sincronizzare la risorsa Config archiviata nello spazio dei nomi gatekeeper-system, devi definire solo la risorsa Config nella fonte attendibile. gatekeeper-system Namespace non deve essere definito con esso.

Configurare le metriche

Per impostazione predefinita, Policy Controller tenta di esportare le metriche sia in Prometheus sia in Cloud Monitoring. Potresti dover completare passaggi di configurazione aggiuntivi, come la concessione di autorizzazioni, per consentire a Policy Controller di esportare le metriche. Per maggiori informazioni, consulta Utilizzare le metriche di Policy Controller.

Gestire la libreria dei modelli di vincolo

Per informazioni sulla disinstallazione o l'installazione di modelli di vincolo, dei relativi vincoli o della libreria di modelli di vincolo, consulta Creare vincoli.

Escludere gli spazi dei nomi dall'applicazione

Puoi configurare Policy Controller in modo che ignori gli oggetti all'interno di uno spazio dei nomi. Per ulteriori informazioni, consulta la pagina Escludere gli spazi dei nomi da Policy Controller.

Modifica risorse

Policy Controller funge anche da webhook mutante. Per maggiori informazioni, consulta Modifica risorse.

Visualizzare la versione di Policy Controller

Per scoprire quale versione di Gatekeeper Policy Controller viene utilizzata, visualizza il tag dell'immagine eseguendo il seguente comando:

kubectl get deployments -n gatekeeper-system gatekeeper-controller-manager \
  -o="jsonpath={.spec.template.spec.containers[0].image}"

Il tag Git (o hash) utilizzato per creare Gatekeeper e il numero di versione dell'operatore ConfigManagement sono inclusi nel tag immagine nel seguente modo:

.../gatekeeper:VERSION_NUMBER-GIT_TAG.gBUILD_NUMBER

Ad esempio, per l'immagine seguente:

gcr.io/config-management-release/gatekeeper:anthos1.3.2-480baac.g0
  • anthos1.3.2 è il numero di versione.
  • 480baac è il tag Git.
  • 0 è il numero di build.

Esegui l'upgrade di Policy Controller

Prima di eseguire l'upgrade di Policy Controller, controlla le note di rilascio per i dettagli sulle modifiche apportate tra le versioni.

Per eseguire l'upgrade di Policy Controller, completa i seguenti passaggi:

Console

  1. Nella console Google Cloud , vai alla pagina Policy di GKE Enterprise nella sezione Posture Management.

    Vai alle norme

  2. Nella scheda Impostazioni, accanto al cluster di cui vuoi eseguire l'upgrade della versione, seleziona Modifica configurazione.
  3. Espandi il menu Modifica la configurazione di Policy Controller.
  4. Dall'elenco a discesa Versione, seleziona la versione a cui vuoi eseguire l'upgrade.
  5. Fai clic su Salva modifiche.

gcloud

Esegui questo comando:

gcloud container fleet policycontroller update \
  --version=VERSION \
  --memberships=MEMBERSHIP_NAME

Sostituisci quanto segue:

  • VERSION: la versione a cui vuoi eseguire l'upgrade
  • MEMBERSHIP_NAME: il nome dell'abbonamento che hai scelto quando hai registrato il cluster. Puoi trovare il nome dell'abbonamento eseguendo gcloud container fleet memberships list.

Disinstalla Policy Controller

Segui questi passaggi per disinstallare Policy Controller dai tuoi cluster.

Console

Per disabilitare Policy Controller sui tuoi cluster, completa le seguenti attività:

  1. Nella console Google Cloud , vai alla pagina Policy di GKE Enterprise nella sezione Posture Management.

    Vai alle norme

  2. Nella scheda Impostazioni, seleziona Modifica nella colonna Modifica configurazione della tabella del cluster.
  3. Nel riquadro del cluster, espandi il menu Informazioni su Policy Controller.
  4. Seleziona Disinstalla Policy Controller.
  5. Conferma la disinstallazione seguendo le istruzioni nella finestra di dialogo di conferma e selezionando Conferma.

Quando Policy Controller viene disinstallato, le colonne di stato mostrano la dicitura Non installato .

gcloud

Per disinstallare Policy Controller, esegui questo comando:

gcloud container fleet policycontroller disable \
  --memberships=MEMBERSHIP_NAME

Sostituisci MEMBERSHIP_NAME con il nome dell'iscrizione del cluster registrato su cui disattivare Policy Controller. Puoi specificare più abbonamenti separati da una virgola.

RBAC e autorizzazioni di Policy Controller

Policy Controller include workload con privilegi elevati. Le autorizzazioni per questi workload sono trattate nella documentazione sulle operazioni di Open Policy Agent Gatekeeper.

Passaggi successivi