4.15. 보안 정책 관리
지정된 보안 표준, 카테고리 및 제어에 따라 클러스터 규정 준수를 보고하고 검증하는 보안 정책을 만듭니다.
다음 섹션을 확인합니다.
4.15.1. 보안 정책 생성
CLI(명령줄 인터페이스) 또는 콘솔에서 보안 정책을 생성할 수 있습니다.
필수 액세스: 클러스터 관리자
중요: * 특정 클러스터에 정책을 적용하려면 배치 및 배치 바인딩을 정의해야 합니다. placement Binding 리소스는 배치를
바인딩합니다. 클러스터 라벨 선택기 필드에 유효한 값을 입력하여 Placement
및 PlacementBinding
리소스를 정의합니다. * 배치
리소스를 사용하려면 ManagedClusterSet
리소스를 ManagedClusterSetBinding
리소스를 사용하여 배치
리소스의 네임스페이스에 바인딩해야 합니다. 자세한 내용은 Creating a ManagedClusterSetBinding 리소스 를 참조하십시오.
4.15.1.1. 명령줄 인터페이스에서 보안 정책 생성
CLI(명령줄 인터페이스)에서 정책을 생성하려면 다음 단계를 완료합니다.
다음 명령을 실행하여 정책을 생성합니다.
oc create -f policy.yaml -n <policy-namespace>
정책에서 사용하는 템플릿을 정의합니다. 템플릿을 정의하는
policy-templates
필드를 추가하여 YAML 파일을 편집합니다. 정책은 다음 YAML 파일과 유사할 수 있습니다.apiVersion: policy.open-cluster-management.io/v1 kind: Policy metadata: name: policy1 spec: remediationAction: "enforce" # or inform disabled: false # or true namespaceSelector: include: - "default" - "my-namespace" policy-templates: - objectDefinition: apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: operator # namespace: # will be supplied by the controller via the namespaceSelector spec: remediationAction: "inform" object-templates: - complianceType: "musthave" # at this level, it means the role must exist and must have the following rules apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: example objectDefinition: rules: - complianceType: "musthave" # at this level, it means if the role exists the rule is a musthave apiGroups: ["extensions", "apps"] resources: ["deployments"] verbs: ["get", "list", "watch", "create", "delete","patch"]
정책을 배치 리소스에 바인딩할
Placement
BindingPlacementBinding
리소스는 다음 YAML 샘플과 유사할 수 있습니다.apiVersion: policy.open-cluster-management.io/v1 kind: PlacementBinding metadata: name: binding1 placementRef: name: placement1 apiGroup: cluster.open-cluster-management.io kind: Placement subjects: - name: policy1 apiGroup: policy.open-cluster-management.io kind: Policy
4.15.1.1.1. CLI에서 보안 정책 보기
CLI에서 보안 정책을 보려면 다음 단계를 완료합니다.
다음 명령을 실행하여 특정 보안 정책에 대한 세부 정보를 확인합니다.
oc get policies.policy.open-cluster-management.io <policy-name> -n <policy-namespace> -o yaml
다음 명령을 실행하여 보안 정책에 대한 설명을 확인합니다.
oc describe policies.policy.open-cluster-management.io <policy-name> -n <policy-namespace>
4.15.1.2. 콘솔에서 클러스터 보안 정책 생성
Red Hat Advanced Cluster Management에 로그인한 후 Governance 페이지로 이동하여 Create policy 를 클릭합니다. 콘솔에서 새 정책을 생성하면 YAML 편집기에도 YAML 파일이 생성됩니다. YAML 편집기를 보려면 Create policy 양식 시작 시 토글을 선택하여 활성화합니다.
Create policy 양식을 작성한 다음 Submit (제출) 버튼을 선택합니다. YAML 파일은 다음 정책과 유사할 수 있습니다.
apiVersion: policy.open-cluster-management.io/v1 kind: Policy metadata: name: policy-pod annotations: policy.open-cluster-management.io/categories: 'SystemAndCommunicationsProtections,SystemAndInformationIntegrity' policy.open-cluster-management.io/controls: 'control example' policy.open-cluster-management.io/standards: 'NIST,HIPAA' policy.open-cluster-management.io/description: spec: complianceType: musthave namespaces: exclude: ["kube*"] include: ["default"] pruneObjectBehavior: None object-templates: - complianceType: musthave objectDefinition: apiVersion: v1 kind: Pod metadata: name: pod1 spec: containers: - name: pod-name image: 'pod-image' ports: - containerPort: 80 remediationAction: enforce disabled: false
다음
PlacementBinding
예제를 참조하십시오.apiVersion: policy.open-cluster-management.io/v1 kind: PlacementBinding metadata: name: binding-pod placementRef: name: placement-pod kind: Placement apiGroup: cluster.open-cluster-management.io subjects: - name: policy-pod kind: Policy apiGroup: policy.open-cluster-management.io
다음
배치
예제를 참조하십시오.apiVersion: cluster.open-cluster-management.io/v1beta1 kind: Placement metadata: name: placement-pod spec: predicates: - requiredClusterSelector: labelSelector: matchLabels: cloud: "IBM"
- 선택 사항: 정책에 대한 설명을 추가합니다.
- 정책 생성을 클릭합니다. 콘솔에서 보안 정책이 생성됩니다.
4.15.1.2.1. 콘솔에서 보안 정책 보기
콘솔에서 보안 정책 및 상태를 확인합니다.
- Governance 페이지로 이동하여 정책의 테이블 목록을 확인합니다. 참고: 정책 탭 또는 클러스터 위반 탭을 선택하여 정책의 테이블 목록을 필터링할 수 있습니다.
-
자세한 내용을 보려면 정책 중 하나를 선택합니다. 세부 정보 , 클러스터 및 템플릿 탭이 표시됩니다. 클러스터 또는 정책 상태를 확인할 수 없는 경우 다음 메시지가 표시됩니다.
상태가 없습니다
. - 또는 Policies 탭을 선택하여 정책 목록을 확인합니다. 정책 행을 확장하여 Description,Standards,Controls 및 Categories 세부 정보를 확인합니다.
4.15.1.3. CLI에서 정책 세트 생성
기본적으로 정책 세트는 정책 또는 배치 없이 생성됩니다. 정책 세트에 대한 배치를 생성하고 클러스터에 존재하는 정책이 하나 이상 있어야 합니다. 정책 세트를 만들 때 다양한 정책을 추가할 수 있습니다.
다음 명령을 실행하여 CLI에서 정책 세트를 생성합니다.
oc apply -f <policyset-filename>
4.15.1.4. 콘솔에서 정책 세트 생성
- 탐색 메뉴에서 Governance 를 선택합니다.
- 정책 세트 탭을 선택합니다.
- Create policy set 버튼을 선택하고 양식을 작성합니다.
- 정책 세트에 대한 세부 정보를 추가하고 Submit (제출) 버튼을 선택합니다.
정책 테이블에는 정책이 나열됩니다.
4.15.2. 보안 정책 업데이트
보안 정책을 업데이트하는 방법을 알아봅니다.
4.15.2.1. CLI에서 정책 세트에 정책 추가
다음 명령을 실행하여 정책 세트를 편집합니다.
oc edit policysets <your-policyset-name>
-
정책 세트의
policies
섹션에 정책 이름을 추가합니다. - 다음 명령을 사용하여 정책 세트의 placement 섹션에 추가된 정책을 적용합니다.
oc apply -f <your-added-policy.yaml>
배치 바인딩
및 배치
가 모두 생성됩니다.
참고: 배치 바인딩을 삭제하면 정책 세트에 의해 정책이 여전히 배치됩니다.
4.15.2.2. 콘솔에서 정책 세트에 정책 추가
- 정책 세트 탭을 선택하여 설정된 정책에 정책을 추가합니다.
- 작업 아이콘을 선택하고 편집을 선택합니다. Edit policy set form이 표시됩니다.
- 양식의 Policies 섹션으로 이동하여 정책 세트에 추가할 정책을 선택합니다.
4.15.2.3. 보안 정책 비활성화
정책은 기본적으로 활성화되어 있습니다. 콘솔에서 정책을 비활성화합니다.
Red Hat Advanced Cluster Management for Kubernetes 콘솔에 로그인한 후 Governance 페이지로 이동하여 정책 테이블 목록을 확인합니다.
작업 아이콘 > 정책 비활성화를 선택합니다. 정책 비활성화 대화 상자가 표시됩니다.
정책 비활성화 를 클릭합니다. 정책이 비활성화되어 있습니다.
4.15.3. 보안 정책 삭제
CLI 또는 콘솔에서 보안 정책을 삭제합니다.
CLI에서 보안 정책을 삭제합니다.
다음 명령을 실행하여 보안 정책을 삭제합니다.
oc delete policies.policy.open-cluster-management.io <policy-name> -n <policy-namespace>
정책이 삭제되면 대상 클러스터 또는 클러스터에서 제거됩니다. 다음 명령을 실행하여 정책이 제거되었는지 확인합니다.
oc get policies.open-cluster-management.io <policy-name> -n <policy-namespace
>
콘솔에서 보안 정책을 삭제합니다.
탐색 메뉴에서 Governance 를 클릭하여 정책의 테이블 목록을 확인합니다. 정책 위반 테이블에서 삭제할 정책의 작업 아이콘을 클릭합니다.
제거를 클릭합니다. 정책 제거 대화 상자에서 정책 제거를 클릭합니다.
4.15.3.1. 콘솔에서 정책 세트 삭제
- Policy sets 탭에서 정책 세트의 Actions 아이콘을 선택합니다. 삭제 를 클릭하면 정책 집합을 영구적으로 삭제하시겠습니까? 대화 상자가 표시됩니다.
- Delete 버튼을 클릭합니다.
4.15.4. 정책에 의해 생성된 리소스 정리
구성 정책에서 pruneObjectBehavior
매개변수를 사용하여 정책에서 생성한 리소스를 정리합니다. pruneObjectBehavior
가 설정되면 연결된 구성 정책(또는 상위 정책)이 삭제된 후에만 관련 오브젝트가 정리됩니다.
매개변수에 사용할 수 있는 값에 대한 다음 설명을 확인합니다.
-
DeleteIfCreated
: 정책에서 생성한 모든 리소스를 정리합니다. -
DeleteAll
: 정책에서 관리하는 모든 리소스를 정리합니다. -
none
: 이는 기본값이며 관련 리소스가 삭제되지 않은 이전 릴리스와 동일한 동작을 유지합니다.
명령줄에서 정책을 생성할 때 YAML 파일에서 직접 값을 설정할 수 있습니다.
콘솔에서 정책 템플릿 단계의 Prune Object Behavior 섹션에서 값을 선택할 수 있습니다.
참고:
-
Operator를 설치하는 정책에
pruneObjectBehavior
매개변수가 정의된 경우 Operator 제거를 완료하려면 추가 정리가 필요합니다. 이 정리의 일부로 OperatorClusterServiceVersion
오브젝트를 삭제해야 할 수 있습니다. -
관리 클러스터에서
config-policy-addon
리소스를 비활성화하면pruneObjbectBehavior
가 무시됩니다. 정책에서 관련 리소스를 자동으로 정리하려면 애드온을 비활성화하기 전에 관리 클러스터에서 정책을 제거해야 합니다.
4.15.5. 정책 명령줄 인터페이스
policytools
CLI(명령줄 인터페이스)를 사용하면 로컬에서 정책과 상호 작용하여 생성 및 디버깅을 지원할 수 있습니다.
template-resolver
template-resolver
는 정책에 포함된 관리 클러스터 및 허브 클러스터 템플릿을 확인하는policytools
의 하위 명령입니다.template-resolver
는 파일 또는 표준 입력에서 읽습니다.hub 클러스터 템플릿을 사용하여 정책을 해결하려면 Red Hat Advanced Cluster Management로 가져온 관리형 클러스터의 이름을
--cluster-name
인수를 제공해야 하며 hub 클러스터를 가리키는kubeconfig
파일의 경로를--hub-kubeconfig
인수를 제공해야 합니다.
policytools
CLI는 허브 클러스터 콘솔에서 다운로드할 수 있습니다. 명령줄 툴 을 참조하십시오.
4.15.6. 추가 리소스
- Hub 클러스터 정책 프레임워크 [Policy overview]에서 정책YAML 파일에 대한 자세한 설명을 확인하십시오.
- 유효한 표현식은 Kubernetes 설명서에서 세트 기반 요구 사항을 지원하는 리소스 를 참조하십시오.
-
배포를 위해
정책 생성기가 필요한 안정적인 정책 세트
보기, PolicySets- Stable. - 정책에 대한 자세한 내용은 Governance 를 참조하십시오.
4.15.7. 연결이 끊긴 환경에서 Operator 정책 관리
인터넷에 연결되지 않은 Red Hat OpenShift Container Platform 클러스터에 Red Hat Advanced Cluster Management for Kubernetes 정책을 배포해야 할 수 있습니다. Operator Lifecycle Manager Operator를 설치하는 정책을 배포하는 데 배포하는 정책을 사용하는 경우 Operator 카탈로그 미러링 절차를 따라야 합니다.
Operator 이미지에 대한 액세스 권한을 확인하려면 다음 단계를 완료합니다.
정책에 사용해야 하는 패키지를 사용할 수 있는지 확인하려면 필수 패키지를 사용할 수 있는지 확인하십시오. 다음 정책이 배포되는 관리 클러스터에서 사용하는 각 이미지 레지스트리의 가용성을 확인해야 합니다.
-
container-security-operator
-
deprecated:
gatekeeper-operator-product
-
compliance-operator
-
소스를 사용할 수 있는지 확인하려면 이미지 콘텐츠 소스 정책 구성을 참조하십시오. 이미지 콘텐츠 소스 정책은 연결이 끊긴 각 클러스터에 있어야 하며, 프로세스를 단순화하기 위해 정책을 사용하여 배포할 수 있습니다. 다음 이미지 소스 위치를 참조하십시오.
거버넌스 정책 유형 이미지 소스 위치 컨테이너 보안
registry.redhat.io/quay
컴플라이언스
registry.redhat.io/compliance
Gatekeeper
registry.redhat.io/rhacm2
4.15.8. 정책 세트를 사용하여 Red Hat OpenShift Platform Plus 설치
Red Hat Openshift Platform Plus 정책 세트를 적용하기 위한 지침을 계속 읽습니다. Red Hat OpenShift 정책 세트를 적용하면 Red Hat Advanced Cluster Security 보안 클러스터 서비스와 Compliance Operator가 모든 OpenShift Container Platform 관리 클러스터에 배포됩니다.
4.15.8.1. 사전 요구 사항
정책 세트를 적용하기 전에 다음 단계를 완료합니다.
서브스크립션을 클러스터에 적용할 수 있도록 하려면
policy-configure-subscription-admin-hub.yaml
정책을 적용하고 적용하도록 수정 작업을 설정해야 합니다.다음 YAML을 복사하여 콘솔의 YAML 편집기에 붙여넣습니다.
apiVersion: policy.open-cluster-management.io/v1 kind: Policy metadata: name: policy-configure-subscription-admin-hub annotations: policy.open-cluster-management.io/standards: NIST SP 800-53 policy.open-cluster-management.io/categories: CM Configuration Management policy.open-cluster-management.io/controls: CM-2 Baseline Configuration spec: remediationAction: inform disabled: false policy-templates: - objectDefinition: apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: policy-configure-subscription-admin-hub spec: remediationAction: inform severity: low object-templates: - complianceType: musthave objectDefinition: apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: open-cluster-management:subscription-admin rules: - apiGroups: - app.k8s.io resources: - applications verbs: - '*' - apiGroups: - apps.open-cluster-management.io resources: - '*' verbs: - '*' - apiGroups: - "" resources: - configmaps - secrets - namespaces verbs: - '*' - complianceType: musthave objectDefinition: apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: open-cluster-management:subscription-admin roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: open-cluster-management:subscription-admin subjects: - apiGroup: rbac.authorization.k8s.io kind: User name: kube:admin - apiGroup: rbac.authorization.k8s.io kind: User name: system:admin --- apiVersion: policy.open-cluster-management.io/v1 kind: PlacementBinding metadata: name: binding-policy-configure-subscription-admin-hub placementRef: name: placement-policy-configure-subscription-admin-hub kind: Placement apiGroup: cluster.open-cluster-management.io subjects: - name: policy-configure-subscription-admin-hub kind: Policy apiGroup: policy.open-cluster-management.io --- apiVersion: cluster.open-cluster-management.io/v1beta1 kind: Placement metadata: name: placement-policy-configure-subscription-admin-hub spec: predicates: - requiredClusterSelector: labelSelector: matchExpressions: - {key: name, operator: In, values: ["local-cluster"]}
명령줄 인터페이스에서 이전 YAML을 적용하려면 다음 명령을 실행합니다.
oc apply -f policy-configure-subscription-admin-hub.yaml
- Policy Generator kustomize 플러그인을 설치합니다. Kustomize v4.5 이상을 사용합니다. Operator를 설치하기 위한 정책 생성을 참조하십시오.
정책은
정책
네임스페이스에 설치됩니다. 해당 네임스페이스를ClusterSet
에 바인딩해야 합니다. 예를 들어 다음 예제 YAML을 복사하고 적용하여 네임스페이스를 기본ClusterSet
에 바인딩합니다.apiVersion: cluster.open-cluster-management.io/v1beta2 kind: ManagedClusterSetBinding metadata: name: default namespace: policies spec: clusterSet: default
다음 명령을 실행하여 명령줄 인터페이스에서
ManagedClusterSetBinding
리소스를 적용합니다.oc apply -f managed-cluster.yaml
사전 요구 사항을 충족한 후 정책 세트를 적용할 수 있습니다.
4.15.8.2. Red Hat OpenShift Platform Plus 정책 세트 적용
-
Red Hat OpenShift Plus에 대한 사전 요구 사항 구성이 포함된
openshift-plus/policyGenerator.yaml
파일을 사용합니다.openshift-plus/policyGenerator.yaml
을 참조하십시오. kustomize
명령을 사용하여 허브 클러스터에 정책을 적용합니다.kustomize build --enable-alpha-plugins | oc apply -f -
참고: 설치하지 않으려는 OpenShift Platform Plus의 구성 요소의 경우
policyGenerator.yaml
파일을 편집하고 해당 구성 요소의 정책을 제거하거나 주석 처리합니다.
4.15.8.3. 추가 리소스
- 정책 세트에 대한 개요는 Red Hat OpenShift Platform Plus 정책 세트를 참조하십시오.
- 주제 시작으로 돌아가기, 정책 세트를 사용하여 Red Hat OpenShift Platform Plus 설치
4.15.9. OperatorPolicy 리소스를 사용하여 Operator 설치
관리 클러스터에 OLM(Operator Lifecycle Manager) 관리형 Operator를 설치하려면 정책 정의에서 Operator
정책 템플릿을 사용합니다.
Policy
4.15.9.1. Quay를 설치할 OperatorPolicy 리소스 생성
Red Hat Operator 카탈로그를 사용하여 stable-3.11
채널에 최신 Quay Operator를 설치하는 다음 operator 정책 샘플을 참조하십시오.
apiVersion: policy.open-cluster-management.io/v1 kind: Policy metadata: name: install-quay namespace: open-cluster-management-global-set spec: disabled: false policy-templates: - objectDefinition: apiVersion: policy.open-cluster-management.io/v1beta1 kind: OperatorPolicy metadata: name: install-quay spec: remediationAction: enforce severity: critical complianceType: musthave upgradeApproval: None subscription: channel: stable-3.11 name: quay-operator source: redhat-operators sourceNamespace: openshift-marketplace
OperatorPolicy
정책 템플릿을 추가하면 컨트롤러를 사용하여 operatorGroup
및 서브스크립션
오브젝트가 클러스터에 생성됩니다. 결과적으로 OLM에서 나머지 설치를 완료합니다. 관리 클러스터의 OperatorPolicy
리소스의 .status.Conditions
및 .status.relatedObjects
필드에서 보유 리소스의 상태를 볼 수 있습니다.
Operator 정책 상태를 확인하려면 관리 클러스터에서 다음 명령을 실행합니다.
oc -n <managed cluster namespace> get operatorpolicy install-quay