Limita il deployment a uno spazio dei nomi GKE

Quando esegui il deployment su Google Kubernetes Engine (GKE), l'account di servizio di esecuzione Cloud Deploy predefinito ha accesso a tutti gli spazi dei nomi nel cluster di destinazione. Puoi configurare l'account di servizio per il deployment in un solo spazio dei nomi.

  1. Assicurati che il account di servizio di esecuzione non disponga del ruolo IAM roles/container.developer.

  2. Concedi all'account di servizio il ruolo roles/container.clusterViewer.

    gcloud projects add-iam-policy-binding PROJECT_ID \
     --member="serviceAccount:SERVICE_ACCOUNT" \
     --role="roles/container.clusterViewer"
    

    Questo ruolo consente al account di servizio di autenticarsi sul cluster, ma non di fare altro.

  3. Crea un ruolo Kubernetes RBAC che conceda l'accesso amministrativo allo spazio dei nomi.

    Il ruolo RBAC in questo esempio dispone di autorizzazioni generali, equivalenti al ruolo IAM clouddeploy.developer. Per ridurre al minimo il rischio di escalation dei privilegi, ti consigliamo di modificare queste autorizzazioni impostando il valore minimo richiesto per le tue applicazioni. Per istruzioni, consulta la documentazione RBAC per GKE.

    kind: Role
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: admin
      namespace: NAMESPACE
    rules:
    - apiGroups: ["", "extensions", "apps"]
      resources: ["*"]
      verbs: ["*"]
    
  4. Crea un RoleBinding che associa il ruolo RBAC nello spazio dei nomi scelto al account di servizio di esecuzione di Cloud Deploy:

    kind: RoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: admin
      namespace: NAMESPACE
    subjects:
    # Google Cloud user account
    - kind: User
      name: SERVICE_ACCOUNT
    roleRef:
      kind: Role
      name: admin
      apiGroup: rbac.authorization.k8s.io
    

    Questo manifest definisce un binding delle policy RBAC che associa il ruolo admin al account di servizio di esecuzione. NAMESPACE è lo spazio dei nomi per cui vuoi concedere l'accesso al account di servizio. Il account di servizio non può accedere a nessun altro spazio dei nomi nel cluster.

  5. Applica il manifest RBAC al cluster:

    kubectl apply -f YAML_NAME