4.15. 보안 정책 관리


지정된 보안 표준, 카테고리 및 제어에 따라 클러스터 규정 준수를 보고하고 검증하는 보안 정책을 만듭니다.

다음 섹션을 확인합니다.

4.15.1. 보안 정책 생성

CLI(명령줄 인터페이스) 또는 콘솔에서 보안 정책을 생성할 수 있습니다.

필수 액세스: 클러스터 관리자

중요: * 특정 클러스터에 정책을 적용하려면 배치 및 배치 바인딩을 정의해야 합니다. placement Binding 리소스는 배치를 바인딩합니다. 클러스터 라벨 선택기 필드에 유효한 값을 입력하여 PlacementPlacementBinding 리소스를 정의합니다. * 배치 리소스를 사용하려면 ManagedClusterSet 리소스를 ManagedClusterSetBinding 리소스를 사용하여 배치 리소스의 네임스페이스에 바인딩해야 합니다. 자세한 내용은 Creating a ManagedClusterSetBinding 리소스 를 참조하십시오.

4.15.1.1. 명령줄 인터페이스에서 보안 정책 생성

CLI(명령줄 인터페이스)에서 정책을 생성하려면 다음 단계를 완료합니다.

  1. 다음 명령을 실행하여 정책을 생성합니다.

    oc create -f policy.yaml -n <policy-namespace>
  2. 정책에서 사용하는 템플릿을 정의합니다. 템플릿을 정의하는 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"]
  3. 정책을 배치 리소스에 바인딩할 Placement Binding 리소스를 정의합니다. PlacementBinding 리소스는 다음 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에서 보안 정책을 보려면 다음 단계를 완료합니다.

  1. 다음 명령을 실행하여 특정 보안 정책에 대한 세부 정보를 확인합니다.

    oc get policies.policy.open-cluster-management.io <policy-name> -n <policy-namespace> -o yaml
  2. 다음 명령을 실행하여 보안 정책에 대한 설명을 확인합니다.

    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 양식 시작 시 토글을 선택하여 활성화합니다.

  1. 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"
  2. 선택 사항: 정책에 대한 설명을 추가합니다.
  3. 정책 생성을 클릭합니다. 콘솔에서 보안 정책이 생성됩니다.
4.15.1.2.1. 콘솔에서 보안 정책 보기

콘솔에서 보안 정책 및 상태를 확인합니다.

  1. Governance 페이지로 이동하여 정책의 테이블 목록을 확인합니다. 참고: 정책 탭 또는 클러스터 위반 탭을 선택하여 정책의 테이블 목록을 필터링할 수 있습니다.
  2. 자세한 내용을 보려면 정책 중 하나를 선택합니다. 세부 정보 , 클러스터템플릿 탭이 표시됩니다. 클러스터 또는 정책 상태를 확인할 수 없는 경우 다음 메시지가 표시됩니다. 상태가 없습니다.
  3. 또는 Policies 탭을 선택하여 정책 목록을 확인합니다. 정책 행을 확장하여 Description,Standards,ControlsCategories 세부 정보를 확인합니다.

4.15.1.3. CLI에서 정책 세트 생성

기본적으로 정책 세트는 정책 또는 배치 없이 생성됩니다. 정책 세트에 대한 배치를 생성하고 클러스터에 존재하는 정책이 하나 이상 있어야 합니다. 정책 세트를 만들 때 다양한 정책을 추가할 수 있습니다.

다음 명령을 실행하여 CLI에서 정책 세트를 생성합니다.

oc apply -f <policyset-filename>

4.15.1.4. 콘솔에서 정책 세트 생성

  1. 탐색 메뉴에서 Governance 를 선택합니다.
  2. 정책 세트 탭을 선택합니다.
  3. Create policy set 버튼을 선택하고 양식을 작성합니다.
  4. 정책 세트에 대한 세부 정보를 추가하고 Submit (제출) 버튼을 선택합니다.

정책 테이블에는 정책이 나열됩니다.

4.15.2. 보안 정책 업데이트

보안 정책을 업데이트하는 방법을 알아봅니다.

4.15.2.1. CLI에서 정책 세트에 정책 추가

  1. 다음 명령을 실행하여 정책 세트를 편집합니다.

    oc edit policysets <your-policyset-name>
  2. 정책 세트의 policies 섹션에 정책 이름을 추가합니다.
  3. 다음 명령을 사용하여 정책 세트의 placement 섹션에 추가된 정책을 적용합니다.
oc apply -f <your-added-policy.yaml>

배치 바인딩배치 가 모두 생성됩니다.

참고: 배치 바인딩을 삭제하면 정책 세트에 의해 정책이 여전히 배치됩니다.

4.15.2.2. 콘솔에서 정책 세트에 정책 추가

  1. 정책 세트 탭을 선택하여 설정된 정책에 정책을 추가합니다.
  2. 작업 아이콘을 선택하고 편집을 선택합니다. Edit policy set form이 표시됩니다.
  3. 양식의 Policies 섹션으로 이동하여 정책 세트에 추가할 정책을 선택합니다.

4.15.2.3. 보안 정책 비활성화

정책은 기본적으로 활성화되어 있습니다. 콘솔에서 정책을 비활성화합니다.

Red Hat Advanced Cluster Management for Kubernetes 콘솔에 로그인한 후 Governance 페이지로 이동하여 정책 테이블 목록을 확인합니다.

작업 아이콘 > 정책 비활성화를 선택합니다. 정책 비활성화 대화 상자가 표시됩니다.

