5.4. 정책을 코드로 관리
정책을 Kubernetes CR(사용자 정의 리소스)으로 저장하여 정책을 코드로 생성 및 관리하고 Argo CD와 같은 Kubernetes 네이티브 CD(Continuous Delivery) 툴을 사용하여 클러스터에 적용할 수 있습니다.
5.4.1. 정책을 코드로 관리 링크 복사링크가 클립보드에 복사되었습니다!
정책을 Kubernetes CR(사용자 정의 리소스)으로 저장하여 정책을 코드로 생성 및 관리하고 Argo CD와 같은 Kubernetes 네이티브 CD(Continuous Delivery) 툴을 사용하여 클러스터에 적용할 수 있습니다.
코드로서의 정책은 RHACS 포털을 사용하는 대신 YAML 또는 JSON에서 정책을 작성하려는 Kubernetes 보안 아키텍트에게 유용합니다. GitOps 워크플로를 사용하여 Kubernetes 구성을 이미 관리하는 GitOps 관리자도 유용할 수 있습니다.
RHACS는 기본 정책을 사용하거나 시스템에 대한 사용자 지정 정책을 생성하는 기능을 제공합니다. 정책을 코드 기능으로 사용하면 로컬에서 사용자 지정 정책을 다운로드하여 수정하거나 빈 파일에서 생성할 수 있습니다. 정책을 로컬로 작성하려면 원하는 정책 상태를 나타내는 CR을 생성합니다. 그런 다음 Argo CD와 같은 연속 제공 툴을 사용하여 RHACS를 실행하는 클러스터에 정책을 추적, 관리 및 적용합니다. CR을 생성하거나 업데이트하고 CI/CD 툴을 적용하여 적용하면 RHACS 데이터베이스에 저장된 정책이 생성되거나 업데이트됩니다.
이 기능을 통해 RHACS는 Central이 설치된 네임스페이스에 새 Kubernetes 컨트롤러를 설치합니다(일반적으로 stackrox 네임스페이스). Argo CD 워크플로우를 사용하면 RHACS가 설치된 동일한 네임스페이스에 정책을 코드 리소스로 적용하도록 Argo CD를 구성합니다. 이 연결을 구성한 후 RHACS의 컨트롤러는 Kubernetes API에서 개별 Kubernetes CR 파일로 관리되는 신규, 업데이트 또는 삭제된 정책에 대한 정보를 받습니다. RHACS는 RHACS 데이터베이스에 저장된 정책에 정책 CR을 조정합니다.
Argo CD를 사용하지 않는 GitOps 워크플로를 사용하면 RHACS API를 통해 RHACS의 Central에 연결하도록 GitOps 리포지토리를 구성합니다. CR은 사용되지 않습니다.
5.4.1.1. 정책 드리프트 정보 링크 복사링크가 클립보드에 복사되었습니다!
RHACS 포털과 외부에서도 정책을 편집, 삭제 및 생성할 수 있으므로 정책 드리프트 가 발생할 수 있습니다. 드리프트는 RHACS의 정책 버전이 Kubernetes의 정책 버전과 일치하지 않을 때 발생합니다.
Kubernetes 사용자 정의 리소스를 수정하는 대신 RHACS 포털 또는 API를 사용하여 외부 관리형 정책에 변경 사항이 적용되는 경우 드리프트가 발생할 수 있습니다. RHACS는 드리프트를 방지하지는 않지만 권장되지 않습니다. 드리프트는 도입 후 10시간 이내에 자동으로 해결됩니다.
5.4.1.2. RHACS 포털을 사용하여 코드에서 정책 생성 링크 복사링크가 클립보드에 복사되었습니다!
RHACS 포털을 사용하여 기존 정책을 YAML 파일로 저장하여 코드에서 새 정책을 생성할 수 있습니다.
사전 요구 사항
- RHACS 릴리스 4.6 이상이 설치되어 있어야 합니다.
roxctl메서드라고도 하는 매니페스트 설치 방법을 사용하여 RHACS를 설치하는 경우 다음 명령을 사용하여helm/chart/crds/에서 .zip 파일에 있는 config.stackrox.io.io CRD를 수동으로 적용해야 합니다.config.stackrox.io_securitypolicies.yamlkubectl create -f helm/chart/crds/config.stackrox.io_securitypolicies.yaml
$ kubectl create -f helm/chart/crds/config.stackrox.io_securitypolicies.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
프로세스
RHACS 포털을 사용하여 CR을 생성하여 코드에서 새 정책을 생성하려면 다음을 수행합니다.
정책 관리 페이지에서 새 정책을 생성하거나 기본 정책을 복제합니다.
참고CR로 저장하려면 먼저 기본 정책을 복제해야 합니다.
-
정책을 나열하는 행에서 오버플로 메뉴
를 클릭한 다음 사용자 정의 리소스로 저장을 선택합니다. 한 번에 여러 정책을 저장하려면 Bulk 작업 사용자 정의 리소스로 저장을 클릭합니다. 정책을 편집한 후 다음 중 하나를 수행하여 저장된 CR을 적용할 수 있습니다.
-
oc apply또는kubectl apply명령을 사용하여 Central이 설치된 Kubernetes 네임스페이스에 CR을 직접 적용합니다. - Argo CD 또는 GitOps 툴을 사용하여 Central이 설치된 Kubernetes 네임스페이스로 CR을 푸시합니다.
-
5.4.1.3. CR을 구성하여 코드에서 정책 생성 링크 복사링크가 클립보드에 복사되었습니다!
정책에 대한 CR을 구성하여 코드에서 새 정책을 생성할 수 있습니다.
편집기를 사용하여 다음 특성을 사용하여 정책에 대한 CR을 구성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 작은 정보예를 들어
kubectl explain securitypolicy.spec명령을 입력하여 온라인 문서를 사용하여 정책 사양을 정의하는 데 사용할 수 있는 필드를 파악합니다.다음 중 하나를 수행하여 저장된 CR을 적용합니다.
-
oc apply또는kubectl apply명령을 사용하여 Central이 설치된 Kubernetes 네임스페이스에 CR을 직접 적용합니다. - Argo CD 또는 GitOps 툴을 사용하여 Central이 설치된 Kubernetes 네임스페이스로 CR을 푸시합니다.
-
5.4.1.4. 정책을 코드 기능으로 비활성화 링크 복사링크가 클립보드에 복사되었습니다!
RHACS를 설치할 때 코드 기능으로 정책이 자동으로 활성화되지만 비활성화할 수 있습니다.
프로세스
정책 코드 기능을 비활성화하려면 RHACS를 설치하는 데 사용한 방법에 따라 다음 작업 중 하나를 완료합니다.
-
Operator를 사용하여 RHACS를 설치한 경우
spec.configAsCode.configAsCodeComponent필드를Disabled로 설정합니다. -
Helm 차트를 사용하여 RHACS를 설치한 경우
values.yaml파일의configAsCode.enabled필드를false로 설정합니다. roxctl메서드라고도 하는 매니페스트 설치 방법을 사용하여 RHACS를 설치한 경우 다음 명령을 실행하여config-controller배포를 삭제합니다.kubectl -n stackrox delete deployment config-controller
$ kubectl -n stackrox delete deployment config-controller1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- OpenShift Container Platform의 경우
kubectl대신oc를 사용합니다.