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
vmware-system-privileged
.
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
.
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
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
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