PSP에서 팟 (Pod) 보안 허가로 마이그레이션
버전 1.25 이상 클러스터에서는 Pod 보안 정책(PSP)을 Pod 보안 인허전으로 대체합니다. PSP 구성에 따라 클러스터를 버전 에서 1.24 로 업그레이드하기 전에 특정 조치를 1.25 취해야 할 수 있습니다.
버전 1.24 에서 1.25로 업그레이드하기 전에 클러스터가 특정 PSP 구성 요구사항을 충족해야 합니다. 클러스터가 이러한 요구사항을 충족하지 않는 경우 업그레이드가 차단됩니다. 사용자 정의 PSP를 확인하고 제거하려면 다음 단계를 완료하십시오.
- 클러스터에서 PSP를 사용자 정의하거나 변경하지 않은 경우클러스터를 업그레이드할 수 있습니다. 그러나 클러스터를 업그레이드하기 전에 PSP 구성을 수정할 필요가 없도록 요구사항을 검토하는 것이 좋습니다.
- 클러스터에서 사용자 정의 또는 변경된 PSP가 있는 경우, 사용자 고유의 PSP 작성, PSP를 작성하는 응용프로그램 설치 또는 특정 PSP의 사용을 제한하기 위한 클러스터 역할 바인딩 변경을 포함하여 클러스터를 업그레이드하기 위한 요구사항을 충족하도록 설정을 반드시 수정해야 합니다.
시작하기 전에, 문서의 Kubernetes 'Pod Security Admission이 적합한지 결정하기' 섹션에 있는 정보를 검토하여 PSP와 Pod Security Admission 간의 차이점을 숙지하십시오.
업그레이드 요구사항
클러스터 설정이 다음 요구사항을 충족하는 경우 클러스터를 업그레이드할 수 있습니다. 이러한 요구사항은 버전 1.25를 실행하는 클러스터에서 제공되는 기본 팟 (Pod) 보안 허가 구성에서 팟 (Pod) 이 올바르게 실행되도록 보장합니다. 이러한 요구사항이 충족되지 않으면 추가 마이그레이션 단계를 수행하지 않는 한 클러스터를 업그레이드할 수 없습니다.
- 모든 팟 (Pod) 은
ibm-privileged-pspPSP에서 실행됩니다. privileged-psp-user클러스터 역할 바인딩은 기본 구성을 사용합니다.restricted-psp-user클러스터 역할 바인딩은 기본 구성을 사용합니다.- IBM Cloud 에서 제공하는 다음 PSP만 존재하며 추가 PSP가 구성되지 않습니다.
ibm-privileged-pspibm-anyuid-pspibm-anyuid-hostpath-pspibm-anyuid-hostaccess-pspibm-restricted-psp
클러스터가 이러한 요구사항을 충족하는 경우 팟 (Pod) 은 권한 있는 팟 (Pod) 을 허용하는 PSP를 사용합니다. 그러나 이러한 요구사항을 충족한다고 해서 모든 팟 (Pod) 에 권한이 부여되는 것은 아닙니다.
사용자 고유의 PSP를 작성했거나, PSP를 작성하는 애플리케이션을 설치했거나, ibm-privileged-psp 의 사용을 제한하도록 클러스터 역할 바인딩을 변경한 경우, 클러스터를 업그레이드하기 전에 나열된 요구사항을 충족하도록 설정을 수정해야 합니다. 써드파티 보안 정책 승인 제어기를 사용하는 경우, 모든 제어기가 PSP 구성 내에서 올바르게 작동하는 한 클러스터는 여전히 이러한 요구사항을 충족할 수
있습니다.
다음 단계를 완료하여 클러스터 PSP 구성이 요구사항을 충족하는지 확인하십시오. 모든 요구사항이 충족되면 클러스터를 버전 1.25로 업그레이드할 수 있습니다.
1단계: 모든 팟 (Pod) 이 ibm-privileged-psp PSP에서 실행되는지 확인
다음 단계를 완료하여 모든 팟 (Pod) 이 ibm-privileged-psp PSP에서 실행되는지 확인하십시오.
팟 (Pod) 보안 승인과 PodSecurityPolicies 간의 한 가지 차이점은 PodSecurityPolicies 가 변형될 수 있는 동안 팟 (Pod) 보안 승인이 유효성 검증 중이라는 점입니다. 이로 인해 업그레이드하기 전에 팟 (Pod) 이 변형 PSP가 아닌 ibm-privileged-psp 를 사용하는 것이 중요합니다. 팟 (Pod) 보안
승인과 ibm-privileged-psp 모두 유효성 검증 중이므로 팟 (Pod) 은 둘 중 하나에서 동일하게 작동합니다.
예를 들어, 팟 (Pod) 이 현재 ibm-restricted-psp 에서 실행 중인 경우 PSP의 MustRunAs 범위를 기반으로 팟 (Pod) securityContext 섹션에서 fsGroup 및 supplementalGroups 를 1 로 설정할 수 있습니다. ibm-restricted-psp 는 securityContext 파드를 변경할 수 있습니다. 이러한 변경사항은 실행 중인 팟 (Pod) 의 securityContext 와 팟 (Pod) 을 작성하는 유사한 리소스 또는 배치의 팟 (Pod) 템플리트에 있는 securityContext 간의 차이로 표시됩니다. ibm-privileged-psp 는 변형되지 않으므로
여기에서 실행 중인 팟 (Pod) 은 다른 그룹으로 실행될 수 있으며 기존 PVC에 저장된 데이터에 액세스할 수 없습니다.
-
모든 팟 (Pod) 의 세부사항을 가져오고 해당 PSP를 확인하십시오.
kubectl get pods -A -o jsonpath="{.items[*].metadata.annotations.kubernetes\.io\/psp}" | tr " " "\n" | sort -u -
ibm-privileged-psp가 아닌 모든 PSP에 대한 명령 출력을 검토하십시오. 팟 (Pod) 이 다른 PSP를 사용 중인 경우 클러스터를 업그레이드하기 전에ibm-privileged-psp를 사용하도록 애플리케이션을 업데이트해야 합니다. 다른 PSP가 나열되지 않으면 업그레이드를 계속할 수 있습니다.
출력에 PSP ibm-privileged-psp 이외의 PSP가 나열된 경우 로 업그레이드하는 1.25 것은 권장되지 않습니다.
2단계: privileged-psp-user 클러스터 역할 바인딩이 기본 구성을 사용하는지 확인
다음 단계를 완료하여 privileged-psp-user 클러스터 역할 바인딩이 기본 구성을 사용하는지 확인하십시오. 그러면 모든 서비스 계정 및 사용자에게 privileged-psp-user 클러스터 역할 바인딩을 통해 ibm-restricted-psp 를 사용할 수 있는 권한이 부여됩니다.
클러스터 역할 바인딩에 다음 예시와 정확히 일치하는 role``subjects 기본값이 없는 경우 업그레이드가 1.25 실패합니다.
-
세부사항
privileged-psp-user클러스터 역할 바인딩을 가져오십시오.kubectl get clusterrolebinding privileged-psp-user -o yaml -
출력에서
role및subjects를 검토하십시오. 출력이 다음 예제와 다른 경우 1.25로 업그레이드하지 마십시오.privileged-psp-user클러스터 역할 바인딩이 다음 예제와 일치하는 경우 업그레이드를 계속할 수 있습니다.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
3단계: restricted-psp-user 클러스터 역할 바인딩이 기본 구성을 사용하는지 확인
다음 단계를 완료하여 restricted-psp-user 클러스터 역할 바인딩이 기본 구성을 사용하는지 확인하십시오. 그러면 모든 서비스 계정 및 사용자에게 restricted-psp-user 클러스터 역할 바인딩을 통해 ibm-restricted-psp 를 사용할 수 있는 권한이 부여됩니다.
클러스터 역할 바인딩에 다음 예시와 같이 subjects 기본값인 role 및 이 포함되어 있지 않으면 업그레이드가 1.25 실패합니다.
-
restricted-psp-user클러스터 역할 바인딩의 세부사항 가져오기kubectl get clusterrolebinding restricted-psp-user -o yaml -
명령 출력을 검토하십시오. 다음 예제에 표시된 대로 클러스터 역할 바인딩에
role및subjects에 대한 기본 설정이 포함되지 않은 경우 클러스터를 버전 1.25 로 업그레이드하지 마십시오.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
4단계: 비IBM PSP 확인
클러스터가 비IBM PSP를 사용하는지 여부를 확인하는 단계를 완료하십시오.
업그레이드 명령어 출력에 다음 예시에서 제시된 것 외의 추가 PSP가 포함된 경우 버전 1.25 업그레이드가 실패합니다. 써드파티 애플리케이션의 추가 PSP가 있을 수 있으며 해당 애플리케이션에 사용할 적절한 업그레이드 전략을 판별하기 위해 애플리케이션에 대한 업데이트가 필요하거나 애플리케이션 벤더와 함께 작업해야 할 수 있습니다.
-
팟 (Pod) 보안 정책을 나열하십시오.
kubectl get podsecuritypolicies -o name -
명령 출력을 검토하십시오.
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 -
IBM PSP를 사용하도록 앱을 업데이트하십시오.
마이그레이션 단계
클러스터 팟 (Pod) 보안 구성이 마이그레이션 전제조건 을 충족하지 않는 것으로 판별되면 다음 마이그레이션 단계에 따라 클러스터를 업그레이드해야 합니다.
다음 Pod 보안 마이그레이션 단계 중 일부에는 문서의 Kubernetes 해당 섹션으로 연결되는 링크가 포함되어 있습니다. 외부 Kubernetes 문서에 포함된 모든 단계가 IBM Cloud Kubernetes Service 클러스터에 적용되는 것은 아닙니다 이 페이지에서 직접 링크된 단계만 수행하십시오. 외부 Kubernetes 마이그레이션 가이드를 완전히 따르지 마십시오. 일부 작업은 IBM Cloud Kubernetes Service 클러스터에 적합하지 않습니다. 다음 단계를 주의깊게 읽고 클러스터에 대해 올바른 마이그레이션 조치를 수행하는지 확인하십시오.
1단계: 1.24 클러스터에서 팟 (Pod) 보안 허가 사용
1.24 클러스터에서 팟 (Pod) 보안 허가를 사용으로 설정하십시오. 이 명령은 새 팟 (Pod) 보안 허가 구성을 사용하도록 클러스터 마스터를 업데이트합니다. 클러스터 마스터가 업데이트되는 데 몇 분 정도 걸릴 수 있습니다.
ibmcloud ks cluster master pod-security set --cluster <CLUSTER>
2단계: 네임스페이스 권한 검토
외부 Kubernetes 문서에서 네임스페이스 권한을 검토하십시오. Kubernetes 권한이 IAM 서비스 역할로 관리되는 경우, 네임스페이스를 만들거나 편집하고 파드 보안 레이블을 설정하려면 매니저 서비스 역할이 필요합니다.
3단계: PSP 간소화 및 표준화
외부 Kubernetes 문서의 단계에 따라 팟 (Pod) 보안 구성을 정리하십시오. ibm-privileged-psp, ibm-anyuid-psp, ibm-anyuid-hostpath-psp, ibm-anyuid-hostaccess-psp 및 ibm-restricted-psp PSP를 수정하거나 삭제하지 마십시오.
4단계: 클러스터에서 네임스페이스 업데이트
외부 Kubernetes 문서의 단계에 따라 클러스터의 네임스페이스를 업데이트하십시오. 이러한 단계는 IBM Cloud에서 관리되지 않는 클러스터의 모든 네임스페이스에서 수행되어야 합니다. 이 섹션에 포함된 예외를 참고하십시오.
다음 네임스페이스에 대해 Pod 보안 레이블을 삭제하거나 수정하지 마십시오. 이 네임스페이스는 다음에 의해 관리됩니다 IBM Cloud: kube-system, ibm-system, ibm-operators.
단계 3.d. 이 단계에서 연결된 외부 문서의 정책을 PodSecurity 무시하고, 제안된 특권 PSP를 생성하지 마십시오. 이 추가 PSP를 생성하는 경우, 업그레이드 요구 1.25 사항에 명시된 대로 버전 로 업그레이드하기 전에 반드시 삭제해야 합니다. 대신 kubectl create -n $NAMESPACE rolebinding disable-psp --clusterrole ibm-privileged-psp-user --group system:serviceaccounts:$NAMESPACE 명령을 사용하여 ibm-privileged-psp-user 클러스터 역할에 대한 RoleBinding 를 작성하십시오.
5단계: 네임스페이스 작성 프로세스 검토
외부 Kubernetes 문서의 정보를 검토하여 팟 (Pod) 보안 프로파일이 클러스터에서 작성된 새 네임스페이스에 적용되는지 확인하십시오.
6단계: 선택사항. 클러스터에서 PSP 기능 사용 안함
- 클러스터에서
PodSecurityPolicy허가 제어기를 사용 안함으로 설정하십시오. 이 명령은 새 구성을 사용하도록 클러스터 마스터를 업데이트합니다.ibmcloud ks cluster master pod-security policy disable --cluster <cluster> - 클러스터 마스터 업데이트가 완료될 때까지 몇 분 정도 기다리십시오.
- PSP및 연관된
Roles,ClusterRoles,RoleBindings및ClusterRoleBindings를 삭제하십시오. 삭제하는 컴포넌트가 다른 곳에서 필요할 수 있는 다른 관련되지 않은 권한을 부여하지 않는지 확인하십시오. 다음 PSP를 삭제하지 마십시오.ibm-privileged-psp,ibm-anyuid-psp,ibm-anyuid-hostpath-psp,ibm-anyuid-hostaccess-psp및ibm-restricted-psp. 다음ClusterRoles및ClusterRoleBindings:privileged-psp-user및restricted-psp-user를 삭제하지 마십시오.
클러스터에서 PSP를 다시 1.24 활성화해야 하는 경우 다음 명령을 실행하십시오 ibmcloud ks cluster master pod-security policy enable --cluster <cluster>. 이 명령은 PSP 구성을 사용하도록 클러스터 마스터 를 갱신합니다.
7단계: 선택사항. 클러스터 업그레이드
클러스터를 최소 버전으로 업그레이드하여 1.25 Pod 보안 승인 기능을 사용하십시오. 또는, 업그레이드 준비가 될 때까지 Pod 보안 승인 기능을 활성화한 상태로 클러스터 1.24 버전을 유지하십시오.
참조
팟 (Pod) 보안 정책에서 팟 (Pod) 보안 허가로 마이그레이션하기 전에 다음 정보를 검토하십시오. 일부 조치가 IBM Cloud Kubernetes Service 클러스터에 적합하지 않으므로 마이그레이션 안내서를 그대로 따르지 마십시오.