Migration de PSP vers Pod Security Admission
L' admission de la sécurité de pod remplace les politiques de sécurité de pod (PSP) dans les clusters qui exécutent la version 1.25 ou ultérieure. En fonction de votre configuration PSP, vous devrez peut-être effectuer certaines actions avant de mettre à niveau votre cluster de la version 1.24 à la version 1.25.
Votre cluster doit répondre à certaines exigences de configuration PSP avant de pouvoir effectuer une mise à niveau de la version 1.24 vers la version 1.25. Si votre cluster ne répond pas à ces exigences, la mise à niveau est bloquée. Procédez comme suit pour rechercher des PSP personnalisés et les supprimer.
- Si vous n'avez pas personnalisé ou modifié de PSP dans votre cluster, vous pouvez probablement mettre à niveau votre cluster. Toutefois, il est recommandé de passer en revue les exigences afin de vous assurer que vous n'avez pas besoin de modifier votre configuration PSP avant de mettre à niveau votre cluster.
- Si vous avez personnalisé ou modifié des PSP dans votre cluster, y compris la création de vos propres PSP, l'installation d'applications qui créent des PSP ou la modification des liaisons de rôle de cluster pour restreindre l'utilisation de certains PSP, vous devez modifier votre configuration pour répondre aux exigences de mise à niveau de votre cluster.
Avant de commencer, consultez les informations sous Décider si l'admission de la sécurité de pod est appropriée pour vous dans la documentation Kubernetes afin de vous familiariser avec les différences entre les PSP et l'admission de la sécurité de pod.
Exigences de mise à niveau
Vous pouvez mettre à niveau votre cluster si la configuration de votre cluster répond aux exigences suivantes. Ces exigences garantissent que les pods s'exécutent correctement sous la configuration d'admission de sécurité de pod par défaut fournie dans les clusters qui exécutent la version 1.25. Si ces conditions ne sont pas remplies, votre cluster ne peut pas être mis à niveau sauf si vous effectuez des étapes de migration supplémentaires.
- Tous les pods s'exécutent sous la PSP
ibm-privileged-psp
. - La liaison de rôle de cluster
privileged-psp-user
utilise la configuration par défaut. - La liaison de rôle de cluster
restricted-psp-user
utilise la configuration par défaut. - Seuls les PSP suivants fournis par IBM Cloud sont présents et aucun PSP supplémentaire n'est configuré.
ibm-privileged-psp
ibm-anyuid-psp
ibm-anyuid-hostpath-psp
ibm-anyuid-hostaccess-psp
ibm-restricted-psp
Si votre cluster répond à ces exigences, vos pods utilisent une PSP qui autorise les pods privilégiés. Toutefois, le respect de ces exigences ne signifie pas que tous vos pods sont privilégiés.
Si vous avez créé vos propres PSP, installé des applications qui créent des PSP ou modifié les liaisons de rôle de cluster pour restreindre l'utilisation du ibm-privileged-psp
, vous devez modifier votre configuration pour répondre
aux exigences répertoriées avant de pouvoir mettre à niveau votre cluster. Si vous utilisez des contrôleurs d'admission de politique de sécurité tiers, votre cluster peut toujours répondre à ces exigences tant que tous les contrôleurs fonctionnent
correctement dans la configuration PSP.
Procédez comme suit pour vérifier que la configuration PSP du cluster répond aux exigences. Si toutes les conditions requises sont remplies, vous pouvez mettre à niveau votre cluster vers la version 1.25.
Etape 1: Vérifiez que tous les pods s'exécutent sous la PSP ibm-privileged-psp
Procédez comme suit pour vous assurer que tous les pods s'exécutent sous la planification de maintenance préventive ibm-privileged-psp
.
Une différence entre l'admission de sécurité de pod et PodSecurityPolicies
est que l'admission de sécurité de pod est en cours de validation alors que le PodSecurityPolicies
peut être en mutation. Il est donc important
que les pods utilisent le ibm-privileged-psp
, qui n'est pas un PSP de mutation, avant la mise à niveau. Etant donné que l'admission de sécurité de pod et le ibm-privileged-psp
sont en cours de validation, les pods
fonctionnent de la même manière sous l'un ou l'autre.
Par exemple, si un pod s'exécute actuellement sous ibm-restricted-psp
, il peut définir fsGroup
et supplementalGroups
sur 1
dans la section securityContext
du pod, en fonction
de la plage MustRunAs
dans la PSP. Le ibm-restricted-psp
peut changer le pod securityContext
. Ces modifications sont visibles comme une différence entre le securityContext
du pod en cours
d'exécution et le securityContext
dans le modèle de pod du déploiement ou une ressource similaire qui crée le pod. Le ibm-privileged-psp
n'ayant pas de faculté de mutation, un pod qui s'exécute sous lui peut s'exécuter
avec des groupes différents et ne pas être en mesure d'accéder aux données stockées dans une réservation de volume persistant existante.
-
Obtenez les détails de tous les pods et vérifiez leurs PSP.
kubectl get pods -A -o jsonpath="{.items[*].metadata.annotations.kubernetes\.io\/psp}" | tr " " "\n" | sort -u
-
Consultez le résultat de la commande pour les PSP qui ne sont pas
ibm-privileged-psp
. Si vos pods utilisent une autre PSP, vous devez mettre à jour votre application pour utiliseribm-privileged-psp
avant de mettre à niveau votre cluster. Si aucun autre PSP n'est répertorié, vous pouvez poursuivre la mise à niveau.
La mise à niveau vers 1.25 n'est pas recommandée si la sortie répertorie un PSP autre que le PSP ibm-privileged-psp
.
Etape 2: Vérifier que la liaison de rôle de cluster privileged-psp-user utilise la configuration par défaut
Procédez comme suit pour vérifier que la liaison de rôle de cluster privileged-psp-user
utilise la configuration par défaut. Cela garantit que tous les comptes de service et les utilisateurs sont autorisés à utiliser le ibm-restricted-psp
via la liaison de rôle de cluster privileged-psp-user
.
Votre mise à niveau vers 1.25 échoue si la liaison de rôle de cluster ne possède pas les valeurs par défaut role
et subjects
exactement comme illustré dans l'exemple suivant.
-
Obtenez les détails de la liaison de rôle de cluster
privileged-psp-user
.kubectl get clusterrolebinding privileged-psp-user -o yaml
-
Passez en revue les fichiers
role
etsubjects
dans la sortie. Si la sortie est différente de l'exemple suivant, ne procédez pas à la mise à niveau vers 1.25. Si votre liaison de rôle de clusterprivileged-psp-user
correspond à l'exemple suivant, vous pouvez poursuivre la mise à niveau.apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: creationTimestamp: "2022-10-06T20:12:36Z" name: privileged-psp-user resourceVersion: "151862" uid: 15014736-94d2-4cba-a3a8-92dd36de453b roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: ibm-privileged-psp-user subjects: - apiGroup: rbac.authorization.k8s.io kind: Group name: system:masters - apiGroup: rbac.authorization.k8s.io kind: Group name: system:nodes - apiGroup: rbac.authorization.k8s.io kind: Group name: system:serviceaccounts - apiGroup: rbac.authorization.k8s.io kind: Group name: system:authenticated
Etape 3: Vérifier que la liaison de rôle de cluster restricted-psp-user utilise la configuration par défaut
Procédez comme suit pour vérifier que la liaison de rôle de cluster restricted-psp-user
utilise la configuration par défaut. Cela garantit que tous les comptes de service et les utilisateurs sont autorisés à utiliser le ibm-restricted-psp
via la liaison de rôle de cluster restricted-psp-user
.
Votre mise à niveau vers 1.25 échoue si la liaison de rôle de cluster n'inclut pas les valeurs par défaut role
et subjects
, comme illustré dans l'exemple suivant.
-
Obtenir les détails de la liaison de rôle de cluster
restricted-psp-user
kubectl get clusterrolebinding restricted-psp-user -o yaml
-
Consultez la sortie de la commande. Ne mettez pas à niveau votre cluster vers la version 1.25 si la liaison de rôle de cluster n'inclut pas les paramètres par défaut pour
role
etsubjects
, comme illustré dans l'exemple suivant.apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: creationTimestamp: "2022-10-06T20:13:10Z" name: restricted-psp-user resourceVersion: "151890" uid: 4edb362f-9933-48d7-95e2-f41cd9f4dead roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: ibm-restricted-psp-user subjects: - apiGroup: rbac.authorization.k8s.io kind: Group name: system:masters - apiGroup: rbac.authorization.k8s.io kind: Group name: system:nodes - apiGroup: rbac.authorization.k8s.io kind: Group name: system:serviceaccounts - apiGroup: rbac.authorization.k8s.io kind: Group name: system:authenticated
Etape 4: Recherche de PSP non-IBM
Procédez comme suit pour vérifier si votre cluster utilise des PSP nonIBM.
La mise à niveau vers la version 1.25 échoue si la sortie de la commande inclut des PSP supplémentaires par rapport à ceux de l'exemple suivant. Il se peut que vous ayez des PSP supplémentaires provenant d'applications tierces et que vous ayez besoin de mises à jour des applications ou que vous travailliez avec les fournisseurs d'applications pour déterminer la stratégie de mise à niveau appropriée à utiliser pour ces applications.
-
Répertoriez vos politiques de sécurité de pod.
kubectl get podsecuritypolicies -o name
-
Consultez la sortie de la commande.
Warning: policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ podsecuritypolicy.policy/ibm-anyuid-hostaccess-psp podsecuritypolicy.policy/ibm-anyuid-hostpath-psp podsecuritypolicy.policy/ibm-anyuid-psp podsecuritypolicy.policy/ibm-privileged-psp podsecuritypolicy.policy/ibm-restricted-psp
-
Mettez à jour vos applications pour utiliser les PSP IBM.
Etapes de migration
Si vous déterminez que votre configuration de sécurité de pod de cluster ne répond pas aux prérequis de migration, vous devez suivre ces étapes de migration pour mettre à niveau votre cluster.
Plusieurs des étapes de migration de la sécurité de pod suivantes incluent des liens vers des sections de la documentation Kubernetes. Notez que toutes les étapes incluses dans la documentation Kubernetes externe ne sont pas pertinentes pour les clusters IBM Cloud Kubernetes Service. Suivez uniquement les étapes directement liées à partir de cette page. Ne suivez pas le guide de migration Kubernetes externe dans son intégralité, car certaines actions ne sont pas appropriées pour les clusters IBM Cloud Kubernetes Service. Lisez attentivement les étapes suivantes pour vous assurer que vous effectuez les actions de migration appropriées pour votre cluster.
Etape 1: Activation de l'admission de la sécurité de pod dans votre cluster 1.24
Activez l'admission de la sécurité de pod dans votre cluster 1.24. Cette commande met à jour le maître cluster pour utiliser la nouvelle configuration d'admission de sécurité de pod. La mise à jour du maître de cluster peut prendre quelques minutes.
ibmcloud ks cluster master pod-security set --cluster <CLUSTER>
Etape 2: Passer en revue les droits d'espace de nom
Passez en revue les droits d'espace de nom dans la documentation Kubernetes externe. Si vos droits Kubernetes sont gérés par des rôles de service IAM, le rôle de service Manager
est requis pour créer ou éditer des espaces de nom
et pour définir des libellés de sécurité de pod.
Étape 3: Simplifier et normaliser les prestataires de services de paiement
Nettoyez votre configuration de sécurité de pod en suivant les étapes de la documentation Kubernetes externe. Ne modifiez ou ne supprimez pas les PSP suivants: ibm-privileged-psp
, ibm-anyuid-psp
,
ibm-anyuid-hostpath-psp
, ibm-anyuid-hostaccess-psp
et ibm-restricted-psp
.
Etape 4: Mise à jour des espaces de nom dans votre cluster
Mettez à jour les espaces de nom dans votre cluster en suivant les étapes de la documentation Kubernetes externe. Ces étapes doivent être effectuées sur chaque espace de nom du cluster qui n'est pas géré par IBM Cloud. Notez les exceptions incluses dans cette section.
Ne supprimez pas ou ne modifiez pas les libellés de sécurité de pod pour les espaces de nom suivants qui sont gérés par IBM Cloud: kube-system
, ibm-system
, ibm-operators
.
A l'étape 3.d. Ignorez PodSecurity Policy de la documentation externe liée à cette étape, ne créez pas le PSP privilégié suggéré. Si vous créez ce PSP supplémentaire, il doit être supprimé avant la mise à niveau vers la version
1.25, comme indiqué dans la configuration requise pour la mise à niveau. A la place, utilisez la commande suivante pour créer un RoleBinding
pour le rôle de cluster ibm-privileged-psp-user
: kubectl create -n $NAMESPACE rolebinding disable-psp --clusterrole ibm-privileged-psp-user --group system:serviceaccounts:$NAMESPACE
.
Etape 5: Passez en revue le processus de création d'espace de nom
Consultez les informations de la documentation Kubernetes externe pour vous assurer que le profil de sécurité de pod est appliqué à tous les nouveaux espaces de nom créés dans votre cluster.
Etape 6: Facultatif. Désactiver la fonction PSP dans le cluster
- Désactivez le contrôleur d'admission
PodSecurityPolicy
dans le cluster. Cette commande met à jour le maître cluster pour utiliser la nouvelle configuration.ibmcloud ks cluster master pod-security policy disable --cluster <cluster>
- Attendez quelques minutes que la mise à jour du maître cluster soit terminée.
- Supprimez vos PSP et les
Roles
,ClusterRoles
,RoleBindings
etClusterRoleBindings
associés. Assurez-vous que les composants que vous supprimez n'accordent pas d'autres droits non associés dont vous pourriez avoir besoin ailleurs. Ne supprimez pas les PSP suivants:ibm-privileged-psp
,ibm-anyuid-psp
,ibm-anyuid-hostpath-psp
,ibm-anyuid-hostaccess-psp
etibm-restricted-psp
. Ne supprimez pas les fichiersClusterRoles
etClusterRoleBindings
suivants:privileged-psp-user
etrestricted-psp-user
.
Si vous devez réactiver les PSP dans votre cluster 1.24, exécutez ibmcloud ks cluster master pod-security policy enable --cluster <cluster>
. Cette commande met à jour le maître cluster pour utiliser la configuration PSP.
Etape 7: Facultatif. Mise à niveau de votre cluster
Mettez à niveau votre cluster vers la version 1.25 pour utiliser l'admission de la sécurité de pod. Ou bien, conservez votre cluster à la version 1.24 avec l'admission de la sécurité de pod activée jusqu'à ce que vous soyez prêt à effectuer la mise à niveau.
Références
Passez en revue les informations suivantes avant de migrer des politiques de sécurité de pod vers l'admission de sécurité de pod. Ne suivez pas le guide de migration car certaines actions ne sont pas appropriées pour les clusters IBM Cloud Kubernetes Service.