정책 비활성화 를 클릭합니다. 정책이 비활성화되어 있습니다.

4.15.3. 보안 정책 삭제

CLI 또는 콘솔에서 보안 정책을 삭제합니다.

  • CLI에서 보안 정책을 삭제합니다.

    1. 다음 명령을 실행하여 보안 정책을 삭제합니다.

      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. 콘솔에서 정책 세트 삭제

  1. Policy sets 탭에서 정책 세트의 Actions 아이콘을 선택합니다. 삭제 를 클릭하면 정책 집합을 영구적으로 삭제하시겠습니까? 대화 상자가 표시됩니다.
  2. Delete 버튼을 클릭합니다.

4.15.4. 정책에 의해 생성된 리소스 정리

구성 정책에서 pruneObjectBehavior 매개변수를 사용하여 정책에서 생성한 리소스를 정리합니다. pruneObjectBehavior 가 설정되면 연결된 구성 정책(또는 상위 정책)이 삭제된 후에만 관련 오브젝트가 정리됩니다.

매개변수에 사용할 수 있는 값에 대한 다음 설명을 확인합니다.

  • DeleteIfCreated: 정책에서 생성한 모든 리소스를 정리합니다.
  • DeleteAll: 정책에서 관리하는 모든 리소스를 정리합니다.
  • none: 이는 기본값이며 관련 리소스가 삭제되지 않은 이전 릴리스와 동일한 동작을 유지합니다.

명령줄에서 정책을 생성할 때 YAML 파일에서 직접 값을 설정할 수 있습니다.

콘솔에서 정책 템플릿 단계의 Prune Object Behavior 섹션에서 값을 선택할 수 있습니다.

참고:

  • Operator를 설치하는 정책에 pruneObjectBehavior 매개변수가 정의된 경우 Operator 제거를 완료하려면 추가 정리가 필요합니다. 이 정리의 일부로 Operator ClusterServiceVersion 오브젝트를 삭제해야 할 수 있습니다.
  • 관리 클러스터에서 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. 추가 리소스

4.15.7. 연결이 끊긴 환경에서 Operator 정책 관리

인터넷에 연결되지 않은 Red Hat OpenShift Container Platform 클러스터에 Red Hat Advanced Cluster Management for Kubernetes 정책을 배포해야 할 수 있습니다. Operator Lifecycle Manager Operator를 설치하는 정책을 배포하는 데 배포하는 정책을 사용하는 경우 Operator 카탈로그 미러링 절차를 따라야 합니다.

Operator 이미지에 대한 액세스 권한을 확인하려면 다음 단계를 완료합니다.

  1. 정책에 사용해야 하는 패키지를 사용할 수 있는지 확인하려면 필수 패키지를 사용할 수 있는지 확인하십시오. 다음 정책이 배포되는 관리 클러스터에서 사용하는 각 이미지 레지스트리의 가용성을 확인해야 합니다.

    • container-security-operator
    • deprecated: gatekeeper-operator-product
    • compliance-operator
  2. 소스를 사용할 수 있는지 확인하려면 이미지 콘텐츠 소스 정책 구성을 참조하십시오. 이미지 콘텐츠 소스 정책은 연결이 끊긴 각 클러스터에 있어야 하며, 프로세스를 단순화하기 위해 정책을 사용하여 배포할 수 있습니다. 다음 이미지 소스 위치를 참조하십시오.

    거버넌스 정책 유형이미지 소스 위치

    컨테이너 보안

    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. 사전 요구 사항

정책 세트를 적용하기 전에 다음 단계를 완료합니다.

  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"]}
  2. 명령줄 인터페이스에서 이전 YAML을 적용하려면 다음 명령을 실행합니다.

    oc apply -f policy-configure-subscription-admin-hub.yaml
  3. Policy Generator kustomize 플러그인을 설치합니다. Kustomize v4.5 이상을 사용합니다. Operator를 설치하기 위한 정책 생성을 참조하십시오.
  4. 정책은 정책 네임스페이스에 설치됩니다. 해당 네임스페이스를 ClusterSet 에 바인딩해야 합니다. 예를 들어 다음 예제 YAML을 복사하고 적용하여 네임스페이스를 기본 ClusterSet 에 바인딩합니다.

    apiVersion: cluster.open-cluster-management.io/v1beta2
    kind: ManagedClusterSetBinding
    metadata:
        name: default
        namespace: policies
    spec:
        clusterSet: default
  5. 다음 명령을 실행하여 명령줄 인터페이스에서 ManagedClusterSetBinding 리소스를 적용합니다.

    oc apply -f managed-cluster.yaml

사전 요구 사항을 충족한 후 정책 세트를 적용할 수 있습니다.

4.15.8.2. Red Hat OpenShift Platform Plus 정책 세트 적용

  1. Red Hat OpenShift Plus에 대한 사전 요구 사항 구성이 포함된 openshift-plus/policyGenerator.yaml 파일을 사용합니다. openshift-plus/policyGenerator.yaml 을 참조하십시오.
  2. kustomize 명령을 사용하여 허브 클러스터에 정책을 적용합니다.

    kustomize build --enable-alpha-plugins  | oc apply -f -

    참고: 설치하지 않으려는 OpenShift Platform Plus의 구성 요소의 경우 policyGenerator.yaml 파일을 편집하고 해당 구성 요소의 정책을 제거하거나 주석 처리합니다.

4.15.8.3. 추가 리소스

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

4.15.9.2. 추가 리소스

Operator 정책 컨트롤러참조

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.