roxctl CLI
roxctl CLI
초록
1장. roxctl CLI 시작하기
roxctl
은 Kubernetes용 Red Hat Advanced Cluster Security에서 명령을 실행하기 위한 CLI(명령줄 인터페이스)입니다. 이 항목에서는 roxctl
구문, 작업에 대해 설명하고 몇 가지 일반적인 예제를 제공합니다.
1.1. roxctl CLI 설치
바이너리를 다운로드하여 roxctl
CLI를 설치하거나 컨테이너 이미지에서 roxctl
CLI를 실행할 수 있습니다.
1.1.1. 바이너리를 다운로드하여 roxctl CLI 설치
명령줄 인터페이스에서 roxctl
CLI를 설치하여 Kubernetes용 Red Hat Advanced Cluster Security와 상호 작용할 수 있습니다. Linux, Windows 또는 macOS에 roxctl
을 설치할 수 있습니다.
1.1.1.1. Linux에서 roxctl CLI 설치
다음 절차에 따라 Linux에서 roxctl
CLI 바이너리를 설치할 수 있습니다.
절차
최신 버전의
roxctl
CLI를 다운로드합니다.$ curl -O https://mirror.openshift.com/pub/rhacs/assets/3.73.5/bin/Linux/roxctl
roxctl
바이너리를 실행 가능하게 합니다.$ chmod +x roxctl
roxctl
바이너리를PATH
에 있는 디렉터리에 배치합니다.PATH
를 확인하려면 다음 명령을 실행합니다.$ echo $PATH
검증
설치된
roxctl
버전을 확인합니다.$ roxctl version
1.1.1.2. macOS에 roxctl CLI 설치
다음 절차에 따라 macOS에서 roxctl
CLI 바이너리를 설치할 수 있습니다.
절차
최신 버전의
roxctl
CLI를 다운로드합니다.$ curl -O https://mirror.openshift.com/pub/rhacs/assets/3.73.5/bin/Darwin/roxctl
바이너리에서 모든 확장 속성을 제거합니다.
$ xattr -c roxctl
roxctl
바이너리를 실행 가능하게 합니다.$ chmod +x roxctl
roxctl
바이너리를PATH
에 있는 디렉터리에 배치합니다.PATH
를 확인하려면 다음 명령을 실행합니다.$ echo $PATH
검증
설치된
roxctl
버전을 확인합니다.$ roxctl version
1.1.1.3. Windows에 roxctl CLI 설치
다음 절차에 따라 Windows에서 roxctl
CLI 바이너리를 설치할 수 있습니다.
절차
최신 버전의
roxctl
CLI를 다운로드합니다.$ curl -O https://mirror.openshift.com/pub/rhacs/assets/3.73.5/bin/Windows/roxctl.exe
검증
설치된
roxctl
버전을 확인합니다.$ roxctl version
1.1.2. 컨테이너에서 roxctl CLI 실행
roxctl
클라이언트는 Red Hat Advanced Cluster Security for Kubernetes roxctl
이미지의 기본 진입점입니다. 컨테이너 이미지에서 roxctl
클라이언트를 실행하려면 다음을 수행합니다.
사전 요구 사항
- 먼저 RHACS 포털에서 인증 토큰을 생성해야 합니다.
절차
registry.redhat.io
레지스트리에 로그인합니다.$ docker login registry.redhat.io
roxctl
CLI의 최신 컨테이너 이미지를 가져옵니다.$ docker pull registry.redhat.io/advanced-cluster-security/rhacs-roxctl-rhel8:3.73.5
CLI를 설치한 후 다음 명령을 사용하여 실행할 수 있습니다.
$ docker run -e ROX_API_TOKEN=$ROX_API_TOKEN \ -it registry.redhat.io/advanced-cluster-security/rhacs-roxctl-rhel8:3.73.5 \ -e $ROX_CENTRAL_ADDRESS <command>
Red Hat Advanced Cluster Security Cloud Service에서 중앙 주소가 필요한 roxctl
명령을 사용하는 경우 Red Hat Hybrid Cloud Console의 인스턴스 세부 정보 섹션에 표시된 Central 인스턴스 주소를 사용합니다. 예를 들어 acs-data-ABCD12345.acs.rhcloud.com
대신 acs-ABCD12345.acs.rhcloud.com
을 사용합니다.
검증
설치된
roxctl
버전을 확인합니다.$ docker run -it registry.redhat.io/advanced-cluster-security/rhacs-roxctl-rhel8:3.73.5 version
1.2. roxctl
CLI를 사용하여 인증
인증의 경우 인증 토큰 또는 관리자 암호를 사용할 수 있습니다. 각 토큰에는 특정 액세스 제어 권한이 할당되므로 프로덕션 환경에서 인증 토큰을 사용하는 것이 좋습니다.
다음 단계를 사용하여 인증 토큰을 생성합니다.
절차
- RHACS 포털로 이동합니다.
- 플랫폼 구성 → 통합으로 이동합니다.
- 인증 토큰 카테고리까지 아래로 스크롤하고 API 토큰 을 클릭합니다.
- 토큰 생성을 클릭합니다.
- 토큰의 이름을 입력하고 필요한 액세스 수준을 제공하는 역할(예: 연속 통합 또는 Sensor Creator)을 선택합니다.
생성을 클릭합니다.
중요생성된 토큰을 복사하고 안전하게 저장합니다. 다시는 볼 수 없을 것입니다.
인증 토큰을 생성한 후 ROX_API_TOKEN
변수로 내보냅니다.
$ export ROX_API_TOKEN=<api_token>
토큰을 파일에 저장하고 --token-file
옵션과 함께 사용할 수도 있습니다. 예를 들면 다음과 같습니다.
$ roxctl central debug dump --token-file <token_file>
-
-password
(-p
) 및--token-file
옵션을 동시에 사용할 수 없습니다. -
이미
ROX_API_TOKEN
변수를 설정하고--token-file
옵션을 지정하는 경우roxctl
CLI는 인증을 위해 지정된 토큰 파일을 사용합니다. -
이미
ROX_API_TOKEN
변수를 설정하고--password
옵션을 지정하는 경우roxctl
CLI는 인증에 지정된 암호를 사용합니다.
1.3. roxctl CLI 사용
다음 섹션을 검토하여 CLI로 일반적인 작업을 완료하는 방법을 알아봅니다.
다음 명령을 사용하기 전에 다음 변수를 내보냅니다.
$ export ROX_API_TOKEN=<api_token>
$ export ROX_CENTRAL_ADDRESS=<address>:<port_number>
-
--help
옵션을 사용하여 명령에 대한 자세한 정보를 얻을 수 있습니다. -
Red Hat Advanced Cluster Security Cloud Service에서 중앙 주소가 필요한
roxctl
명령을 사용하는 경우 Red Hat Hybrid Cloud Console의 인스턴스 세부 정보 섹션에 표시된 Central 인스턴스 주소를 사용합니다. 예를 들어acs-data-ABCD12345.acs.rhcloud.com
대신acs-ABCD12345.acs.rhcloud.com
을 사용합니다.
1.3.1. 중앙의 데이터베이스 관리
중앙에는 다음에 대한 정보가 저장됩니다.
- 클러스터에서 관찰되는 활동,
- 통합된 이미지 레지스트리 또는 스캐너에서 검색된 정보
- Red Hat Advanced Cluster Security for Kubernetes 구성
roxctl
CLI를 사용하여 중앙의 데이터베이스를 백업 및 복원할 수 있습니다.
중앙 데이터베이스 백업
다음 명령을 실행하여 중앙의 데이터베이스를 백업합니다.
$ roxctl -e "$ROX_CENTRAL_ADDRESS" central backup
중앙 데이터베이스 복원
다음 명령을 실행하여 중앙의 데이터베이스를 복원합니다.
$ roxctl -e "$ROX_CENTRAL_ADDRESS" central db restore <backup_filename>
1.3.2. 보안 클러스터 관리
Kubernetes 또는 OpenShift Container Platform 클러스터를 보호하려면 Kubernetes 서비스용 Red Hat Advanced Cluster Security를 클러스터에 배포해야 합니다. 플랫폼 구성 → 클러스터 보기로 이동하여 RHACS 포털에서 배포 파일을 생성하거나 roxctl
CLI를 사용할 수 있습니다.
센서 배포 파일 생성
Kubernetes
$ roxctl -e "$ROX_CENTRAL_ADDRESS" sensor generate k8s --name <cluster_name> --central "$ROX_CENTRAL_ADDRESS"
OpenShift Container Platform
$ roxctl -e "$ROX_CENTRAL_ADDRESS" sensor generate openshift --openshift-version <ocp-version> --name <cluster_name> --central "$ROX_CENTRAL_ADDRESS" 1
- 1
openshift-version
옵션의 경우 클러스터의 주요 OpenShift Container Platform 버전 번호를 지정합니다. 예를 들어 OpenShift Container Platform 버전3.x
의 경우3
을 지정하고 OpenShift Container Platform 버전4.x
에4
를 지정합니다.
시스템 아키텍처에 따라 사용할 수 있는 다른 옵션을 보려면 --help
출력을 읽습니다.
Red Hat Advanced Cluster Security for Kubernetes 서비스를 배포하는 클러스터에서 --central
에 제공하는 끝점에 도달할 수 있는지 확인합니다.
HAProxy, AWS Application Load Balancer(ALB) 또는 AWS ELB(Elastic Load Balancing)와 같은 비gRPC 가능 로드 밸런서를 사용하는 경우:
-
WebSocket 보안(
wss
) 프로토콜을 사용합니다.wss
를 사용하려면 주소 앞에wss://
, 주소 뒤에 포트 번호를 추가합니다. 예를 들면 다음과 같습니다.
$ roxctl sensor generate k8s --central wss://stackrox-central.example.com:443
생성 YAML 파일을 사용하여 센서 설치
Sensor 배포 파일을 생성하면 roxctl
에서 작업 디렉터리에 sensor-<cluster_name>
;이라는 디렉터리를 생성합니다. 센서를 설치하는 스크립트는 이 디렉터리에 있습니다. 센서 설치 스크립트를 실행하여 센서를 설치합니다.
$ ./sensor-<cluster_name>/sensor.sh
센서를 설치하는 데 필요한 권한이 없다는 경고가 표시되면 화면의 지침을 따르거나 클러스터 관리자에게 도움을 요청하십시오.
기존 클러스터의 센서 번들 다운로드
다음 명령을 사용하여 클러스터 이름 또는 ID를 지정하여 기존 클러스터의 Sensor 번들을 다운로드합니다.
$ roxctl sensor get-bundle <cluster_name_or_id>
클러스터 통합 삭제
$ roxctl -e "$ROX_CENTRAL_ADDRESS" cluster delete --name=<cluster_name>
클러스터 통합을 삭제하면 클러스터에서 실행되는 Kubernetes 서비스의 Red Hat Advanced Cluster Security는 제거되지 않습니다. 센서 설치 번들에서 delete-sensor.sh
스크립트를 실행하여 제거할 수 있습니다.
1.3.3. 정책 컴플라이언스 확인
roxctl
CLI를 사용하여 정책 준수를 위해 배포 YAML 파일 및 이미지를 확인할 수 있습니다.
출력 형식 구성
배포
검사,이미지 검사 또는
경우 이미지 검사
명령을 사용하여 정책 준수를 확인하는-o
옵션을 사용하여 출력 형식을 지정할 수 있습니다. 이 옵션은 명령의 출력이 터미널에 표시되는 방법을 결정합니다.
명령에 -o
옵션을 추가하고 형식을 json
,table
,csv
, junit
으로 지정하여 출력 형식을 변경할 수 있습니다.
예를 들어 다음 명령은 배포를 확인한 다음 결과를 csv
형식으로 표시합니다.
$ roxctl -e "$ROX_CENTRAL_ADDRESS" \ deployment check --file =<yaml_filename> \ -o csv
출력 형식에 -o
옵션을 지정하지 않으면 다음과 같은 기본 동작이 사용됩니다.
-
배포 확인
및이미지
검사 명령의 형식은표
입니다. -
image scan
명령의 기본 출력 형식은json
입니다. 이전 버전의 CLI와 호환성을 위한 이전 JSON 형식 출력입니다. 새 JSON 형식으로 출력을 가져오려면 형식으로 옵션을-o json
json으로 지정합니다.
출력을 구성하는 데 다양한 옵션을 사용할 수 있습니다. 다음 표에는 옵션 및 사용 가능한 형식이 나열되어 있습니다.
옵션 | 설명 | 형식 |
---|---|---|
| 이 옵션을 사용하여 JSON 출력을 컴팩트 형식으로 표시합니다. |
|
| 사용자 정의 헤더를 지정하려면 이 옵션을 사용합니다. |
|
| 출력에서 헤더 행을 생략하려면 이 옵션을 사용합니다. |
|
| 이 옵션을 사용하여 출력에서 특정 항목을 선택하려면 GJSON 경로 를 지정합니다. 예를 들어 배포 확인의 정책 이름 및 심각도 를 가져오려면 다음 명령을 사용합니다. $ roxctl -e "$ROX_CENTRAL_ADDRESS" \ deployment check --file=<yaml_filename> \ -o table --headers POLICY-NAME,SEVERITY \ --row-jsonpath-expressions="{results.#.violatedPolicies.#.name,results.#.violatedPolicies.#.severity}" |
|
| 이 옵션을 사용하여 동일한 값이 있는 테이블 셀을 병합합니다. |
|
| 헤더 행을 출력에 주석으로 포함하려면 이 옵션을 사용합니다. |
|
| 이 옵션을 사용하여 JUnit 테스트 모음의 이름을 지정합니다. |
|
배포 YAML 파일 확인
다음 명령은 YAML 배포 파일에서 보안 정책에 대한 빌드 시간 및 배포 시간 위반을 확인합니다. 다음 명령을 사용하여 검증합니다.
- 리소스 제한 또는 권한 옵션과 같은 YAML 파일의 구성 옵션
- 구성 요소 또는 취약점과 같이 YAML 파일에 사용되는 이미지의 측면입니다.
$ roxctl -e "$ROX_CENTRAL_ADDRESS" deployment check --file=<yaml_filename>
이미지 확인
다음 명령은 이미지의 보안 정책에 대한 빌드 시간 위반을 확인합니다.
$ roxctl -e "$ROX_CENTRAL_ADDRESS" image check --image=<image_name>
이미지 검사 결과 확인
특정 이미지의 검사 결과를 확인할 수도 있습니다.
다음 명령은 이미지에 있는 구성 요소와 취약점을 JSON 형식으로 반환합니다. 형식은 API 참조에 정의되어 있습니다.
$ roxctl -e "$ROX_CENTRAL_ADDRESS" image scan --image <image_name>
Red Hat Advanced Cluster Security for Kubernetes가 관련 레지스트리 및 스캐너에서 이미지 메타데이터 및 이미지 검사 결과를 다시 가져오려면 --force
옵션을 추가합니다.
특정 이미지 검사 결과를 확인하려면 이미지
리소스에 대한 읽기
및 쓰기
권한이 있는 토큰이 있어야 합니다. 기본 지속적 통합 시스템 역할에는 이미 필요한 권한이 있습니다.
1.3.4. 디버깅 문제
중앙 로그 수준 관리
중앙은 컨테이너 로그에 정보를 저장합니다.
로그 보기
다음을 실행하여 중앙에 대한 컨테이너 로그를 확인할 수 있습니다.
Kubernetes
$ kubectl logs -n stackrox <central_pod>
OpenShift Container Platform
$ oc logs -n stackrox <central_pod>
현재 로그 수준 보기
로그 수준을 변경하여 중앙 로그에서 더 많거나 적은 정보를 볼 수 있습니다. 다음 명령을 실행하여 현재 로그 수준을 확인합니다.
$ roxctl -e "$ROX_CENTRAL_ADDRESS" central debug log
로그 수준 변경
다음 명령을 실행하여 로그 수준을 변경합니다.
$ roxctl -e "$ROX_CENTRAL_ADDRESS" central debug log --level=<log_level> 1
- 1
- <
log_level
>에 대해 허용 가능한 값은Panic
,Fatal
,Error
,Warn
,Info
,Debug
입니다.
디버깅 정보 검색
문제 조사에 대한 디버깅 정보를 수집하려면 다음 명령을 실행합니다.
$ roxctl -e "$ROX_CENTRAL_ADDRESS" central debug dump
1.3.5. 빌드 시간 네트워크 정책 생성
build-time 네트워크 정책 생성기가 roxctl
CLI에 포함되어 있습니다. 빌드 시간 네트워크 정책 생성 기능의 경우 roxctl
CLI는 RHACS Central과 통신할 필요가 없으므로 모든 개발 환경에서 사용할 수 있습니다.
사전 요구 사항
-
build-time 네트워크 정책 생성기는 명령을 실행할 때 지정하는 디렉터리를 재귀적으로 검사합니다. 따라서 명령을 실행하기 전에
Pod
,배포
,ReplicaSet
,Job
,DaemonSet
,StatefulSet
과 같은 서비스 매니페스트, 구성 맵 및 워크로드 매니페스트가 지정된 디렉터리에 YAML 파일로 이미 있어야 합니다. -
kubectl apply -f
명령을 사용하여 이러한 YAML 파일을 있는 그대로 적용할 수 있는지 확인합니다. 빌드 시간 네트워크 정책 생성기는 Helm 스타일 템플릿을 사용하는 파일에서 작동하지 않습니다. 서비스 네트워크 주소가 하드 코딩되지 않았는지 확인합니다. 서비스에 연결해야 하는 모든 워크로드는 서비스 네트워크 주소를 변수로 지정해야 합니다. 워크로드의 리소스 환경 변수 또는 구성 맵에서 이 변수를 지정할 수 있습니다.
서비스 네트워크 주소는 다음 공식 정규식 패턴과 일치해야 합니다.
(http(s)?://)?<svc>(.<ns>(.svc.cluster.local)?)?(:<portNum>)? 1
- 1
- 이 패턴에서, In this pattern,
- <svc>는 서비스 이름입니다.
- <NS>는 서비스를 정의한 네임스페이스입니다.
- <portNum>은 노출된 서비스 포트 번호입니다.
다음은 패턴과 일치하는 몇 가지 예입니다.
-
wordpress-mysql:3306
-
redis-follower.redis.svc.cluster.local:6379
-
redis-leader.redis
-
http://rating-service.
절차
help 명령을 실행하여 build-time 네트워크 정책 생성 기능을 사용할 수 있는지 확인합니다.
$ roxctl generate netpol -h
generate netpol
명령을 사용하여 정책을 생성합니다.$ roxctl generate netpol <folder-path> 1
- 1
- Kubernetes 매니페스트가 있는 폴더의 경로를 지정합니다.
roxctl generate netpol
명령은 다음 옵션을 지원합니다.
| 설명 |
|
|
| 생성된 정책을 대상 폴더에 저장합니다. 정책당 하나의 파일. |
| 생성된 정책을 단일 YAML 파일에 저장하고 병합합니다. |
|
처음 발생한 오류에서 실패합니다. 기본값은 |
| 이미 존재하는 경우 출력 경로를 제거합니다. |
|
경고를 오류로 처리합니다. 기본값은 |
추가 리소스