2.6. 보안 정책 관리
거버넌스 대시보드를 사용하여 보안 정책 및 정책 위반을 생성, 보기 및 관리할 수 있습니다. CLI 및 콘솔에서 정책에 대한 YAML 파일을 생성할 수 있습니다.
2.6.1. 거버넌스 페이지
관리 페이지에 다음 탭이 표시됩니다.
개요
개요 탭에서 다음 요약 카드를 확인하십시오. 정책 위반,정책 위반 ,클러스터,카테고리,제어 및 표준.
정책 세트
허브 클러스터 정책 세트를 만들고 관리합니다.
Policies
보안 정책을 생성하고 관리합니다. 정책 표에는 이름,네임스페이스,상태 관리,정책 세트,클러스터 위반,소스,자동화 및 생성 이라는 세부 정보가 나열됩니다. 정책 행을 확장하면 Description,Standards,Controls, Categories 가 표시됩니다.
Actions 아이콘을 선택하여 정책을 알리거나 적용하도록 수정을 편집, 활성화 또는 비활성화, 설정 또는 설정할 수 있습니다. 드롭다운 화살표를 선택하여 행을 확장하여 특정 정책의 카테고리 및 표준을 볼 수 있습니다.
여러 정책을 선택하고 Actions 버튼을 클릭하여 대규모 작업을 완료합니다. 필터 버튼을 클릭하여 정책 테이블을 사용자 지정할 수도 있습니다.
테이블 목록에서 정책을 선택하면 콘솔에서 다음 정보 탭이 표시됩니다.
- 세부 정보: 세부 정보 탭을 선택하여 정책 세부 정보와 배치 세부 정보를 확인합니다. 배치 테이블의 Compliance 열은 표시되는 클러스터의 규정 준수를 확인하는 링크를 제공합니다.
결과 탭을 선택하여 정책과 연결된 모든 클러스터의 테이블 목록을 확인합니다.
Message 열에서 View details 링크를 클릭하여 템플릿 세부 정보, 템플릿 YAML 및 관련 리소스를 확인합니다. 관련 리소스도 볼 수 있습니다. 기록 보기 링크를 클릭하여 위반 메시지와 마지막 보고서의 시간을 확인합니다.
2.6.2. 거버넌스 자동화 구성
특정 정책에 대한 자동화가 구성된 경우 자동화를 선택하여 자세한 정보를 볼 수 있습니다. 자동화를 위한 일정 빈도 옵션에 대한 다음 설명을 확인합니다.
-
수동 실행: 이 자동화를 수동으로 한 번 실행하도록 설정합니다. 자동화가 실행된 후
비활성화
됨으로 설정됩니다. 참고: 일정 빈도가 비활성화된 경우에만 수동 실행 모드를 선택할 수 있습니다. -
한 번 실행: 정책이 위반되면 자동화가 한 번 실행됩니다. 자동화가 실행된 후
비활성화
됨으로 설정됩니다. 자동화가disabled
로 설정된 후 자동화를 수동으로 계속 실행해야 합니다. 한 번 모드를 실행하면 정책을 위반하는 클러스터 목록과target_cluster
의 추가 변수가 자동으로 제공됩니다. Ansible Automation Platform 작업 템플릿에는EXTRA VARIABLES
섹션(extra_vars
라고도 함)에 대해 PROMPT ON
3-4이 활성화되어 있어야 합니다. -
everyEvent 모드 실행: 정책이 위반되면 관리 클러스터당 고유한 정책 위반마다 자동화가 항상 실행됩니다. 동일한 클러스터에서 자동화를 다시 시작하기 전에
DelayAfterRunSeconds
매개변수를 사용하여 최소 초를 설정합니다. 정책이 지연 기간 동안 여러 번 위반되고 위반된 상태에 유지되는 경우 자동화는 지연 기간 후 한 번 실행됩니다. 기본값은 0초이며everyEvent
모드에만 적용할 수 있습니다.everyEvent
모드를 실행하면target_clusters
및 Ansible Automation Platform 작업 템플릿의 추가 변수가 once 모드와 동일합니다. -
자동 비활성화: 예약된 자동화가
비활성화
됨으로 설정되면 설정이 업데이트될 때까지 자동화가 실행되지 않습니다.
다음 변수는 Ansible Automation Platform 작업의 extra_vars
에 자동으로 제공됩니다.
-
policy_name
: hub 클러스터에서 Ansible Automation Platform 작업을 시작하는 비호환 루트 정책의 이름입니다. -
policy_namespace
: 루트 정책의 네임스페이스입니다. -
hub_cluster
: 클러스터DNS
오브젝트의 값에 따라 결정되는 허브클러스터
의 이름입니다. -
policy_sets
: 이 매개 변수에는 연결된 모든 정책 세트 이름이 포함되어 있습니다. 정책이 정책 세트에 없으면policy_set
매개변수가 비어 있습니다. -
policy_violations
: 이 매개변수에는 비호환 클러스터 이름 목록이 포함되어 있으며 값은 호환되지 않는 각 클러스터의 정책상태
필드입니다.
다음 주제를 검토하여 보안 정책 생성 및 업데이트에 대해 자세히 알아보십시오.
2.6.3. 거버넌스를 위한 Ansible Automation Platform 구성
Red Hat Advanced Cluster Management for Kubernetes 거버넌스를 Red Hat Ansible Automation Platform과 통합하여 정책 위반 자동화를 생성할 수 있습니다. Red Hat Advanced Cluster Management 콘솔에서 자동화를 구성할 수 있습니다.
2.6.3.1. 사전 요구 사항
- Red Hat OpenShift Container Platform 4.5 이상
- Ansible Automation Platform 버전 3.7.3 또는 이후 버전이 설치되어 있어야 합니다. 지원되는 최신 Ansible Automation Platform 버전을 설치하는 것이 좋습니다. 자세한 내용은 Red Hat Ansible Automation Platform 설명서 를 참조하십시오.
Operator Lifecycle Manager에서 Ansible Automation Platform Resource Operator를 설치합니다. Update Channel 섹션에서
stable-2.x-cluster-scoped
를 선택합니다. All namespaces on the cluster (default) installation mode를 선택합니다.참고: 실행할 때 Ansible Automation Platform 작업 템플릿이 멱등인지 확인합니다. Ansible Automation Platform Resource Operator가 없는 경우 Red Hat OpenShift Container Platform OperatorHub 페이지에서 확인할 수 있습니다.
Red Hat Ansible Automation Platform 설치 및 구성에 대한 자세한 내용은 Ansible 작업 설정을 참조하십시오.
2.6.3.2. 콘솔에서 정책 위반 자동화 생성
Red Hat Advanced Cluster Management hub 클러스터에 로그인한 후 탐색 메뉴에서 Governance 를 선택한 다음 정책 탭을 클릭하여 정책 테이블을 확인합니다.
자동화 열에서 구성을 클릭하여 특정 정책에 대한 자동화 를 구성합니다. 정책 자동화 패널이 표시되면 자동화를 생성할 수 있습니다. Ansible 자격 증명 섹션에서 드롭다운 메뉴를 클릭하여 Ansible 자격 증명을 선택합니다. 인증 정보를 추가해야 하는 경우 인증 정보 관리 개요 를 참조하십시오.
참고: 이 인증 정보는 정책과 동일한 네임스페이스에 복사됩니다. 인증 정보는 생성된 AnsibleJob
리소스에서 자동화를 시작하는 데 사용됩니다. 콘솔의 인증 정보 섹션에서 Ansible 자격 증명 변경 사항이 자동으로 업데이트됩니다.
인증 정보를 선택한 후 Ansible 작업 드롭다운 목록을 클릭하여 작업 템플릿을 선택합니다. Extra variables 섹션에서 PolicyAutomation
의 extra_vars
섹션에 있는 매개변수 값을 추가합니다. 자동화의 빈도를 선택합니다. 한 번 실행 모드,모든 이벤트 모드 실행 또는 자동화 비활성화 를 선택할 수 있습니다.
Submit 을 선택하여 정책 위반 자동화를 저장합니다. Ansible 작업 세부 정보 측면 패널에서 작업 보기 링크를 선택하면 링크는 Search 페이지의 작업 템플릿으로 이동합니다. 자동화를 성공적으로 생성하면 Automation 열에 표시됩니다.
참고: 관련 정책 자동화가 있는 정책을 삭제하면 정리의 일부로 정책 자동화가 자동으로 삭제됩니다.
콘솔에서 정책 위반 자동화가 생성됩니다.
2.6.3.3. CLI에서 정책 위반 자동화 생성
CLI에서 정책 위반 자동화를 구성하려면 다음 단계를 완료합니다.
-
터미널에서
oc login
명령을 사용하여 Red Hat Advanced Cluster Management hub 클러스터에 로그인합니다. - 자동화를 추가할 정책을 찾아 생성합니다. 정책 이름과 네임스페이스를 확인합니다.
다음 샘플을 가이드로 사용하여
PolicyAutomation
리소스를 생성합니다.apiVersion: policy.open-cluster-management.io/v1beta1 kind: PolicyAutomation metadata: name: policyname-policy-automation spec: automationDef: extra_vars: your_var: your_value name: Policy Compliance Template secret: ansible-tower type: AnsibleJob mode: disabled policyRef: policyname
-
이전 샘플의 Automation 템플릿 이름은
Policy Compliance Template
입니다. 작업 템플릿 이름과 일치하도록 해당 값을 변경합니다. -
extra_vars
섹션에서 자동화 템플릿에 전달하는 데 필요한 매개변수를 추가합니다. -
모드를 한
번
,everyEvent
또는disabled
로 설정합니다. -
policyRef
를 정책 이름으로 설정합니다. -
Ansible Automation Platform 인증 정보가 포함된 이
PolicyAutomation
리소스와 동일한 네임스페이스에 보안을 생성합니다. 이전 예에서 시크릿 이름은ansible-tower
입니다. 애플리케이션 라이프사이클의 샘플을 사용하여 시크릿을 생성하는 방법을 확인합니다. PolicyAutomation
리소스를 생성합니다.참고:
PolicyAutomation
리소스에 다음 주석을 추가하여 정책 자동화의 즉각적인 실행을 시작할 수 있습니다.metadata: annotations: policy.open-cluster-management.io/rerun: "true"
-
정책이
once
모드이면 정책을 준수하지 않는 경우 자동화가 실행됩니다.target_clusters
라는extra_vars
변수가 추가되고 값은 정책이 호환되지 않는 각 관리형 클러스터 이름의 배열입니다. -
정책이
everyEvent
모드에 있고DelayAfterRunSeconds
가 정의된 시간 값을 초과하면 정책이 준수하지 않으며 모든 정책 위반에 대한 자동화가 실행됩니다.
2.6.4. GitOps를 사용하여 정책 배포
거버넌스 프레임워크를 사용하여 여러 관리 클러스터에 일련의 정책을 배포할 수 있습니다. 리포지토리의 정책에 기여하고 사용하여 오픈 소스 커뮤니티에 정책 수집
할 수 있습니다. 오픈 소스 커뮤니티의 안정
및 커뮤니티
폴더의 각각의 정책은 NIST 특수한 800-53에 따라 추가로 구성됩니다.
GitOps를 사용하는 모범 사례를 계속 읽고 Git 리포지토리를 통해 정책 업데이트 및 생성을 자동화하고 추적합니다.
사전 요구 사항: 시작하기 전에 정책 수집
리포지토리를 분기해야 합니다.
2.6.4.1. 로컬 리포지토리 사용자 정의
안정적인
및 커뮤니티
정책을 단일 폴더에 통합하여 로컬 리포지토리를 사용자 정의합니다. 사용하지 않으려는 정책을 제거합니다. 로컬 리포지토리를 사용자 지정하려면 다음 단계를 완료합니다.
리포지토리에 배포하려는 정책을 유지하기 위해 새 디렉터리를 생성합니다. GitOps의 기본 기본 분기의 로컬
정책 수집
리포지토리에 있는지 확인합니다. 다음 명령을 실행합니다.mkdir my-policies
모든
안정
및커뮤니티
정책을my-policies
디렉터리에 복사합니다. 먼저커뮤니티
정책부터stable
폴더에 커뮤니티에서 사용할 수 있는 항목이 중복되는 경우부터 시작합니다. 다음 명령을 실행합니다.cp -R community/* my-policies/ cp -R stable/* my-policies/
이제 단일 상위 디렉터리 구조에 모든 정책이 있으므로 포크의 정책을 편집할 수 있습니다.
팁:
- 사용하지 않으려는 정책을 제거하는 것이 좋습니다.
다음 목록에서 정책 및 정책 정의에 대해 알아보십시오.
- 목적: 정책이 수행하는 작업을 파악합니다.
수정 작업: 정책은 규정 준수를 사용자에게만 알리거나 정책을 적용하고 변경합니까?
spec.remediationAction
매개변수를 참조하십시오. 변경 사항이 적용되는 경우 기능적 기대치를 이해해야 합니다. 어떤 정책이 시행을 지원하는지 확인하십시오. 자세한 내용은 Validate 섹션을 참조하십시오.참고: 정책에 대해 설정된
spec.remediationAction
은 개별spec.policy-templates
에 설정된 모든 수정 작업을 덮어씁니다.-
배치: 정책이 배포되는 클러스터는 무엇입니까? 기본적으로 대부분의 정책은
environment: dev
레이블을 사용하여 클러스터를 대상으로 합니다. 일부 정책은 OpenShift Container Platform 클러스터 또는 다른 레이블을 대상으로 할 수 있습니다. 다른 클러스터를 포함하도록 라벨을 업데이트하거나 추가할 수 있습니다. 특정 값이 없는 경우 정책이 모든 클러스터에 적용됩니다. 하나의 클러스터 세트에 대해 한 가지 방식으로 구성된 정책을 사용하고 다른 클러스터 세트에 대해 다른 방식으로 구성하려는 경우 정책 복사본을 여러 개 생성하고 각 사본을 사용자 지정할 수도 있습니다.
2.6.4.2. 로컬 리포지토리에 커밋
디렉터리에 대한 변경 사항을 충족한 후 클러스터에서 액세스할 수 있도록 변경 사항을 커밋 및 내보냅니다.
참고: 이 예제는 GitOps에서 정책을 사용하는 방법에 대한 기본을 표시하는 데 사용되므로 분기를 변경할 수 있는 다른 워크플로우가 있을 수 있습니다.
다음 단계를 완료합니다.
터미널에서
git status
를 실행하여 이전에 생성한 디렉터리의 최근 변경 사항을 확인합니다. 다음 명령을 사용하여 커밋할 변경 사항 목록에 새 디렉터리를 추가합니다.git add my-policies/
변경 사항을 커밋하고 메시지를 사용자 지정합니다. 다음 명령을 실행합니다.
git commit -m “Policies to deploy to the hub cluster”
GitOps에 사용되는 분기된 리포지토리 분기로 변경 사항을 내보냅니다. 다음 명령을 실행합니다.
git push origin <your_default_branch>master
변경 사항이 커밋됩니다.
2.6.4.3. 클러스터에 정책 배포
변경 사항을 푸시한 후 Kubernetes용 Red Hat Advanced Cluster Management에 정책을 배포할 수 있습니다. 배포 후 hub 클러스터가 Git 리포지토리에 연결되어 있습니다. Git 리포지토리의 선택한 분기에 대한 추가 변경 사항은 클러스터에 반영됩니다.
참고: 기본적으로 GitOps와 함께 배포된 정책은 병합
조정 옵션을 사용합니다. 대신 교체
조정 옵션을 사용하려면 apps.open-cluster-management.io/reconcile-option: 주석을
Subscription
리소스에 바꾸고apps.open-cluster-management.io/reconcile-option: merge
를 추가합니다. 서브스크립션
이 다음 파일과 유사할 수 있습니다.
apiVersion: apps.open-cluster-management.io/v1 kind: Subscription metadata: name: subscription-example namespace: sub-ns annotations: apps.open-cluster-management.io/git-path: sample-resources apps.open-cluster-management.io/reconcile-option: replace spec: ...
deploy.sh
스크립트는 허브 클러스터에 채널
및 서브스크립션
리소스를 생성합니다. 채널은 Git 리포지토리에 연결되고 서브스크립션은 채널을 통해 클러스터에 가져올 데이터를 지정합니다. 결과적으로 지정된 하위 디렉터리에 정의된 모든 정책이 허브에 생성됩니다. 서브스크립션을 통해 정책을 생성한 후 Red Hat Advanced Cluster Management는 정책을 분석하고 정의된 배치 규칙에 따라 정책이 적용되는 각 관리 대상 클러스터와 연결된 네임스페이스에 추가 정책 리소스를 생성합니다.
그런 다음 이 정책은 hub 클러스터의 해당 관리 클러스터 네임스페이스에서 관리 클러스터에 복사됩니다. 결과적으로 Git 리포지토리의 정책은 정책의 배치 규칙에 정의된 clusterSelector
와 일치하는 라벨이 있는 모든 관리 클러스터로 푸시됩니다.
다음 단계를 완료합니다.
policy-collection
디렉토리에서 다음 명령을 실행하여 디렉터리를 변경합니다.cd deploy
다음 명령을 사용하여 올바른 클러스터에 리소스를 생성하도록 CLI(명령줄 인터페이스)가 구성되어 있는지 확인합니다.
oc cluster-info
명령 출력은 Red Hat Advanced Cluster Management가 설치된 클러스터의 API 서버 세부 정보를 표시합니다. 올바른 URL이 표시되지 않으면 올바른 클러스터를 가리키도록 CLI를 구성합니다. 자세한 내용은 추가 리소스 섹션에서 OpenShift CLI 사용을 참조하십시오.
정책을 생성하여 액세스를 제어하고 정책을 구성합니다. 다음 명령을 실행합니다.
oc create namespace policy-namespace
다음 명령을 실행하여 클러스터에 정책을 배포합니다.
./deploy.sh -u https://github.com/<your-repository>/policy-collection -p my-policies -n policy-namespace
your-repository
를 Git 사용자 이름 또는 리포지토리 이름으로 바꿉니다.참고: 참조를 위해
deploy.sh
스크립트의 전체 인수 목록은 다음 구문을 사용합니다../deploy.sh [-u <url>] [-b <branch>] [-p <path/to/dir>] [-n <namespace>] [-a|--name <resource-name>]
각 인수에 대한 다음 설명을 확인합니다.
-
URL: 기본
정책 수집
리포지토리에서 분기한 리포지토리의 URL입니다. 기본 URL은https://github.com/stolostron/policy-collection.git
입니다. -
분기: 을 가리키는 Git 리포지토리의 분기입니다. 기본 분기는
main
입니다. -
하위 디렉터리 경로: 사용하려는 정책을 포함하도록 생성한 하위 디렉터리 경로입니다. 이전 샘플에서는
my-policies
하위 디렉터리를 사용했지만 시작할 폴더를 지정할 수도 있습니다. 예를 들어my-policies/AC-Access-Control
을 사용할 수 있습니다. 기본 폴더는stable
입니다. -
namespace: 허브 클러스터에서 리소스 및 정책이 생성되는 네임스페이스입니다. 이 명령은
policy-namespace
네임스페이스를 사용합니다. 기본 네임스페이스는 policy입니다
. -
이름 접두사:
채널
및서브스크립션
리소스의 접두사입니다. 기본값은demo-stable-policies
입니다.
-
URL: 기본
deploy.sh
스크립트를 실행하면 리포지토리에 액세스할 수 있는 모든 사용자가 분기에 대한 변경 사항을 커밋할 수 있으므로 클러스터의 기존 정책으로 변경 사항이 푸시됩니다.
참고: 서브스크립션을 사용하여 정책을 배포하려면 다음 단계를 완료하십시오.
-
open-cluster-management:subscription-admin
ClusterRole을 서브스크립션을 생성한 사용자에게 바인딩합니다. 서브스크립션에서 허용 목록을 사용하는 경우 다음 API 항목을 포함합니다.
- apiVersion: policy.open-cluster-management.io/v1 kinds: - "*" - apiVersion: policy.open-cluster-management.io/v1beta1 kinds: - "*" - apiVersion: apps.open-cluster-management.io/v1 kinds: - PlacementRule # deprecated - apiVersion: cluster.open-cluster-management.io/v1beta1 kinds: - Placement
2.6.4.4. 콘솔에서 GitOps 정책 배포 확인
콘솔에서 변경 사항이 정책에 적용되었는지 확인합니다. 콘솔에서 정책을 추가로 변경할 수도 있지만 서브스크립션
이 Git 리포지토리로 조정되면 변경 사항이 되돌아갑니다. 다음 단계를 완료합니다.
- Red Hat Advanced Cluster Management 클러스터에 로그인합니다.
- 탐색 메뉴에서 Governance 를 선택합니다.
- 표에 배포한 정책을 찾습니다. GitOps를 사용하여 배포되는 정책에는 소스 열에 Git 레이블이 있습니다. 레이블을 클릭하여 Git 리포지토리의 세부 정보를 확인합니다.
2.6.4.4.1. CLI에서 GitOps 정책 배포 확인
다음 단계를 완료합니다.
다음 정책 세부 정보를 확인합니다.
- 배포된 클러스터에 대한 특정 정책을 준수하거나 비준수하는 이유는 무엇입니까?
- 올바른 클러스터에 정책이 적용됩니까?
- 이 정책이 클러스터에 배포되지 않은 경우 이유는 무엇입니까?
생성하거나 수정한 GitOps 배포 정책을 식별합니다. GitOps 배포된 정책은 자동으로 적용되는 주석으로 식별할 수 있습니다. GitOps 배포 정책에 대한 주석은 다음 경로와 유사합니다.
apps.open-cluster-management.io/hosting-deployable: policies/deploy-stable-policies-Policy-policy-role9 apps.open-cluster-management.io/hosting-subscription: policies/demo-policies apps.open-cluster-management.io/sync-source: subgbk8s-policies/demo-policies
GitOps 주석은 정책을 생성한 서브스크립션을 확인하는 데 유용합니다. 레이블을 기반으로 정책을 선택하는 런타임 쿼리를 작성할 수 있도록 정책에 고유한 레이블을 추가할 수도 있습니다.
예를 들어 다음 명령을 사용하여 정책에 라벨을 추가할 수 있습니다.
oc label policies.policy.open-cluster-management.io <policy-name> -n <policy-namespace> <key>=<value>
그런 다음 다음 명령을 사용하여 라벨이 있는 정책을 쿼리할 수 있습니다.
oc get policies.policy.open-cluster-management.io -n <policy-namespace> -l <key>=<value>
정책은 GitOps를 사용하여 배포됩니다.
2.6.4.5. 추가 리소스
-
정책 수집
오픈 소스 커뮤니티를 참조하십시오. - 자세한 내용은 NIST Special>-< 800-53에서 참조하십시오.
- 자세한 내용은 OpenShift CLI 사용을 참조하십시오.
- 오픈 소스 커뮤니티에 기여하는 방법에 대한 자세한 내용은 사용자 지정 정책 사용을 참조하십시오.
- Resource overwrite 예제에 대한 자세한 내용은 애플리케이션 라이프사이클 을 참조하십시오.
- 이 항목의 시작 부분으로 돌아가서 GitOps를 사용하여 정책을 배포합니다.