Les clusters TKG incluent une stratégie de sécurité de l'espace par défaut à laquelle vous pouvez vous lier pour le déploiement de la charge de travail privilégiée et restreinte.
À propos des liaisons rôle et ClusterRole
Cette section fournit du code YAML et des commandes d'interface de ligne de commande pour créer des objets RoleBinding and ClusterRoleBinding pour la stratégie de sécurité de l'espace par défaut.
RoleBinding octroie des autorisations dans un espace de noms spécifique tandis que ClusterRoleBinding en octroie à l'échelle du cluster. Pour plus d'informations, consultez RoleBinding et ClusterRoleBinding dans la documentation de Kubernetes.
La décision d'utiliser RoleBindings ou ClusterRoleBinding dépend de votre cas d'utilisation . Par exemple, si vous utilisez une liaison ClusterRoleBinding et configurez des sujets pour qu'ils utilisent system:serviceaccounts:<namespace>
, vous pouvez établir une liaison à un PSP avant la création de l'espace de noms.
Exemple 1 : ClusterRoleBinding pour exécuter un ensemble privilégié de charges de travail
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
suivante.
kubectl create clusterrolebinding default-tkg-admin-privileged-binding --clusterrole=psp:vmware-system-privileged --group=system:authenticated
Exemple 2 : RoleBinding pour exécuter un ensemble privilégié de charges de travail
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
Exemple 3 : ClusterRoleBinding pour exécuter un ensemble restreint de charges de travail
Le fichier YAML suivant crée une liaison ClusterRoleBinding qui accorde aux utilisateurs authentifiés un accès à l'échelle du cluster afin d'exécuter un ensemble restreint de charges de travail à l'aide de la PSP par défaut (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
Plutôt que d'appliquer le fichier YAML, vous pouvez exécuter la commande kubectl suivante.
kubectl create clusterrolebinding psp:authenticated --clusterrole=psp:vmware-system-restricted --group=system:authenticated
Exemple 4 : RoleBinding pour exécuter un ensemble restreint de charges de travail
Le fichier YAML suivant crée une liaison RoleBinding qui accorde l'accès à tous les comptes de service dans un espace de noms spécifique afin d'exécuter un ensemble restreint de charges de travail à l'aide de la PSP par défaut (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
Plutôt que d'appliquer le fichier YAML, vous pouvez exécuter la commande kubectl suivante.
kubectl create rolebinding psp:serviceaccounts --clusterrole=psp:vmware-system-restricted --group=system:serviceaccounts
Exemple de rôle pour la stratégie de sécurité de l'espace
Si vous définissez votre propre stratégie de sécurité d'espace (PSP) pour déployer des charges de travail, reportez-vous à cet exemple pour créer un rôle ou ClusterRole faisant référence à la PSP personnalisée.
L'exemple montre un rôle lié à une stratégie PodSecurityPolicy. Dans la définition du rôle, le verbe use
est accordé au rôle example-role
pour une ressource PSP personnalisée que vous définissez. Vous pouvez également utiliser l'une des PSP par défaut. Créez ensuite une liaison.
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