Os clusters TKG incluem a política de segurança de pod padrão à qual você pode associar para implantação de carga de trabalho privilegiada e restrita.

Sobre as associações de função e clusterRole

Esta seção fornece comandos YAML e CLI para criar objetos RoleBinding e ClusterRoleBinding para a política de segurança de pod padrão.

Um RoleBinding concede permissões em um namespace específico, enquanto um ClusterRoleBinding concede permissões em todo o cluster. Para obter mais informações, consulte RoleBinding e ClusterRoleBinding na documentação do Kubernetes.

A decisão de usar um RoleBindings ou ClusterRoleBinding depende do seu caso de uso. Por exemplo, se você usar um ClusterRoleBinding e configurar assuntos para usar system:serviceaccounts:<namespace>, poderá associar a um PSP antes que o namespace seja criado.

Exemplo 1: ClusterRoleBinding para executar um conjunto privilegiado de cargas de trabalho

O comando kubectl a seguir cria um ClusterRoleBinding que concede acesso a usuários autenticados que executam um conjunto privilegiado de cargas de trabalho usando o PSP padrão vmware-system-privileged.
Aviso: A aplicação do Exemplo 1, de forma declarativa ou imperativa, permite a implantação de cargas de trabalho privilegiadas em todo o cluster. Na verdade, o Exemplo 1 desativa os controles de segurança nativos e deve ser usado com cuidado e com total conhecimento das implicações. Para maior segurança, considere os Exemplos 2, 3 e 4.
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
Como alternativa à aplicação do YAML, você pode executar o seguinte comando kubectl.
kubectl create clusterrolebinding default-tkg-admin-privileged-binding --clusterrole=psp:vmware-system-privileged --group=system:authenticated

Exemplo 2: RoleBinding para executar um conjunto privilegiado de cargas de trabalho

O comando kubectl a seguir cria um RoleBinding que concede acesso a todas as contas de serviço no namespace padrão para executar um conjunto privilegiado de cargas de trabalho usando o PSP padrão vmware-system-privileged.
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
Como alternativa à aplicação do YAML, você pode executar o seguinte comando kubectl.
kubectl create rolebinding rolebinding-default-privileged-sa-ns_default --namespace=default --clusterrole=psp:vmware-system-privileged --group=system:serviceaccounts

Exemplo 3: ClusterRoleBinding para executar um conjunto restrito de cargas de trabalho

O YAML a seguir cria um ClusterRoleBinding que concede aos usuários autenticados acesso em todo o cluster para executar um conjunto restrito de cargas de trabalho usando o PSP padrão vmware-system-restricted.

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

Como alternativa à aplicação do YAML, você pode executar o seguinte comando kubectl.

kubectl create clusterrolebinding psp:authenticated --clusterrole=psp:vmware-system-restricted --group=system:authenticated

Exemplo 4: RoleBinding para executar um conjunto restrito de cargas de trabalho

O YAML a seguir cria um RoleBinding que concede acesso a todas as contas de serviço em um namespace específico para executar um conjunto restrito de cargas de trabalho usando o PSP padrão vmware-system-restricted.

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

Como alternativa à aplicação do YAML, você pode executar o seguinte comando kubectl.

kubectl create rolebinding psp:serviceaccounts --clusterrole=psp:vmware-system-restricted --group=system:serviceaccounts

Exemplo de função para a política de segurança do pod

Se você definir sua própria política de segurança de pod (PSP) para implantar cargas de trabalho, consulte este exemplo para criar uma Função ou ClusterRole que faça referência ao PSP personalizado.

O exemplo demonstra um Role associado a um PodSecurityPolicy. Na definição da função, o example-role recebe o verbo use para um recurso PSP personalizado que você define. Como alternativa, use um dos PSPs padrão. Em seguida, crie uma associação.

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