7.8. Advanced Security Profiles Operator 작업
고급 작업을 사용하여 메트릭을 활성화하거나 Webhook를 구성하거나 syscall을 제한합니다.
7.8.1. seccomp 프로필에서 허용되는 syscalls 제한 링크 복사링크가 클립보드에 복사되었습니다!
Security Profiles Operator는 기본적으로 seccomp
프로필 의 syscall
을 제한하지 않습니다. spod
구성에서 허용된 syscall
목록을 정의할 수 있습니다.
프로세스
allowedSyscalls
목록을 정의하려면 다음 명령을 실행하여spec
매개변수를 조정합니다.oc -n openshift-security-profiles patch spod spod --type merge \ -p '{"spec":{"allowedSyscalls": ["exit", "exit_group", "futex", "nanosleep"]}}'
$ oc -n openshift-security-profiles patch spod spod --type merge \ -p '{"spec":{"allowedSyscalls": ["exit", "exit_group", "futex", "nanosleep"]}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Operator는 허용된 목록에 정의된 syscall의
하위 집합이 있는 seccomp
프로필만 설치합니다. 이 규칙 세트를 준수하지 않는 모든 프로필이 거부됩니다.
spod
구성에서 허용되는 syscall
목록이 수정되면 Operator는 준수하지 않는 이미 설치된 프로필을 확인하고 자동으로 제거합니다.
7.8.2. 컨테이너 런타임의 기본 syscall 링크 복사링크가 클립보드에 복사되었습니다!
baseProfileName
속성을 사용하여 지정된 런타임에서 컨테이너를 시작하는 데 필요한 최소 syscall
을 설정할 수 있습니다.
프로세스
SeccompProfile
kind 오브젝트를 편집하고baseProfileName: runc-v1.0.0
을spec
필드에 추가합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.8.3. spod 데몬에서 메모리 최적화 활성화 링크 복사링크가 클립보드에 복사되었습니다!
spod
데몬 프로세스 내에서 실행 중인 컨트롤러는 프로파일 레코딩이 활성화된 경우 클러스터에서 사용 가능한 모든 Pod를 감시합니다. 이로 인해 대규모 클러스터에서 메모리 사용량이 매우 높아져 spod
데몬이 메모리가 부족하거나 충돌할 수 있습니다.
충돌을 방지하기 위해 spod
데몬은 프로파일 레코딩용으로 레이블이 지정된 Pod만 캐시 메모리에 로드하도록 구성할 수 있습니다.
SPO 메모리 최적화는 기본적으로 활성화되어 있지 않습니다.
프로세스
다음 명령을 실행하여 메모리 최적화를 활성화합니다.
oc -n openshift-security-profiles patch spod spod --type=merge -p '{"spec":{"enableMemoryOptimization":true}}'
$ oc -n openshift-security-profiles patch spod spod --type=merge -p '{"spec":{"enableMemoryOptimization":true}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod의 보안 프로필을 기록하려면 Pod에
spo.x-k8s.io/enable-recording: "true"
로 레이블이 지정되어야 합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.8.4. 데몬 리소스 요구 사항 사용자 정의 링크 복사링크가 클립보드에 복사되었습니다!
데몬 컨테이너의 기본 리소스 요구 사항은 spod
구성의 daemonResourceRequirements
필드를 사용하여 조정할 수 있습니다.
프로세스
데몬 컨테이너의 메모리 및 cpu 요청 및 제한을 지정하려면 다음 명령을 실행합니다.
oc -n openshift-security-profiles patch spod spod --type merge -p \ '{"spec":{"daemonResourceRequirements": { \ "requests": {"memory": "256Mi", "cpu": "250m"}, \ "limits": {"memory": "512Mi", "cpu": "500m"}}}}'
$ oc -n openshift-security-profiles patch spod spod --type merge -p \ '{"spec":{"daemonResourceRequirements": { \ "requests": {"memory": "256Mi", "cpu": "250m"}, \ "limits": {"memory": "512Mi", "cpu": "500m"}}}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.8.5. spod 데몬 Pod의 사용자 정의 우선순위 클래스 이름 설정 링크 복사링크가 클립보드에 복사되었습니다!
spod
데몬 Pod의 기본 우선순위 클래스 이름은 system-node-critical
로 설정됩니다. priorityClassName
필드에 값을 설정하여 사용자 정의 우선순위 클래스 이름을 spod
구성에 구성할 수 있습니다.
프로세스
다음 명령을 실행하여 우선순위 클래스 이름을 구성합니다.
oc -n openshift-security-profiles patch spod spod --type=merge -p '{"spec":{"priorityClassName":"my-priority-class"}}'
$ oc -n openshift-security-profiles patch spod spod --type=merge -p '{"spec":{"priorityClassName":"my-priority-class"}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
securityprofilesoperatordaemon.openshift-security-profiles.x-k8s.io/spod patched
securityprofilesoperatordaemon.openshift-security-profiles.x-k8s.io/spod patched
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.8.6. 메트릭 사용 링크 복사링크가 클립보드에 복사되었습니다!
openshift-security-profiles
네임스페이스는 kube-rbac-proxy 컨테이너에서 보안되는 메트릭 끝점을 제공합니다. 모든 메트릭은 openshift-security-profiles
네임스페이스 내에서 메트릭
서비스에 의해 노출됩니다.
보안 프로필 운영자에는 클러스터 역할과 해당 바인딩 spo-metrics-client가
포함되어 클러스터 내에서 메트릭을 검색합니다. 사용 가능한 메트릭 경로는 두 가지입니다.
-
metrics.openshift-security-profiles/metrics
: 컨트롤러 런타임 메트릭용 -
metrics.openshift-security-profiles/metrics-spod
: 운영자 데몬 메트릭용
프로세스
메트릭 서비스의 상태를 보려면 다음 명령을 실행하세요.
oc get svc/metrics -n openshift-security-profiles
$ oc get svc/metrics -n openshift-security-profiles
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE metrics ClusterIP 10.0.0.228 <none> 443/TCP 43s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE metrics ClusterIP 10.0.0.228 <none> 443/TCP 43s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 메트릭을 검색하려면 다음 명령을 실행하여
openshift-security-profiles
네임스페이스의 기본ServiceAccount
토큰을 사용하여 서비스 엔드포인트를 쿼리합니다.oc run --rm -i --restart=Never --image=registry.fedoraproject.org/fedora-minimal:latest \ -n openshift-security-profiles metrics-test -- bash -c \ 'curl -ks -H "Authorization: Bearer $(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" https://metrics.openshift-security-profiles/metrics-spod'
$ oc run --rm -i --restart=Never --image=registry.fedoraproject.org/fedora-minimal:latest \ -n openshift-security-profiles metrics-test -- bash -c \ 'curl -ks -H "Authorization: Bearer $(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" https://metrics.openshift-security-profiles/metrics-spod'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
HELP security_profiles_operator_seccomp_profile_total Counter about seccomp profile operations. TYPE security_profiles_operator_seccomp_profile_total counter
# HELP security_profiles_operator_seccomp_profile_total Counter about seccomp profile operations. # TYPE security_profiles_operator_seccomp_profile_total counter security_profiles_operator_seccomp_profile_total{operation="delete"} 1 security_profiles_operator_seccomp_profile_total{operation="update"} 2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다른 네임스페이스에서 메트릭을 검색하려면 다음 명령을 실행하여
ServiceAccount
를spo-metrics-client
ClusterRoleBinding
에 연결합니다.oc get clusterrolebinding spo-metrics-client -o wide
$ oc get clusterrolebinding spo-metrics-client -o wide
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME ROLE AGE USERS GROUPS SERVICEACCOUNTS spo-metrics-client ClusterRole/spo-metrics-client 35m openshift-security-profiles/default
NAME ROLE AGE USERS GROUPS SERVICEACCOUNTS spo-metrics-client ClusterRole/spo-metrics-client 35m openshift-security-profiles/default
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.8.6.1. 컨트롤러-런타임 메트릭 링크 복사링크가 클립보드에 복사되었습니다!
컨트롤러-런타임 메트릭
과 DaemonSet 엔드포인트 메트릭-spod는
기본 메트릭 세트를 제공합니다. 데몬은 추가 메트릭을 제공하는데, 이 메트릭에는 항상 security_profiles_operator_
라는 접두사가 붙습니다.
미터법 키 | 가능한 라벨 | 유형 | 목적 |
---|---|---|---|
|
| 카운터 | seccomp 프로파일 작업의 양. |
|
| 카운터 | seccomp 프로파일 감사 작업의 양. 로그 강화 기능을 활성화해야 합니다. |
|
| 카운터 | seccomp 프로파일 bpf 작업의 양. bpf 레코더를 활성화해야 합니다. |
|
| 카운터 | seccomp 프로파일 오류의 양. |
|
| 카운터 | SELinux 프로필 작업의 양. |
|
| 카운터 | SELinux 프로필 감사 작업의 양. 로그 강화 기능을 활성화해야 합니다. |
|
| 카운터 | SELinux 프로필 오류의 양. |
7.8.7. 로그 강화기 사용 링크 복사링크가 클립보드에 복사되었습니다!
Security Profiles Operator에는 로그 강화 기능이 포함되어 있지만 기본적으로 비활성화되어 있습니다. 로그 강화 컨테이너는 로컬 노드에서 감사 로그를 읽을 수 있는
권한으로 실행됩니다. 로그 인리치더는 호스트 PID 네임스페이스인 hostPID
내에서 실행됩니다.
로그 강화기에는 호스트 프로세스를 읽을 수 있는 권한이 있어야 합니다.
프로세스
다음 명령을 실행하여 로그 강화기를 활성화하도록
spod
구성을 패치합니다.oc -n openshift-security-profiles patch spod spod \ --type=merge -p '{"spec":{"enableLogEnricher":true}}'
$ oc -n openshift-security-profiles patch spod spod \ --type=merge -p '{"spec":{"enableLogEnricher":true}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
securityprofilesoperatordaemon.security-profiles-operator.x-k8s.io/spod patched
securityprofilesoperatordaemon.security-profiles-operator.x-k8s.io/spod patched
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고보안 프로필 운영자는
spod
데몬 세트를 자동으로 다시 배포합니다.다음 명령을 실행하여 감사 로그를 확인하세요.
oc -n openshift-security-profiles logs -f ds/spod log-enricher
$ oc -n openshift-security-profiles logs -f ds/spod log-enricher
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
I0623 12:51:04.257814 1854764 deleg.go:130] setup "msg"="starting component: log-enricher" "buildDate"="1980-01-01T00:00:00Z" "compiler"="gc" "gitCommit"="unknown" "gitTreeState"="clean" "goVersion"="go1.16.2" "platform"="linux/amd64" "version"="0.4.0-dev" I0623 12:51:04.257890 1854764 enricher.go:44] log-enricher "msg"="Starting log-enricher on node: 127.0.0.1" I0623 12:51:04.257898 1854764 enricher.go:46] log-enricher "msg"="Connecting to local GRPC server" I0623 12:51:04.258061 1854764 enricher.go:69] log-enricher "msg"="Reading from file /var/log/audit/audit.log" 2021/06/23 12:51:04 Seeked /var/log/audit/audit.log - &{Offset:0 Whence:2}
I0623 12:51:04.257814 1854764 deleg.go:130] setup "msg"="starting component: log-enricher" "buildDate"="1980-01-01T00:00:00Z" "compiler"="gc" "gitCommit"="unknown" "gitTreeState"="clean" "goVersion"="go1.16.2" "platform"="linux/amd64" "version"="0.4.0-dev" I0623 12:51:04.257890 1854764 enricher.go:44] log-enricher "msg"="Starting log-enricher on node: 127.0.0.1" I0623 12:51:04.257898 1854764 enricher.go:46] log-enricher "msg"="Connecting to local GRPC server" I0623 12:51:04.258061 1854764 enricher.go:69] log-enricher "msg"="Reading from file /var/log/audit/audit.log" 2021/06/23 12:51:04 Seeked /var/log/audit/audit.log - &{Offset:0 Whence:2}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.8.7.1. 로그 인리치러를 사용하여 애플리케이션 추적 링크 복사링크가 클립보드에 복사되었습니다!
Security Profiles Operator 로그 강화 도구를 사용하면 애플리케이션을 추적할 수 있습니다.
프로세스
애플리케이션을 추적하려면
SeccompProfile
로깅 프로필을 만듭니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 프로필을 사용하려면 Pod 객체를 생성하세요.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 로그 강화기 출력을 검토하세요.
oc -n openshift-security-profiles logs -f ds/spod log-enricher
$ oc -n openshift-security-profiles logs -f ds/spod log-enricher
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예 7.1. 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.8.8. 웹훅 구성 링크 복사링크가 클립보드에 복사되었습니다!
프로필 바인딩 및 프로필 기록 개체는 웹훅을 사용할 수 있습니다. 프로필 바인딩 및 기록 개체 구성은 Security Profiles Operator가 관리하는 MutatingWebhookConfiguration
CR입니다.
웹훅 구성을 변경하기 위해 spod
CR은 failurePolicy
, namespaceSelector
, objectSelector
변수를 수정할 수 있는 webhookOptions
필드를 노출합니다. 이를 통해 웹훅을 "소프트 실패"로 설정하거나 네임스페이스의 하위 집합으로 제한할 수 있으므로 웹훅이 실패하더라도 다른 네임스페이스나 리소스는 영향을 받지 않습니다.
프로세스
다음 패치 파일을 만들어
recording.spo.io
웹훅 구성을spo-record=true
로 레이블이 지정된 포드만 녹음하도록 설정합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
spod/spod
인스턴스에 패치를 적용하세요.oc -n openshift-security-profiles patch spod \ spod -p $(cat /tmp/spod-wh.patch) --type=merge
$ oc -n openshift-security-profiles patch spod \ spod -p $(cat /tmp/spod-wh.patch) --type=merge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 결과
MutatingWebhookConfiguration
객체를 보려면 다음 명령을 실행하세요.oc get MutatingWebhookConfiguration \ spo-mutating-webhook-configuration -oyaml
$ oc get MutatingWebhookConfiguration \ spo-mutating-webhook-configuration -oyaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow