6장. 보안 정책 관리
6.1. 보안 정책 정보
Red Hat Advanced Cluster Security for Kubernetes는 환경의 위험이 높은 서비스 배포를 방지하고 런타임 보안 사고에 대응하는 데 사용할 수 있는 기본 보안 정책을 제공합니다. 컨테이너 환경에 대한 사용자 지정 다단계 정책을 생성할 수도 있습니다.
6.1.1. 정책 카테고리
RHACS는 정책 범주를 사용하여 유형 및 함수별로 정책을 그룹화합니다. 이러한 카테고리를 사용하여 정책을 구성하고 검색할 수 있습니다.
RHACS는 다음과 같은 기본 정책 범주를 제공합니다.
- 비정상적인 활동
- Cryptocurrency Cryostat
- DevOps 모범 사례
- Docker Center for Internet Security (CIS)
- Kubernetes
- Kubernetes 이벤트
- 네트워크 툴
- 패키지 관리
- 권한
- 보안 모범 사례
- 공급망 보안
- 시스템 수정
- 취약점 관리
- 제로 신뢰
정책 관리 창의 Policy Categories 탭을 사용하여 RHACS 포털에서 기존 카테고리를 보고 고유한 정책 범주를 생성할 수 있습니다.
6.1.1.1. 정책 카테고리 탭을 사용하여 정책 카테고리 생성
버전 3.74부터 RHACS는 PostgreSQL 데이터베이스가 활성화된 경우 Red Hat Advanced Cluster Security Cloud Service 또는 RHACS에서 정책 카테고리를 생성하고 관리하는 새로운 방법을 제공합니다. 정책 생성 이외의 모든 정책 워크플로우는 이 기능을 사용할 때 변경되지 않은 상태로 유지됩니다.
PolicyCategoryService
API 오브젝트를 사용하여 정책 범주를 구성할 수도 있습니다. 자세한 내용은 RHACS 포털에서 도움말
프로세스
-
RHACS 포털에서 플랫폼 구성
정책 관리로 이동합니다. - 정책 카테고리 탭을 클릭합니다. 이 탭에서는 기존 카테고리 목록을 제공하고 카테고리 이름으로 목록을 필터링할 수 있습니다. 모든 카테고리 표시를 클릭하고 확인란을 선택하여 표시된 목록에서 기본 또는 사용자 지정 카테고리를 제거할 수도 있습니다.
- 카테고리 생성을 클릭합니다.
- 카테고리 이름을 입력하고 생성 을 클릭합니다.
6.1.1.2. 정책 카테고리 탭을 사용하여 정책 카테고리 수정
버전 3.74부터 RHACS는 PostgreSQL 데이터베이스가 활성화된 경우 Red Hat Advanced Cluster Security Cloud Service 또는 RHACS에서 정책 카테고리를 생성하고 관리하는 새로운 방법을 제공합니다. 정책 생성 이외의 모든 정책 워크플로우는 이 기능을 사용할 때 변경되지 않은 상태로 유지됩니다.
PolicyCategoryService
API 오브젝트를 사용하여 정책 범주를 구성할 수도 있습니다. 자세한 내용은 RHACS 포털에서 도움말
프로세스
-
RHACS 포털에서 플랫폼 구성
정책 관리로 이동합니다. - 정책 카테고리 탭을 클릭합니다. 이 탭에서는 기존 카테고리 목록을 제공하고 카테고리 이름으로 목록을 필터링할 수 있습니다. 모든 카테고리 표시를 클릭하고 확인란을 선택하여 표시된 목록에서 기본 또는 사용자 지정 카테고리를 제거할 수도 있습니다.
- 정책 이름을 클릭하거나 편집하여 삭제합니다. 기본 정책 범주는 선택, 편집 또는 삭제할 수 없습니다.
6.1.2. 정책 및 라이프사이클 단계 이해
정책을 구성할 때 정책에 적용되는 라이프사이클 단계를 선택할 수 있으며 정책에 대해 두 개 이상의 단계를 선택할 수 있습니다.
다음 라이프사이클 단계에서 선택할 수 있습니다.
- 빌드 단계 정책: 이러한 정책은 CVE 및 Dockerfile 명령과 같은 이미지 필드에 적용됩니다.
- 배포 단계 정책: 이러한 정책에는 모든 빌드 시간 정책 기준이 포함될 수 있습니다. 권한 있는 모드에서 실행 또는 Docker 데몬 소켓 마운트와 같은 클러스터 구성의 데이터가 있을 수도 있습니다.
런타임 정책: 이러한 정책 검사에는 모든 빌드 시간 및 배포 시간 정책 기준, 런타임 중 프로세스 실행에 대한 데이터가 포함됩니다. 다음 이벤트를 기반으로 정책 위반을 트리거하도록 런타임 정책을 추가로 구성할 수 있습니다.
- 배포: RHACS는 이벤트 소스에 Pod 및 Pod 포트 전달에서 명령 실행과 같은 프로세스 및 네트워크 활동이 포함된 경우 정책 위반을 트리거합니다.
- 감사 로그: RHACS는 이벤트 소스가 Kubernetes 감사 로그 레코드와 일치하는 경우 정책 위반을 트리거합니다.
6.1.3. 규칙 및 정책 기준 이해
RHACS에서 규칙을 설정하고 정책을 트리거할 데이터를 구성할 수 있습니다. 이 데이터는 정책 기준 또는 정책 필드 라고도 합니다.
다음 표에 나열된 특성을 기반으로 정책을 구성할 수 있습니다.
이 표에서는 다음을 수행합니다.
정규 표현식,AND, OR, NOT 열은 특정 특성과 함께 정규식 및 기타 논리 연산자를 사용할 수 있는지 여부를 나타냅니다.
-
!
Cryo stat (Regular expressions)는 나열된 필드에 대해서만 정규식을 사용할 수 있음을 나타냅니다. -
AND
!
또는 OR 는 속성에 언급된 논리 연산자만 사용할 수 있음을 나타냅니다. - Cryostat / NOT / AND, OR 열의 경우 속성이 해당 속성(regex, 부정, 논리 연산자)을 지원하지 않음을 나타냅니다.
-
- RHACS 버전 열에는 특성을 사용해야 하는 Red Hat Advanced Cluster Security for Kubernetes 버전이 표시됩니다.
다음과 같은 특성에는 논리 조합 연산자
AND
및OR
를 사용할 수 없습니다.-
부울 값이
true
및false
최소 값 의미 체계는 다음과 같습니다.
- 최소 RBAC 권한
- 이미지가 생성된 이후 일수
-
부울 값이
다음과 같은 특성에
NOT
논리 연산자를 사용할 수 없습니다.-
부울 값이
true
및false
-
< , > , , <= , >= 연산자와 같이 이미 비교를 사용하는 숫자 값입니다.
예를 들어 여러 값을 가질 수 있는 복합 조건:
- Dockerfile line: 명령 및 인수를 모두 포함합니다.
- 환경 변수: name 및 value로 구성됩니다.
- 기능 추가,드롭다운 기능, 이미지가생성된 이후의 일, 이미지가 마지막으로 스캔된 날짜 등 기타 의미
-
부울 값이
속성 | 설명 | JSON 속성 | 허용되는 값 | regex,NOT,AND, OR | 단계 |
---|---|---|---|---|---|
섹션: 이미지 레지스트리 | |||||
이미지 레지스트리 | 이미지 레지스트리의 이름입니다. | 이미지 레지스트리 | 문자열 |
regex, |
Build, |
이미지 이름 |
레지스트리의 이미지의 전체 이름입니다(예: | 이미지 원격 이미지 | 문자열 |
regex, |
Build, |
이미지 태그 | 이미지의 식별자입니다. | 이미지 태그 | 문자열 |
regex, |
Build, |
이미지 서명 | 이미지의 서명을 확인하는 데 사용할 수 있는 서명 통합 목록입니다. 서명이 없거나 제공된 서명 통합 중 하나 이상에서 확인할 수 없는 이미지에 대한 경고를 생성합니다. | 이미지 서명 확인 | 이미 구성된 이미지 서명 통합의 유효한 ID |
! |
Build, |
섹션: 이미지 콘텐츠 | |||||
CVE(Common Vulnerabilities and Exposures)는 수정 가능 | 이 기준으로 평가 중인 배포에 있는 이미지에 수정 가능한 CVE가 있는 경우에만 위반이 발생합니다. | 수정 가능 | 부울 | ✕ |
Build, |
CVE가 이미지에 처음 발견된 일자 | 이러한 기준은 RHACS가 특정 이미지에서 CVE를 발견한 이후 지정된 일수보다 많은 경우에만 위반을 초래합니다. | CVE가 이미지에 처음 발견된 일자 | 정수 | ✕ |
Build, |
CVE가 시스템에서 처음 발견된 일자 | 이러한 기준은 RHACS가 RHACS가 모니터링하는 모든 클러스터에서 배포된 모든 이미지에서 CVE를 발견한 이후 지정된 일수에 해당하는 경우에만 위반이 발생합니다. | CVE가 시스템에서 처음 발견된 일자 | 정수 | ✕ |
Build, |
이미지 기간 | 이미지 생성 날짜로부터 최소 일 수입니다. | 이미지 기간 | 정수 | ✕ |
Build, |
이미지 검사 기간 | 이미지가 마지막으로 스캔된 후 최소 일 수입니다. | 이미지 검사 기간 | 정수 | ✕ |
Build, |
이미지 사용자 | Dockerfile의 USER 지시문과 일치합니다. 자세한 내용은 https://docs.docker.com/engine/reference/builder/#user 을 참조하십시오. | 이미지 사용자 | 문자열 |
regex, |
Build, |
Dockerfile 라인 | 명령 및 인수를 포함하여 Dockerfile의 특정 행. | Dockerfile 라인 | 다음 중 하나: LABEL, RUN, CMD, EXV, ADD, COPY, ENTRYPOINT, VOLUME, USER, WORKDIR, ONBUILD |
! regex only for values, |
Build, |
이미지 검사 상태 | 이미지가 스캔되었는지 확인합니다. | 검사되지 않은 이미지 | 부울 | ✕ |
Build, |
CVSS (Common Vulnerability Scoring System) |
CVSS: 점수가 >보다 크거나 < , 지정된 CVSS보다 작거나 같은 취약점 | CVSS |
<, > >, <=, >= 또는 아무것도(즉, 동일한 값)
예: | 또는 |
Build, |
심각도 | CVSS 또는 공급 업체를 기반으로 하는 취약점의 심각도입니다. 낮음, 보통, 중요 또는 심각 중 하나일 수 있습니다. | 심각도 |
<, >, Cryostat, >= 또는 아무것도(이는 동일함)
예: | 또는 |
Build, |
수정자 | 이미지의 플래그가 지정된 취약점을 수정하는 패키지의 버전 문자열입니다. 이 기준은 예를 들어 CVE 기준을 사용하여 취약점을 식별하는 다른 기준과 함께 사용될 수 있습니다. | 수정자 | 문자열 |
regex, |
Build, |
CVE | 일반적인 취약점 및 노출은 특정 CVE 번호와 함께 사용합니다. | CVE | 문자열 |
regex, |
Build, |
이미지 구성 요소 | 이미지에 있는 특정 소프트웨어 구성 요소의 이름 및 버전 번호입니다. | 이미지 구성 요소 |
key=value
값은 선택 사항입니다. 값이 없는 경우 "key=" 형식이어야 합니다. |
regex, |
Build, |
이미지 OS |
이미지의 기본 운영 체제의 이름 및 버전 번호입니다. 예: | 이미지 OS | 문자열 |
regex, |
Build, |
이미지 레이블 필요 |
Docker 이미지 레이블이 있는지 확인합니다. 배포의 이미지에 지정된 레이블이 없는 경우 정책이 트리거됩니다. key 및 value 필드에 정규식을 사용하여 레이블과 일치시킬 수 있습니다. | 필수 이미지 레이블 |
key=value
값은 선택 사항입니다. 값이 없는 경우 "key=" 형식이어야 합니다. |
regex, |
Build, |
이미지 레이블 허용 | 특정 Docker 이미지 레이블을 사용하지 않는지 확인합니다. 배포의 이미지에 지정된 레이블이 있으면 정책이 트리거됩니다. key 및 value 필드에 정규식을 사용하여 레이블과 일치시킬 수 있습니다. '이미지 레이블 정책 비활성화' 기준은 Docker 레지스트리와 통합할 때만 작동합니다. Docker 레이블에 대한 자세한 내용은 https://docs.docker.com/config/labels-custom-metadata/ Docker 문서를 참조하십시오. | 허용되지 않는 이미지 라벨 |
key=value
값은 선택 사항입니다. 값이 없는 경우 "key=" 형식이어야 합니다. |
regex, |
Build, |
섹션: 컨테이너 구성 | |||||
환경 변수 |
이름 또는 값으로 환경 변수를 확인합니다. 환경 변수 속성이 포함된 정책을 생성할 때 정책이 일치해야 하는 환경 변수 유형을 선택할 수 있습니다. 예를 들어 배포 YAML에서 직접 제공되는 원시 값을 지정하거나 구성 맵, 시크릿, 필드 또는 리소스 요청 또는 제한의 값에 대한 참조를 지정할 수 있습니다. 배포 YAML에서 직접 지정된 원시 값이 아닌 모든 유형의 경우 정책 규칙의 해당 | 환경 변수 |
배포 YAML에 직접 지정된 환경 변수와 특정 키 및 값과 일치하는 RAW=key=value입니다. 키에서만 일치하도록
환경 변수가 구성 YAML에 정의되지 않은 경우
이전 목록은 먼저 API 오브젝트 레이블을 제공한 다음 사용자 인터페이스 레이블을 설명에 제공합니다. |
! key 및 value ( RAW를 사용하는 경우) |
배포, |
컨테이너 CPU 요청 | 지정된 리소스에 예약된 코어 수를 확인합니다. | 컨테이너 CPU 요청 |
<, > >, >= 또는 아무것도 (이를 의미하는 것과 같습니다)
예: | 또는 |
배포, |
컨테이너 CPU 제한 | 리소스에서 사용할 수 있는 최대 코어 수를 확인합니다. | 컨테이너 CPU 제한 | (컨테이너 CPU 요청과 동일) | 또는 |
배포, |
컨테이너 메모리 요청 | 요청되는 부분(MB)을 포함한 숫자입니다. | 컨테이너 메모리 요청 | (컨테이너 CPU 요청과 동일) | 또는 |
배포, |
컨테이너 메모리 제한 | 리소스가 사용할 수 있는 최대 메모리 양을 확인합니다. | 컨테이너 메모리 제한 | (컨테이너 CPU 요청과 동일) | 또는 |
배포, |
권한 있는 컨테이너 |
배포가 권한 있는 모드에서 구성되었는지 확인합니다. 이 기준은 해당 Pod 보안 컨텍스트에서 | 권한이 있는 컨테이너 |
부울: 해당 | ✕ |
배포, |
루트 파일 시스템 쓰기 기능 |
배포가 | 읽기 전용 루트 파일 시스템 |
부울: 해당 | ✕ |
배포, |
seccomp 프로필 유형 |
배포에 정의된 | seccomp 프로필 유형 |
그 중 하나:
UNCONFINED | ✕ |
배포, |
권한 에스컬레이션 | 배포를 통해 컨테이너 프로세스에서 상위 프로세스보다 더 많은 권한을 얻을 수 있는 경우 경고를 제공합니다. | 권한 에스컬레이션 허용 | 부울 | ✕ |
배포, |
드롭 기능 |
컨테이너에서 삭제해야 하는 Linux 기능. 지정된 기능이 삭제되지 않은 경우 경고를 제공합니다. 예를 들어 |
드롭 기능 |
그 중 하나:
모든 | AND |
배포, |
기능 추가 |
원시 패킷을 보내거나 파일 권한을 재정의하는 기능과 같이 컨테이너에 추가해서는 안 되는 Linux 기능. 지정된 기능이 추가될 때 경고를 제공합니다. 예를 들어 | 기능 추가 |
AUDIT_CONTROL | 또는 |
배포, |
컨테이너 이름 | 컨테이너의 이름입니다. | 컨테이너 이름 | 문자열 |
regex, |
배포, |
AppArmor 프로필 | 컨테이너에 사용되는 Application Armor("AppArmor") 프로필입니다. | AppArmor 프로필 | 문자열 |
regex, |
배포, |
활성 프로브 | 컨테이너에서 활성 프로브를 정의하는지 여부입니다. | 활성 프로브 | 부울 | ✕ |
배포, |
준비 프로브 | 컨테이너에서 준비 상태 프로브를 정의하는지 여부입니다. | 준비 프로브 | 부울 | ✕ |
배포, |
섹션: 배포 메타데이터 | |||||
허용되지 않는 주석 | 지정된 환경의 Kubernetes 리소스에 존재할 수 없는 주석입니다. | 허용되지 않는 주석 |
key=value
값은 선택 사항입니다. 값이 없는 경우 "key=" 형식이어야 합니다. |
regex, |
배포, |
필수 라벨 | Kubernetes에 필수 라벨이 있는지 확인합니다. | 필수 라벨 |
key=value
값은 선택 사항입니다. 값이 없는 경우 "key=" 형식이어야 합니다. |
regex, |
배포, |
필수 주석 | Kubernetes에 필요한 주석이 있는지 확인합니다. | 필수 주석 |
key=value
값은 선택 사항입니다. 값이 없는 경우 "key=" 형식이어야 합니다. |
regex, |
배포, |
런타임 클래스 |
배포의 | 런타임 클래스 | 문자열 |
regex, |
배포, |
호스트 네트워크 |
컨테이너가 별도의 네트워크 스택 내에 배치되지 않았음을 나타내는 | 호스트 네트워크 | 부울 | ✕ |
배포, |
호스트 PID | 컨테이너와 호스트 간에 PID(프로세스 ID) 네임스페이스가 격리되었는지 확인합니다. 이를 통해 다른 PID 네임스페이스의 프로세스에 동일한 PID가 있을 수 있습니다. | 호스트 PID | 부울 | ✕ |
배포, |
호스트 IPC | 호스트에서 이름이 지정된 공유 메모리 세그먼트, 세마포어 및 메시지 큐를 분리하는 IPC(POSIX/SysV IPC) 네임스페이스가 컨테이너와 공유되는지 확인합니다. | 호스트 IPC | 부울 | ✕ |
배포, |
네임스페이스 | 배포가 속한 네임스페이스의 이름입니다. | 네임스페이스 | 문자열 |
regex, |
배포, |
replicas |
배포 복제본 수입니다. | replicas |
<, >, Cryostat, >= 또는 아무것도 (이를 의미하는 것과 같습니다)
예: |
NOT, |
배포, |
섹션: 스토리지 | |||||
볼륨 이름 | 스토리지의 이름입니다. | 볼륨 이름 | 문자열 |
regex, |
배포, |
볼륨 소스 |
볼륨이 프로비저닝되는 폼을 나타냅니다. 예를 들면 | 볼륨 소스 | 문자열 |
regex, |
배포, |
볼륨 대상 | 볼륨이 마운트된 경로입니다. | 볼륨 대상 | 문자열 |
regex, |
배포, |
볼륨 유형 | 볼륨 유형입니다. | 볼륨 유형 | 문자열 |
regex, |
배포, |
마운트된 볼륨 writability | 쓰기 가능으로 마운트된 볼륨입니다. | 쓰기 가능한 볼륨 | 부울 | ✕ |
배포, |
Mount Propagation |
컨테이너가 | Mount Propagation |
그 중 하나:
NONE |
NOT, |
배포, |
호스트 마운트 writability | 리소스에서 쓰기 권한이 있는 호스트의 경로를 마운트했습니다. | 쓰기 가능한 호스트 마운트 | 부울 | ✕ |
배포, |
섹션: 네트워킹 | |||||
프로토콜 | 노출된 포트에서 사용하는 TCP 또는 UDP와 같은 프로토콜입니다. | 노출된 포트 프로토콜 | 문자열 |
regex, |
배포, |
포트 | 배포로 노출된 포트 번호입니다. | 노출된 포트 |
<, >, Cryostat, >= 또는 아무것도(즉, 동일한 값)
예: |
NOT, |
배포, |
노출된 노드 포트 | 배포에 의해 외부에 노출되는 포트 번호입니다. | 노출된 노드 포트 | (종료된 포트와 동일합니다.) |
NOT, |
배포, |
포트 노출 | 서비스의 노출 방법(예: 로드 밸런서 또는 노드 포트) | 포트 노출 방법 |
그 중 하나:
설정되지 않음 |
NOT, |
배포, |
예기치 않은 네트워크 흐름 감지 | 감지된 네트워크 트래픽이 배포에 대한 네트워크 기준의 일부인지 확인합니다. | 예기치 않은 네트워크 흐름 감지 | 부울 | ✕ | 런타임 전용 - 네트워크 |
인그레스 네트워크 정책 | ingress Kubernetes 네트워크 정책이 있는지 확인합니다. | Ingress 네트워크 정책 | 부울 |
regex, |
배포, |
송신 네트워크 정책 | 송신 Kubernetes 네트워크 정책이 있는지 확인합니다. | Egress 네트워크 정책 보유 | 부울 |
regex, |
배포, |
섹션: 프로세스 활동 | |||||
프로세스 이름 | 배포에서 실행된 프로세스의 이름입니다. | 프로세스 이름 | 문자열 |
regex, | 런타임 전용 - 프로세스 |
프로세스 Ancestor | 배포에서 실행되는 프로세스의 상위 프로세스의 이름입니다. | 프로세스 Ancestor | 문자열 |
regex, | 런타임 전용 - 프로세스 |
프로세스 인수 | 배포에서 실행되는 프로세스의 명령 인수입니다. | 프로세스 인수 | 문자열 |
regex, | 런타임 전용 - 프로세스 |
프로세스 UID | 배포에서 실행되는 프로세스의 UNIX 사용자 ID입니다. | 프로세스 UID | 정수 |
NOT, | 런타임 전용 - 프로세스 |
예기치 않은 프로세스 실행 | 배포의 잠긴 프로세스 기준선에 프로세스 실행이 나열되지 않은 배포를 확인합니다. | 예기치 않은 프로세스 실행 | 부울 | ✕ | 런타임 전용 - 프로세스 |
섹션: Kubernetes 액세스 | |||||
서비스 계정 | 서비스 계정의 이름입니다. | 서비스 계정 | 문자열 |
regex, |
배포, |
Quarkus 서비스 계정 토큰 | 배포 구성이 서비스 계정 토큰을 자동으로 마운트하는지 확인합니다. | Quarkus 서비스 계정 토큰 | 부울 | ✕ |
배포, |
최소 RBAC 권한 |
배포의 Kubernetes 서비스 계정에 Kubernetes RBAC 권한 수준이 | 최소 RBAC 권한 |
그 중 하나:
DEFAULT | 해당 없음 |
배포, |
섹션: Kubernetes 이벤트 | |||||
Kubernetes 작업 |
| Kubernetes 리소스 |
그 중 하나:
PODS_EXEC |
! | Runtime only - Kubernetes 이벤트 |
Kubernetes 사용자 이름 | 리소스에 액세스한 사용자의 이름입니다. | Kubernetes 사용자 이름 | 하이픈(-) 및 콜론(:)만으로 영숫자 |
regex, | Runtime only - Kubernetes 이벤트 |
Kubernetes 사용자 그룹 | 리소스에 액세스한 사용자가 속한 그룹의 이름입니다. | Kubernetes 사용자 그룹 | 하이픈(-) 및 콜론(:)만으로 영숫자 |
regex, | Runtime only - Kubernetes 이벤트 |
Kubernetes 리소스 유형 | 액세스한 Kubernetes 리소스의 유형입니다. | Kubernetes 리소스 |
그 중 하나:
구성 맵 |
! | 런타임 전용 - 감사 로그 |
Kubernetes API Verb |
| Kubernetes API Verb |
그 중 하나:
생성 |
! | 런타임 전용 - 감사 로그 |
Kubernetes 리소스 이름 | 액세스한 Kubernetes 리소스의 이름입니다. | Kubernetes 리소스 이름 | 하이픈(-) 및 콜론(:)만으로 영숫자 |
regex, | 런타임 전용 - 감사 로그 |
사용자 에이전트 |
사용자가 리소스에 액세스하는 데 사용한 사용자 에이전트입니다. 예를 들면 | 사용자 에이전트 | 문자열 |
regex, | 런타임 전용 - 감사 로그 |
소스 IP 주소 | 사용자가 리소스에 액세스한 IP 주소입니다. | 소스 IP 주소 | IPV4 또는 IPV6 주소 |
regex, | 런타임 전용 - 감사 로그 |
Impersoned User | 서비스 계정 또는 기타 계정으로 가장하는 사용자에 의해 요청이 수행되었는지 확인합니다. | Impersoned User | 부울 | ✕ | 런타임 전용 - 감사 로그 |
6.1.4. 정책 시행 정보
RHACS에서 정책을 구성할 때 보안 정책을 위반하는 조건을 감지할 때 RHACS가 응답하는 방법을 선택할 수 있습니다.
RHACS는 위반이 발견된 단계에 따라 다양한 유형의 정책 시행 또는 위반을 처리하는 작업을 수행할 수 있습니다. 정책 시행을 구성할 때 정책 시행을 구성할 때 여러 단계를 선택할 수 있습니다. 예를 들어 RHACS가 문제에 대한 빌드 파이프라인을 경고하도록 Build 및 Deploy 를 선택할 수 있지만 개발자가 빌드에 성공할 수 있는 경우 배포가 방지됩니다.
빌드 시간 적용 에서는 이미지가 정책의 기준과 일치하는 경우 CI(지속적 통합) 빌드를 실패하도록 RHACS를 구성할 수 있습니다. 즉, 정책을 위반하는 빌드에 조건이 있을 때 예를 들어 심각도 수준의 수정 가능한 CVE가 있고 해당 조건에 대한 정책을 구성한 경우 빌드가 실패해야 합니다. 예를 들어 이미지 또는 배포를 확인하도록 RHACS를 구성하고 CI/CD 파이프라인을 확인하는 통합이 있는 경우 RHACS에서 정책이 실패하는 조건을 감지하면 RHACS API에서 0이 아닌 종료 코드를 반환합니다. 그런 다음 파이프라인은 해당 코드를 사용하여 빌드를 실패합니다.
배포 시간 적용 에서 RHACS는 Kubernetes 승인 컨트롤러 및 OpenShift Container Platform 승인 플러그인과 함께 작동하여 보안 정책을 적용할 수 있습니다. RHACS는 Kubernetes 또는 OpenShift Container Platform이 정책 조건과 일치하는 배포, 데몬 세트 또는 작업과 같은 워크로드를 생성하거나 업데이트하지 않도록 합니다. 이 기능은 빌드에 성공한 경우에도 심각한 문제로 배포를 종료하는 데 유용합니다.
6.1.4.1. 배포 단계에 대한 보안 정책 적용
Red Hat Advanced Cluster Security for Kubernetes는 배포 정책에 대한 두 가지 유형의 보안 정책 시행을 지원합니다. 즉, RHACS 센서의 승인 컨트롤러 및 소프트 시행을 통한 하드 시행입니다. 승인 컨트롤러는 정책을 위반하는 배포의 생성 또는 업데이트를 차단합니다. 승인 컨트롤러가 비활성화되거나 사용할 수 없는 경우 Sensor는 정책을 위반하는 배포의 복제본을 0
으로 축소하여 시행을 수행할 수 있습니다.
정책 적용은 실행 중인 애플리케이션 또는 개발 프로세스에 영향을 미칠 수 있습니다. 시행 옵션을 활성화하기 전에 모든 이해 관계자에게 알리고 자동화된 적용 작업에 대응하는 방법을 계획하십시오.
6.1.4.1.1. 하드 적용
하드 적용은 RHACS 승인 컨트롤러에서 수행합니다. 승인 컨트롤러 적용이 있는 클러스터에서 Kubernetes 또는 OpenShift Container Platform API 서버는 호환되지 않는 모든 배포를 차단합니다. 승인 컨트롤러는 CREATE
및 UPDATE
작업을 차단합니다. 배포 시간 적용이 활성화된 정책을 충족하는 Pod 생성 또는 업데이트 요청이 실패합니다.
Kubernetes 승인 Webhook는 CREATE
,UPDATE
,DELETE
또는 CONNECT
작업만 지원합니다. RHACS 승인 컨트롤러는 CREATE
및 UPDATE
작업만 지원합니다. kubectl 패치
,kubectl set
, kubectl scale
과 같은 작업은 UPDATE 작업이 아닌 PATCH 작업입니다. PATCH 작업은 Kubernetes에서 지원되지 않으므로 RHACS는 PATCH 작업에 대한 적용을 수행할 수 없습니다.
차단 적용의 경우 RHACS의 클러스터에 대해 다음 설정을 활성화해야 합니다.
- 오브젝트 생성: 동적 구성 섹션의 이 토글은 승인 제어 서비스의 동작을 제어합니다. 이 작업이 작동하려면 정적 구성 섹션에서 오브젝트 생성 토글을 수신 대기하려면 Configure Admission Controller Webhook 가 있어야 합니다.
- 오브젝트 업데이트 적용: 동적 구성 섹션의 이 토글은 승인 제어 서비스의 동작을 제어합니다. 이 작업이 작동하려면 정적 구성 섹션의 오브젝트 업데이트 토글을 수신 대기하려면 Configure Admission Controller Webhook 가 있어야 합니다.
정적 구성 설정에서 설정을 변경하는 경우 해당 변경 사항을 적용하려면 보안 클러스터를 재배포해야 합니다.
6.1.4.1.2. 소프트 적용
소프트 적용은 RHACS 센서가 수행합니다. 이러한 적용으로 인해 작업이 시작되지 않습니다. 소프트 적용 기능을 사용하면 센서가 복제본을 0으로 스케일링하고 Pod가 예약되지 않습니다. 이 적용에서는 클러스터에서 준비되지 않은 배포를 사용할 수 있습니다.
소프트 적용이 구성되고 센서가 다운된 경우 RHACS는 적용을 수행할 수 없습니다.
6.1.4.1.3. 네임스페이스 제외
기본적으로 RHACS는 stackrox
,kube-system
, istio-system
네임스페이스와 같은 특정 관리 네임스페이스를 시행 차단에서 제외합니다. 그 이유는 RHACS가 제대로 작동하려면 이러한 네임스페이스의 일부 항목을 배포해야 하기 때문입니다.
6.1.4.1.4. 기존 배포에 적용
기존 배포의 경우 정책 변경으로 인해 Kubernetes 이벤트가 발생하는 경우 다음 기준을 탐지할 때만 적용됩니다. 정책을 변경하는 경우 정책 관리를 선택하고 Reassess all을 클릭하여 정책을 재평가해야 합니다. 이 작업은 들어오는 새 Kubernetes 이벤트가 있는지 여부에 관계없이 기존의 모든 배포에 배포 정책을 적용합니다. 정책을 위반하는 경우 RHACS는 적용을 수행합니다.