roxctl CLI


Red Hat Advanced Cluster Security for Kubernetes 3.73

roxctl CLI

Red Hat OpenShift Documentation Team

초록

이 문서에서는 roxctl 구문 및 작업을 포함하여 roxctl 명령줄 인터페이스를 설치하고 사용하는 방법을 설명합니다. 몇 가지 일반적인 명령 예제를 제공합니다.

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 바이너리를 설치할 수 있습니다.

절차

  1. 최신 버전의 roxctl CLI를 다운로드합니다.

    $ curl -O https://mirror.openshift.com/pub/rhacs/assets/3.73.5/bin/Linux/roxctl
  2. roxctl 바이너리를 실행 가능하게 합니다.

    $ chmod +x roxctl
  3. roxctl 바이너리를 PATH 에 있는 디렉터리에 배치합니다.

    PATH를 확인하려면 다음 명령을 실행합니다.

    $ echo $PATH

검증

  • 설치된 roxctl 버전을 확인합니다.

    $ roxctl version
1.1.1.2. macOS에 roxctl CLI 설치

다음 절차에 따라 macOS에서 roxctl CLI 바이너리를 설치할 수 있습니다.

절차

  1. 최신 버전의 roxctl CLI를 다운로드합니다.

    $ curl -O https://mirror.openshift.com/pub/rhacs/assets/3.73.5/bin/Darwin/roxctl
  2. 바이너리에서 모든 확장 속성을 제거합니다.

    $ xattr -c roxctl
  3. roxctl 바이너리를 실행 가능하게 합니다.

    $ chmod +x roxctl
  4. 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 포털에서 인증 토큰을 생성해야 합니다.

절차

  1. registry.redhat.io 레지스트리에 로그인합니다.

    $ docker login registry.redhat.io
  2. 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를 사용하여 인증

인증의 경우 인증 토큰 또는 관리자 암호를 사용할 수 있습니다. 각 토큰에는 특정 액세스 제어 권한이 할당되므로 프로덕션 환경에서 인증 토큰을 사용하는 것이 좋습니다.

다음 단계를 사용하여 인증 토큰을 생성합니다.

절차

  1. RHACS 포털로 이동합니다.
  2. 플랫폼 구성통합으로 이동합니다.
  3. 인증 토큰 카테고리까지 아래로 스크롤하고 API 토큰 을 클릭합니다.
  4. 토큰 생성을 클릭합니다.
  5. 토큰의 이름을 입력하고 필요한 액세스 수준을 제공하는 역할(예: 연속 통합 또는 Sensor Creator)을 선택합니다.
  6. 생성을 클릭합니다.

    중요

    생성된 토큰을 복사하고 안전하게 저장합니다. 다시는 볼 수 없을 것입니다.

참고

인증 토큰을 생성한 후 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.x4 를 지정합니다.

시스템 아키텍처에 따라 사용할 수 있는 다른 옵션을 보려면 --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&gt;이라는 디렉터리를 생성합니다. 센서를 설치하는 스크립트는 이 디렉터리에 있습니다. 센서 설치 스크립트를 실행하여 센서를 설치합니다.

$ ./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으로 지정합니다.

출력을 구성하는 데 다양한 옵션을 사용할 수 있습니다. 다음 표에는 옵션 및 사용 가능한 형식이 나열되어 있습니다.

옵션설명형식

--compact-output

이 옵션을 사용하여 JSON 출력을 컴팩트 형식으로 표시합니다.

json

--headers

사용자 정의 헤더를 지정하려면 이 옵션을 사용합니다.

테이블CSV

--no-header

출력에서 헤더 행을 생략하려면 이 옵션을 사용합니다.

테이블CSV

--row-jsonpath-expressions

이 옵션을 사용하여 출력에서 특정 항목을 선택하려면 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}"

테이블CSV

--merge-output

이 옵션을 사용하여 동일한 값이 있는 테이블 셀을 병합합니다.

table

headers-as-comment

헤더 행을 출력에 주석으로 포함하려면 이 옵션을 사용합니다.

csv

--junit-suite-name

이 옵션을 사용하여 JUnit 테스트 모음의 이름을 지정합니다.

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과 통신할 필요가 없으므로 모든 개발 환경에서 사용할 수 있습니다.

사전 요구 사항

  1. build-time 네트워크 정책 생성기는 명령을 실행할 때 지정하는 디렉터리를 재귀적으로 검사합니다. 따라서 명령을 실행하기 전에 Pod,배포,ReplicaSet,Job,DaemonSet, StatefulSet 과 같은 서비스 매니페스트, 구성 맵 및 워크로드 매니페스트가 지정된 디렉터리에 YAML 파일로 이미 있어야 합니다.
  2. kubectl apply -f 명령을 사용하여 이러한 YAML 파일을 있는 그대로 적용할 수 있는지 확인합니다. 빌드 시간 네트워크 정책 생성기는 Helm 스타일 템플릿을 사용하는 파일에서 작동하지 않습니다.
  3. 서비스 네트워크 주소가 하드 코딩되지 않았는지 확인합니다. 서비스에 연결해야 하는 모든 워크로드는 서비스 네트워크 주소를 변수로 지정해야 합니다. 워크로드의 리소스 환경 변수 또는 구성 맵에서 이 변수를 지정할 수 있습니다.

  4. 서비스 네트워크 주소는 다음 공식 정규식 패턴과 일치해야 합니다.

    (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.

절차

  1. help 명령을 실행하여 build-time 네트워크 정책 생성 기능을 사용할 수 있는지 확인합니다.

    $ roxctl generate netpol -h
  2. generate netpol 명령을 사용하여 정책을 생성합니다.

    $ roxctl generate netpol <folder-path> 1
    1
    Kubernetes 매니페스트가 있는 폴더의 경로를 지정합니다.

roxctl generate netpol 명령은 다음 옵션을 지원합니다.

옵션

설명

-h, --help

netpol 명령에 대한 도움말 텍스트를 확인합니다.

-d, --output-dir <dir>

생성된 정책을 대상 폴더에 저장합니다. 정책당 하나의 파일.

-f, --output-file <filename>

생성된 정책을 단일 YAML 파일에 저장하고 병합합니다.

--fail

처음 발생한 오류에서 실패합니다. 기본값은 false입니다.

--remove

이미 존재하는 경우 출력 경로를 제거합니다.

--strict

경고를 오류로 처리합니다. 기본값은 false입니다.

법적 공지

Copyright © 2023 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.