I cluster TKG Service che utilizzano TKR 1.24 e versioni precedenti includono un criterio di sicurezza predefinito del pod a cui è possibile eseguire il binding per la distribuzione dei carichi di lavoro con privilegi e limitazioni.
Applicazione del criterio di sicurezza del pod predefinito mediante RoleBinding e ClusterRoleBinding
Un RoleBinding concede le autorizzazioni all'interno di uno spazio dei nomi specifico. Un ClusterRoleBinding concede le autorizzazioni a livello di cluster. La decisione di utilizzare RoleBindings o ClusterRoleBinding dipende dal caso d'uso. Ad esempio, se si utilizza un ClusterRoleBinding e si configurano gli argomenti da utilizzare per l'utilizzo di system:serviceaccounts:<namespace>
, è possibile eseguire il binding a un PSP prima che venga creato lo spazio dei nomi. Per ulteriori informazioni, vedere RoleBinding and ClusterRoleBinding nella documentazione di Kubernetes.
Nelle sezioni seguenti vengono forniti i comandi YAML e CLI per la creazione di oggetti RoleBinding e ClusterRoleBinding che autorizzano l'uso del criterio di sicurezza del pod predefinito.
Esempio 1: ClusterRoleBinding per eseguire un set di carichi di lavoro con privilegi
vmware-system-privileged
predefinito.
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: psp:privileged rules: - apiGroups: ['policy'] resources: ['podsecuritypolicies'] verbs: ['use'] resourceNames: - vmware-system-privileged --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: all:psp:privileged roleRef: kind: ClusterRole name: psp:privileged apiGroup: rbac.authorization.k8s.io subjects: - kind: Group name: system:serviceaccounts apiGroup: rbac.authorization.k8s.io
kubectl
seguente.
kubectl create clusterrolebinding default-tkg-admin-privileged-binding --clusterrole=psp:vmware-system-privileged --group=system:authenticated
Esempio 2: RoleBinding per l'esecuzione di un set con privilegi di carichi di lavoro
vmware-system-privileged
predefinito.
kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: rolebinding-default-privileged-sa-ns_default namespace: default roleRef: kind: ClusterRole name: psp:vmware-system-privileged apiGroup: rbac.authorization.k8s.io subjects: - kind: Group apiGroup: rbac.authorization.k8s.io name: system:serviceaccounts
kubectl create rolebinding rolebinding-default-privileged-sa-ns_default --namespace=default --clusterrole=psp:vmware-system-privileged --group=system:serviceaccounts
Esempio 3: ClusterRoleBinding per l'esecuzione di un set di carichi di lavoro con restrizioni
Il seguente codice YAML crea un ClusterRoleBinding che concede agli utenti autenticati l'accesso a livello di cluster per eseguire un set di carichi di lavoro con restrizioni utilizzando il PSP vmware-system-restricted
predefinito.
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: psp:authenticated subjects: - apiGroup: rbac.authorization.k8s.io kind: Group name: system:authenticated roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: psp:vmware-system-restricted
In alternativa all'applicazione del codice YAML, è possibile eseguire il comando kubectl seguente.
kubectl create clusterrolebinding psp:authenticated --clusterrole=psp:vmware-system-restricted --group=system:authenticated
Esempio 4: RoleBinding per l'esecuzione di un set di carichi di lavoro con restrizioni
Il seguente codice YAML crea un RoleBinding che concede l'accesso a tutti gli account di servizio all'interno di uno spazio dei nomi specifico per eseguire una serie di carichi di lavoro con restrizioni utilizzando il PSP vmware-system-restricted
predefinito.
apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: psp:serviceaccounts namespace: some-namespace subjects: - apiGroup: rbac.authorization.k8s.io kind: Group name: system:serviceaccounts roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: psp:vmware-system-restricted
kubectl create rolebinding psp:serviceaccounts --clusterrole=psp:vmware-system-restricted --group=system:serviceaccounts -n some-namespace
Ruolo di esempio per il criterio di sicurezza pod
Se si definisce il criterio di sicurezza del pod (PSP) per distribuire i carichi di lavoro, fare riferimento a questo esempio per creare un Role o ClusterRole che faccia riferimento al PSP personalizzato.
Nell'esempio viene illustrato un ruolo associato a PodSecurityPolicy. Nella definizione del ruolo, a example-role
viene concesso il verbo use
a una risorsa PSP personalizzata definita dall'utente. In alternativa, utilizzare uno dei PSP predefiniti. Creare quindi un binding.
apiVersion: rbac.authorization.k8s.io/v1beta1 kind: Role metadata: name: example-role namespace: tkgs-cluster-ns rules: - apiGroups: - "" resources: - configmaps verbs: - create - get - list - watch - update - apiGroups: - "" resources: - events verbs: - create - update - patch - apiGroups: - extensions resourceNames: - CUSTOM-OR-DEFAULT-PSP resources: - podsecuritypolicies verbs: - use