6.2. 사용자 정의 보안 정책
기본 정책을 사용하는 것 외에도 Red Hat Advanced Cluster Security for Kubernetes에서 사용자 지정 정책을 만들 수도 있습니다.
다음 방법을 사용하여 사용자 지정 정책을 생성할 수 있습니다.
-
RHACS 포털에서 플랫폼 구성
정책 관리로 이동하여 정책 생성 을 클릭합니다. - RHACS 포털에서 Risk 로 이동하고 필터를 사용하여 정책에서 사용할 기준을 선택합니다. 정책 생성을 클릭합니다.
- 정책을 Kubernetes CR(사용자 정의 리소스)으로 저장하고 Argo CD와 같은 연속 제공 툴을 사용하여 클러스터에 적용하여 정책을 코드로 생성하고 관리합니다.
자세한 내용은 다음 섹션을 참조하십시오.
6.2.1. 시스템 정책 보기에서 보안 정책 생성
시스템 정책 보기에서 새 보안 정책을 생성할 수 있습니다.
프로세스
-
RHACS 포털에서 플랫폼 구성
정책 관리로 이동합니다. - 정책 생성을 클릭합니다.
- 다음 섹션에서 정책 정의 정보를 구성합니다.
정책 세부 정보 입력
정책 세부 정보 섹션에서 정책에 대한 다음 세부 정보를 입력합니다.
- 정책의 이름을 입력합니다.
- 이 정책의 심각도 수준을 선택합니다.
- 정책에 대한 정책 범주를 선택합니다. 이 필드는 필수 항목입니다.
- 설명 필드에 정책에 대한 세부 정보를 입력합니다.
- Rationale 필드에 정책이 존재하는 이유에 대한 설명을 입력합니다.
- 지침 필드에 이 정책 위반을 해결하는 단계를 입력합니다.
MITRE ATT&CK 섹션에서 정책에 지정할 전략 및 기술을 선택합니다.
- 전략 추가 를 클릭한 다음 드롭다운 목록에서 전략을 선택합니다.
- 선택한 전략의 기술을 추가하려면 추가 기술을 클릭합니다. 방법에 대한 여러 기술을 지정할 수 있습니다.
- 다음을 클릭합니다.
정책 라이프사이클 구성
Lifecycle 섹션에서 다음 단계를 완료합니다.
정책이 적용되는 라이프사이클 단계 ( 빌드,배포 또는 런타임 )를 선택합니다. 다음 선택 사항에서 두 개 이상의 단계를 선택할 수 있습니다.
- 빌드 시간 정책은 CVE 및 Dockerfile 명령과 같은 이미지 필드에 적용됩니다.
- 배포 시간 정책에는 모든 빌드 시간 정책 기준이 포함될 수 있지만 권한 있는 모드에서 실행 또는 Docker 소켓 마운트와 같은 클러스터 구성의 데이터를 포함할 수도 있습니다.
- 런타임 정책에는 모든 빌드 시간 및 배포 시간 정책 기준이 포함될 수 있지만 런타임 중에 프로세스 실행에 대한 데이터를 포함할 수도 있습니다.
런타임 라이프사이클 단계를 선택한 경우 다음 이벤트 소스 중 하나를 선택해야 합니다.
- Deployment: RHACS는 이벤트 소스에 프로세스 및 네트워크 활동, Pod 실행 및 Pod 포트 전달이 포함된 경우 정책 위반을 트리거합니다.
- 감사 로그: RHACS는 이벤트 소스가 Kubernetes 감사 로그 레코드와 일치하는 경우 정책 위반을 트리거합니다.
- 다음을 클릭합니다.
정책 규칙 및 기준 구성
정책 규칙을 구성하려면 다음을 수행합니다.
- Rules 섹션에서 정책을 트리거할 조건을 구성합니다. 규칙 제목을 편집하고 새 규칙 추가를 클릭하여 추가 규칙을 추가할 수 있습니다.
각 규칙에 대해 정책 필드를 클릭하여 정책 섹션으로 끌어 정책 필드 또는 기준을 추가합니다.
참고사용 가능한 정책 필드는 정책에 선택한 라이프사이클 단계에 따라 다릅니다. 예를 들어 Kubernetes 액세스 정책 또는 네트워킹 의 기준은 런타임 라이프사이클에 대한 정책을 생성할 때 사용할 수 있지만 빌드 라이프사이클에 대한 정책을 생성할 때는 사용할 수 없습니다. 기준 및 사용 가능한 라이프사이클 단계에 대한 정보를 포함하여 정책 기준에 대한 자세한 내용은 "추가 리소스" 섹션의 "정책 기준"을 참조하십시오.
각 필드에 대해 필드와 관련된 옵션 중에서 선택할 수 있습니다. 이는 필드 유형에 따라 다릅니다. 예를 들면 다음과 같습니다.
- 문자열인 값의 기본 동작은 정책 필드에서 일치시킬 것이며 필드를 일치시키지 않도록 하려면 Not 를 클릭하여 표시합니다.
-
일부 필드에는
true
또는false
인 값이 포함되어 있습니다. - 일부 필드에는 드롭다운 목록에서 값을 선택해야 합니다.
-
부울 값이
읽기 전용 루트 파일 시스템인 속성을 선택하면
및 WRI CryostatREAD-
ONLY옵션이
표시됩니다. 복합 값
Environment 변수
를 사용하여 특성을 선택하는 경우Key
, Value 및
필드에 대한 값을 입력하는 옵션과 사용 가능한 옵션에 대한 더 많은 값을 추가하는 아이콘이 표시됩니다.Value
From참고자세한 내용은 "추가 리소스" 섹션의 "정책 기준"을 참조하십시오.
- 속성에 대해 여러 값을 결합하려면 추가 아이콘을 클릭합니다.
- 다음을 클릭합니다.
정책 범위 구성
환경 내에서 클러스터 또는 네임스페이스와 같은 엔티티에서 정책을 제한하거나 제외하는 범위를 생성합니다.
- 범위별로 제한하려면 포함 범위 추가 를 클릭합니다. 이를 통해 이 정책은 특정 클러스터, 네임스페이스 또는 배포 라벨에만 적용할 수 있습니다. 네임스페이스 및 레이블에 RE2 Syntax 에서 여러 범위를 추가하고 정규식을 사용할 수도 있습니다.
예를 들어 정책에서 특정 배포, 클러스터, 네임스페이스, 배포 레이블을 제외하려면 제외 범위 추가 를 클릭합니다. 정책은 선택한 엔터티에는 적용되지 않습니다. 네임스페이스 및 레이블에 RE2 Syntax 에서 여러 범위를 추가하고 정규식을 사용할 수도 있습니다. 그러나 배포 선택에는 정규식을 사용할 수 없습니다.
참고이 기능은 배포 및 런타임 라이프사이클 단계에 대해 구성된 정책에만 사용할 수 있습니다.
빌드 라이프사이클 단계에 대해 구성된 정책의 경우 정책에서 이미지를 제외할 수 있습니다. 이미지 제외(라이프 사이클만 해당) 필드에 위반을 트리거하지 않으려는 이미지를 입력합니다.
참고제외된 이미지 설정은 Build 라이프사이클 단계와 함께 연속 통합 시스템에서 이미지를 확인하는 경우에만 적용됩니다. 이 정책을 사용하여 Runtime 라이프사이클 단계의 Deploy 라이프사이클 단계 또는 런타임 활동에서 실행 중인 배포를 확인하는 경우에는 적용되지 않습니다.
- 다음을 클릭합니다.
정책 작업 구성
정책에 대한 활성화 상태, 적용 및 알림기를 구성합니다.
- 정책의 활성화 상태를 선택합니다.
적용 방법 선택:
- notify: 위반 목록에 위반을 포함합니다.
- 정보 및 적용: 작업을 시행합니다. 이 옵션을 선택하는 경우 각 라이프사이클에 토글을 사용하여 정책의 적용 동작을 선택해야 합니다. 선택할 수 있는 적용 동작은 정책 정의의 라이프 사이클 섹션에 있는 정책에 대해 선택한 라이프사이클 단계에 따라 다릅니다. 다음 적용 동작은 라이프사이클 단계에 따라 사용할 수 있습니다.
- Build: RHACS는 이미지가 정책의 기준과 일치할 때 CI(Continuous Integration) 빌드에 실패합니다.
배포 단계의 경우 RHACS는 RHACS 승인 컨트롤러가 구성되어 실행되는 경우 정책 조건과 일치하는 배포의 생성 및 업데이트를 차단합니다.
- 승인 컨트롤러 적용이 있는 클러스터에서 Kubernetes 또는 OpenShift Container Platform API 서버는 호환되지 않는 모든 배포를 차단합니다. 다른 클러스터에서 RHACS는 비호환 배포를 편집하여 Pod가 예약되지 않도록 합니다.
- 기존 배포의 경우 정책 변경으로 인해 Kubernetes 이벤트가 발생하는 경우 다음 기준을 탐지할 때만 적용됩니다. 적용 단계에 대한 자세한 내용은 "배포 단계에 대한 보안 정책 적용"을 참조하십시오.
Runtime: RHACS는 Pod의 이벤트가 정책 기준과 일치하면 모든 Pod를 삭제합니다.
주의정책 적용은 실행 중인 애플리케이션 또는 개발 프로세스에 영향을 미칠 수 있습니다. 시행 옵션을 활성화하기 전에 모든 이해 관계자에게 알리고 자동화된 적용 작업에 대응하는 방법을 계획하십시오.
알림기를 정책에 연결하여 이메일 수신자 또는 Jira, Splunk 또는 Webhook를 사용하는 기타 애플리케이션과 같은 외부 툴링에 정책 위반을 보냅니다.
목록에서 알림기를 선택합니다.
참고알림이 표시되기 전에 이전에 알림을 구성하고 목록에서 선택할 수 있어야 합니다. Notifier 통합 섹션의 플랫폼 구성
통합 페이지에서 이러한 통합을 구성합니다.
- 다음을 클릭합니다.
정책 검토 및 위반 프리뷰
구성한 정책 설정을 검토합니다.
- 정책 구성이 올바른 옵션으로 구성되었는지 확인합니다.
프리뷰 위반 패널은 빌드 단계 또는 배포 단계 배포에 정책 위반이 있는지 여부를 포함하여 추가 정보를 제공합니다.
참고런타임 위반은 향후 이벤트에 대한 응답으로 생성되므로 이 프리뷰에서는 사용할 수 없습니다.
정책을 저장하기 전에 위반 사항이 정확한 것으로 표시되는지 확인합니다.
- 저장을 클릭합니다.
6.2.1.1. 정책 기준에 대한 논리 조건 추가
드래그 앤 드롭 정책 필드 패널을 사용하여 정책 기준에 대한 논리 조건을 지정할 수 있습니다.
사전 요구 사항
- Red Hat Advanced Cluster Security for Kubernetes 버전 3.0.45 이상을 사용해야 합니다.
프로세스
정책 기준 섹션에서 새 조건 추가를 선택하여 새 정책 섹션을 추가합니다.
- 편집 아이콘을 클릭하여 정책 섹션의 이름을 변경할 수 있습니다.
- 정책 필드 섹션에는 사용 가능한 정책 기준이 여러 카테고리로 나열됩니다. 이러한 카테고리를 확장하고 축소하여 정책 기준 특성을 볼 수 있습니다.
- 속성을 정책 섹션의 범위 내에 있는 정책 필드로 드래그합니다.
선택한 특성 유형에 따라 선택한 특성에 대한 조건을 구성하는 다양한 옵션이 제공됩니다. 예를 들면 다음과 같습니다.
-
부울 값이
읽기 전용 루트 파일 시스템인 속성을 선택하면
및 WRI CryostatREAD-
ONLY옵션이
표시됩니다. 복합 값
Environment 변수
를 사용하여 특성을 선택하는 경우Key
, Value 및
필드에 대한 값을 입력하는 옵션과 사용 가능한 옵션에 대한 더 많은 값을 추가하는 아이콘이 표시됩니다.Value
From- 속성에 대해 여러 값을 결합하려면 추가 아이콘을 클릭합니다.
-
정책 섹션에 논리 연산자
AND
또는OR
목록을 클릭하여 AND 및OR
연산자 간에전환할
수도 있습니다. 운영자 간 집계는 policy 섹션 내에서만 작동하며 두 개의 다른 정책 섹션 사이는 작동하지 않습니다.
-
부울 값이
-
이러한 단계를 반복하여 둘 이상의
AND
및OR
조건을 지정할 수 있습니다. 추가된 속성에 대한 조건을 구성한 후 Next 를 클릭하여 정책 생성을 계속합니다.
6.2.2. 위험 보기에서 보안 정책 생성
위험 보기에서 배포 위험을 평가하는 동안 로컬 페이지 필터링을 적용할 때 사용 중인 필터링 기준을 기반으로 새 보안 정책을 만들 수 있습니다.
프로세스
- RHACS 포털로 이동하여 탐색 메뉴에서 위험을 선택합니다.
- 정책을 생성할 로컬 페이지 필터링 기준을 적용합니다.
- 새 정책을 선택하고 필수 필드를 입력하여 새 정책을 생성합니다.
추가 리소스
6.2.3. 기존 보안 정책 수정
생성한 정책과 복제한 Kubernetes용 Red Hat Advanced Cluster Security에서 제공하는 기존 기본 정책을 편집할 수 있습니다.
프로세스
-
RHACS 포털에서 플랫폼 구성
정책 관리로 이동합니다. - 정책 페이지에서 편집할 정책을 선택합니다.
작업
정책 편집을 선택합니다. 참고기본 정책을 편집할 수 없습니다. 기본 정책을 복제하고 복제된 정책을 편집해야 합니다.
- 변경할 필드를 편집하고 저장을 클릭합니다.
6.2.4. 정책을 코드로 관리
정책을 Kubernetes CR(사용자 정의 리소스)으로 저장하여 정책을 코드로 생성 및 관리하고 Argo CD와 같은 Kubernetes 네이티브 CD(Continuous Delivery) 툴을 사용하여 클러스터에 적용할 수 있습니다.
코드로서의 정책은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. Red Hat은 프로덕션 환경에서 사용하는 것을 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
RHACS는 기본 정책을 사용하거나 시스템에 대한 사용자 지정 정책을 생성하는 기능을 제공합니다. 정책에서는 코드 기능으로 로컬에서 작성한 다음 Argo CD와 같은 지속적인 제공 툴을 사용하여 RHACS를 실행하는 클러스터에 정책을 추적, 관리 및 적용할 수 있습니다. API를 사용하여 GitHub와 같은 자체 GitOps 리포지토리에 대한 연결을 구성할 수도 있습니다. 정책을 로컬로 작성하려면 원하는 정책 상태를 나타내는 CR을 생성합니다. CR을 생성하거나 업데이트하고 CI/CD 툴을 적용하여 적용하면 RHACS 데이터베이스에 저장된 정책이 생성되거나 업데이트됩니다.
코드로서의 정책은 RHACS 포털을 사용하는 대신 YAML 또는 JSON에서 정책을 작성하려는 Kubernetes 보안 아키텍트에게 유용합니다. GitOps 워크플로를 사용하여 Kubernetes 구성을 이미 관리하는 GitOps 관리자도 유용할 수 있습니다.
RHACS는 Central이 설치된 네임스페이스에 새 구성 컨트롤러를 설치합니다(일반적으로 stackrox
네임스페이스). Argo CD 워크플로를 사용하면 Kubernetes API를 사용하여 stackrox
네임스페이스에서 이 컨트롤러와 통신하도록 Argo CD를 구성합니다. 이 연결을 구성한 후 RHACS의 컨트롤러는 Kubernetes API에서 개별 Kubernetes CR 파일로 관리되는 신규, 업데이트 또는 삭제된 정책에 대한 정보를 받습니다. RHACS는 RHACS 데이터베이스에 저장된 정책에 정책 CR을 조정합니다.
Argo CD를 사용하지 않는 GitOps 워크플로를 사용하면 RHACS API를 통해 RHACS의 Central에 연결하도록 GitOps 리포지토리를 구성합니다. CR은 사용되지 않습니다.
6.2.4.1. 정책 드리프트 정보
RHACS 포털과 외부에서도 정책을 편집, 삭제 및 생성할 수 있으므로 정책 드리프트 가 발생할 수 있습니다. 드리프트는 RHACS의 정책 버전이 Kubernetes의 정책 버전과 일치하지 않을 때 발생합니다.
Kubernetes 사용자 정의 리소스를 수정하는 대신 RHACS 포털 또는 API를 사용하여 외부 관리형 정책에 변경 사항이 적용되는 경우 드리프트가 발생할 수 있습니다. RHACS는 드리프트를 방지하지는 않지만 권장되지 않습니다. 드리프트는 도입 후 10시간 이내에 자동으로 해결됩니다.
6.2.4.2. RHACS 포털을 사용하여 코드에서 정책 생성
RHACS 포털을 사용하여 기존 정책을 YAML 파일로 저장하여 코드에서 새 정책을 생성할 수 있습니다.
사전 요구 사항
- RHACS 릴리스 4.6 이상이 설치되어 있어야 합니다.
roxctl
메서드라고도 하는 매니페스트 설치 방법을 사용하여 RHACS를 설치하는 경우 다음 명령을 사용하여helm/chart/crds/
에서 .zip 파일에 있는 config.stackrox.io.io CRD를 수동으로 적용해야 합니다.config.stackrox.io
_securitypolicies.yaml$ kubectl create -f helm/chart/crds/config.stackrox.io_securitypolicies.yaml
프로세스
RHACS 포털을 사용하여 CR을 생성하여 코드에서 새 정책을 생성하려면 다음을 수행합니다.
정책 관리 페이지에서 새 정책을 생성하거나 기본 정책을 복제합니다.
참고CR로 저장하려면 먼저 기본 정책을 복제해야 합니다.
-
정책을 나열하는 행에서 오버플로 메뉴
를 클릭한 다음 사용자 정의 리소스로 저장을 선택합니다. 한 번에 여러 정책을 저장하려면 Bulk 작업
사용자 정의 리소스로 저장을 클릭합니다. 정책을 편집한 후 다음 중 하나를 수행하여 저장된 CR을 적용할 수 있습니다.
-
oc apply
또는kubectl apply
명령을 사용하여 Central이 설치된 Kubernetes 네임스페이스에 CR을 직접 적용합니다. - Argo CD 또는 GitOps 툴을 사용하여 Central이 설치된 Kubernetes 네임스페이스로 CR을 푸시합니다.
-
6.2.4.3. CR을 구성하여 코드에서 정책 생성
정책에 대한 CR을 구성하여 코드에서 새 정책을 생성할 수 있습니다.
편집기를 사용하여 다음 특성을 사용하여 정책에 대한 CR을 구성합니다.
kind: SecurityPolicy apiVersion: config.stackrox.io/v1alpha1 metadata: name: short-name spec: policyName: A longer form name # ...
작은 정보예를 들어
kubectl explain securitypolicy.spec
명령을 입력하여 온라인 문서를 사용하여 정책 사양을 정의하는 데 사용할 수 있는 필드를 파악합니다.다음 중 하나를 수행하여 저장된 CR을 적용합니다.
-
oc apply
또는kubectl apply
명령을 사용하여 Central이 설치된 Kubernetes 네임스페이스에 CR을 직접 적용합니다. - Argo CD 또는 GitOps 툴을 사용하여 Central이 설치된 Kubernetes 네임스페이스로 CR을 푸시합니다.
-
6.2.4.4. 정책을 코드 기능으로 비활성화
RHACS를 설치할 때 코드 기능으로 정책이 자동으로 활성화되지만 비활성화할 수 있습니다.
프로세스
정책 코드 기능을 비활성화하려면 RHACS를 설치하는 데 사용한 방법에 따라 다음 작업 중 하나를 완료합니다.
-
Operator를 사용하여 RHACS를 설치한 경우
spec.configAsCode.configAsCodeComponent
필드를Enabled
로 설정합니다. -
Helm 차트를 사용하여 RHACS를 설치한 경우
values.yaml
파일의configAsCode.enabled
필드를true
로 설정합니다. roxctl
메서드라고도 하는 매니페스트 설치 방법을 사용하여 RHACS를 설치한 경우 다음 명령을 실행하여config-controller
배포를 삭제합니다.$ kubectl -n stackrox delete deployment config-controller 1
- 1
- OpenShift Container Platform의 경우
kubectl
대신oc
를 사용합니다.