roxctl CLI


Red Hat Advanced Cluster Security for Kubernetes 4.3

roxctl CLI

Red Hat OpenShift Documentation Team

초록

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

1장. roxctl CLI 설치

roxctl 은 RHACS(Red Hat Advanced Cluster Security for Kubernetes)에서 명령을 실행하기 위한 CLI(명령줄 인터페이스)입니다. 바이너리를 다운로드하여 roxctl CLI를 설치하거나 컨테이너 이미지에서 roxctl CLI를 실행할 수 있습니다.

1.1. 바이너리를 다운로드하여 roxctl CLI 설치

명령줄 인터페이스에서 RHACS와 상호 작용하기 위해 roxctl CLI를 설치할 수 있습니다. Linux, Windows 또는 macOS에 roxctl 을 설치할 수 있습니다.

1.1.1. Linux에 roxctl CLI 설치

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

참고

Linux용 roxctl CLI는 amd64,ppc64 les390x 아키텍처에서 사용할 수 있습니다.

프로세스

  1. 대상 운영 체제의 roxctl 아키텍처를 확인합니다.

    $ arch="$(uname -m | sed "s/x86_64//")"; arch="${arch:+-$arch}"
  2. roxctl CLI를 다운로드합니다.

    $ curl -f -o roxctl "https://mirror.openshift.com/pub/rhacs/assets/4.3.8/bin/Linux/roxctl${arch}"
  3. roxctl 바이너리를 실행 가능하게 만듭니다.

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

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

    $ echo $PATH

검증

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

    $ roxctl version

1.1.2. macOS에 roxctl CLI 설치

다음 절차를 사용하여 macOS에 roxctl CLI 바이너리를 설치할 수 있습니다.

참고

macOS용 roxctl CLI는 amd64 아키텍처에서 사용할 수 있습니다.

프로세스

  1. roxctl CLI를 다운로드합니다.

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

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

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

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

    $ echo $PATH

검증

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

    $ roxctl version

1.1.3. Windows에 roxctl CLI 설치

다음 절차를 사용하여 Windows에 roxctl CLI 바이너리를 설치할 수 있습니다.

참고

Windows용 roxctl CLI는 amd64 아키텍처에서 사용할 수 있습니다.

프로세스

  • roxctl CLI를 다운로드합니다.

    $ curl -f -O https://mirror.openshift.com/pub/rhacs/assets/4.3.8/bin/Windows/roxctl.exe

검증

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

    $ roxctl version

1.2. 컨테이너에서 roxctl CLI 실행

roxctl 클라이언트는 RHACS 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:4.3.8

CLI를 설치한 후 다음 명령을 사용하여 실행할 수 있습니다.

$ docker run -e ROX_API_TOKEN=$ROX_API_TOKEN \
  -it registry.redhat.io/advanced-cluster-security/rhacs-roxctl-rhel8:4.3.8 \
  -e $ROX_CENTRAL_ADDRESS <command>
참고

Red Hat Advanced Cluster Security Cloud Service(RHACS Cloud Service)에서 Central 주소가 필요한 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:4.3.8 version

2장. roxctl CLI 사용

2.1. 사전 요구 사항

  • 다음 명령을 사용하여 ROX_ENDPOINT 환경 변수를 구성했습니다.

    $ export ROX_ENDPOINT=<host:port> 1
    1
    ROX_ENDPOINT 환경 변수에 저장하려는 호스트 및 포트 정보입니다.

2.2. 인증 정보 가져오기

다음 절차에서는 roxctl central whoami 명령을 사용하여 Central에서 인증 상태 및 사용자 프로필에 대한 정보를 검색하는 방법을 설명합니다. 예제 출력은 사용자 역할, 액세스 권한 및 다양한 관리 기능을 포함하여 볼 수 있는 데이터를 보여줍니다. 이 단계에서는 Central 내에서 액세스 및 역할을 검토할 수 있습니다.

프로세스

  • 다음 명령을 실행하여 현재 인증 상태 및 중앙에서 사용자 정보를 가져옵니다.

    $ roxctl central whoami

    출력 예

    UserID:
    	    <redacted>
    User name:
    	    <redacted>
    Roles:
     APIToken creator, Admin, Analyst, Continuous Integration, Network Graph Viewer, None, Sensor Creator, Vulnerability Management Approver, Vulnerability Management Requester, Vulnerability Manager, Vulnerability Report Creator
    Access:
      rw Access
      rw Administration
      rw Alert
      rw CVE
      rw Cluster
      rw Compliance
      rw Deployment
      rw DeploymentExtension
      rw Detection
      rw Image
      rw Integration
      rw K8sRole
      rw K8sRoleBinding
      rw K8sSubject
      rw Namespace
      rw NetworkGraph
      rw NetworkPolicy
      rw Node
      rw Secret
      rw ServiceAccount
      rw VulnerabilityManagementApprovals
      rw VulnerabilityManagementRequests
      rw WatchedImage
      rw WorkflowAdministration

    출력을 검토하여 인증 및 사용자 세부 정보가 예상대로 있는지 확인합니다.

2.3. roxctl CLI를 사용하여 인증

인증의 경우 API 토큰, 관리자 암호 또는 roxctl 중앙 로그인 명령을 사용할 수 있습니다.

API 토큰을 효과적으로 사용하려면 다음 지침을 따르십시오.

  • 연속 통합(CI)이 있는 프로덕션 환경에서 API 토큰을 사용합니다. 각 토큰에는 특정 액세스 권한이 할당되어 수행할 수 있는 작업을 제어할 수 있습니다. 또한 API 토큰에는 브라우저 기반 로그인과 같은 대화형 프로세스가 필요하지 않으므로 자동화된 프로세스에 적합합니다. 이 토큰에는 TTL(Time-to-live) 값이 1년이며 원활한 통합 및 운영 효율성을 위한 유효 기간을 더 연장할 수 있습니다.
  • 테스트 목적으로만 관리자 암호를 사용하십시오. 프로덕션 환경에서 사용하지 마십시오.
  • 로컬 대화형 용도로만 roxctl 중앙 로그인 명령을 사용합니다.

2.3.1. API 토큰 생성

프로세스

  1. RHACS 포털에서 플랫폼 구성통합으로 이동합니다.
  2. 인증 토큰 범주로 스크롤한 다음 API 토큰 을 클릭합니다.
  3. 토큰 생성을 클릭합니다.
  4. 토큰 이름을 입력하고 필요한 액세스 수준(예: 지속적 통합 또는 센서생성자)을 제공하는 역할을 선택합니다.
  5. 생성 을 클릭합니다.

    중요

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

2.3.2. API 토큰 내보내기 및 저장

프로세스

  1. 인증 토큰을 생성한 후 다음 명령을 입력하여 ROX_API_TOKEN 변수로 내보냅니다.

    $ export ROX_API_TOKEN=<api_token>
  2. (선택 사항): 토큰을 파일에 저장하고 다음 명령을 입력하여 --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는 인증에 지정된 암호를 사용합니다.

2.3.3. 인증 공급자를 사용하여 roxctl로 인증

Central에서 인증 공급자를 구성하고 roxctl CLI를 사용하여 로그인 프로세스를 시작할 수 있습니다. ROX_ENDPOINT 변수를 설정하고 roxctl central login 명령을 사용하여 로그인 프로세스를 시작하고, 브라우저 창에서 인증 공급자를 선택한 다음, 다음 절차에 설명된 대로 roxctl CLI에서 토큰 정보를 검색합니다.

사전 요구 사항

  • 선택한 OIDC(OpenID Connect)와 조각 또는 쿼리 모드와 같은 인증 공급자를 선택했습니다.

프로세스

  1. 다음 명령을 실행하여 ROX_ENDPOINT 변수를 중앙 호스트 이름 및 포트로 설정합니다.

    export ROX_ENDPOINT=<central_hostname:port>
  2. 다음 명령을 실행하여 Central에 대한 로그인 프로세스를 시작합니다.

    $ roxctl central login
  3. roxctl CLI 내에서 URL이 출력되어 사용할 인증 공급자를 선택할 수 있는 브라우저 창으로 리디렉션됩니다.
  4. 인증 공급자로 로그인합니다.

    성공적으로 로그인한 후 브라우저 창에 인증이 성공했음을 나타내며 브라우저 창을 닫을 수 있습니다.

  5. roxctl CLI는 액세스 토큰, 액세스 토큰 만료 시간, 발행된 경우 새로 고침 토큰과 같은 세부 정보, 이러한 값이 로컬에 저장됨을 알리는 등 토큰 정보를 표시합니다.

    출력 예

    Please complete the authorization flow in the browser with an auth provider of your choice.
    If no browser window opens, please click on the following URL:
            http://127.0.0.1:xxxxx/login
    
    INFO:	Received the following after the authorization flow from Central:
    INFO:	Access token: <redacted> 1
    INFO:	Access token expiration: 2023-04-19 13:58:43 +0000 UTC 2
    INFO:	Refresh token: <redacted> 3
    INFO:	Storing these values under $HOME/.roxctl/login… 4

    1
    액세스 토큰입니다.
    2
    액세스 토큰의 만료 시간입니다.
    3
    새로 고침 토큰입니다.
    4
    액세스 토큰의 값, 액세스 토큰 만료 시간 및 새로 고침 토큰이 로컬로 저장되는 디렉터리입니다.
    중요

    환경을 설정하여 구성이 저장된 디렉터리를 확인합니다. 기본적으로 구성은 $HOME/.roxctl/roxctl-config 디렉터리에 저장됩니다.

    • $ROX_CONFIG_DIR 환경 변수를 설정하면 구성이 $ROX_CONFIG_DIR/roxctl-config 디렉터리에 저장됩니다. 이 옵션은 가장 높은 우선 순위를 갖습니다.
    • $XDG_RUNTIME_DIR 환경 변수를 설정하고 $ROX_CONFIG_DIR 변수가 설정되지 않은 경우 구성은 $XDG_RUNTIME_DIR /roxctl-config 디렉터리에 저장됩니다.
    • $ROX_CONFIG_DIR 또는 $XDG_RUNTIME_DIR 환경 변수를 설정하지 않으면 구성이 $HOME/.roxctl/roxctl-config 디렉터리에 저장됩니다.

2.4. RHACS 클라우드 서비스에서 roxctl CLI 구성 및 사용

프로세스

  • 다음 명령을 실행하여 ROX_API_TOKEN 을 내보냅니다.

    $ export ROX_API_TOKEN=<api_token>
  • 다음 명령을 실행하여 ROX_ENDPOINT 를 내보냅니다.

    $ export ROX_ENDPOINT=<address>:<port_number>
  • --help 옵션을 사용하여 명령에 대한 자세한 정보를 얻을 수 있습니다.
  • Red Hat Advanced Cluster Security Cloud Service(RHACS Cloud Service)에서 Central 주소가 필요한 roxctl 명령을 사용하는 경우 Red Hat Hybrid Cloud Console의 인스턴스 세부 정보 섹션에 표시된 대로 Central 인스턴스 주소를 사용합니다. 예를 들어 acs-data-ABCD12345.acs.rhcloud.com 대신 acs-ABCD12345.acs.rhcloud.com 을 사용합니다.

3장. 보안 클러스터 관리

Kubernetes 또는 OpenShift Container Platform 클러스터를 보호하려면 RHACS(Red Hat Advanced Cluster Security for Kubernetes) 서비스를 클러스터에 배포해야 합니다. 플랫폼 구성 → 클러스터 보기로 이동하거나 roxctl CLI를 사용하여 RHACS 포털에서 배포 파일을 생성할 수 있습니다.

3.1. 사전 요구 사항

  • 다음 명령을 사용하여 ROX_ENDPOINT 환경 변수를 구성했습니다.

    $ export ROX_ENDPOINT=<host:port> 1
    1
    ROX_ENDPOINT 환경 변수에 저장하려는 호스트 및 포트 정보입니다.

3.2. 센서 배포 파일 생성

Kubernetes 시스템의 파일 생성

프로세스

  • 다음 명령을 실행하여 Kubernetes 클러스터에 필요한 센서 구성을 생성하고 Central 인스턴스와 연결합니다.

    $ roxctl sensor generate k8s --name <cluster_name> --central "$ROX_ENDPOINT"
OpenShift Container Platform 시스템의 파일 생성

프로세스

  • 다음 명령을 실행하여 OpenShift Container Platform 클러스터에 필요한 센서 구성을 생성하고 Central 인스턴스와 연결합니다.

    $ roxctl sensor generate openshift --openshift-version <ocp_version> --name <cluster_name> --central "$ROX_ENDPOINT" 1
    1
    --openshift-version 옵션의 경우 클러스터의 주요 OpenShift Container Platform 버전 번호를 지정합니다. 예를 들어 OpenShift Container Platform 버전 3.x 의 경우 3 을 지정하고 OpenShift Container Platform 버전 4.x 의 경우 4 를 지정합니다.

    시스템 아키텍처에 따라 사용해야 할 다른 옵션을 보려면 --help 출력을 읽으십시오.

    --central 에 제공하는 엔드포인트가 Red Hat Advanced Cluster Security for Kubernetes 서비스를 배포하는 클러스터에서 도달할 수 있는지 확인합니다.

    중요

    HAProxy, AWS Application Load Balancer(ALB) 또는 AWS Elastic Load Balancing(ELB)과 같은 비gRPC 지원 로드 밸런서를 사용하는 경우 다음 지침을 따르십시오.

    • WebSocket 보안(wss) 프로토콜을 사용합니다. wss 를 사용하려면 주소 앞에 wss://, 그리고
    • 주소 뒤에 포트 번호를 추가합니다. 예를 들면 다음과 같습니다.

      $ roxctl sensor generate k8s --central wss://stackrox-central.example.com:443

3.3. sensor.sh 스크립트를 사용하여 센서 설치

Sensor 배포 파일을 생성할 때 roxctl 은 작업 디렉터리에 sensor-<cluster_name >이라는 디렉터리를 생성합니다. 센서를 설치하는 스크립트는 이 디렉터리에 있습니다.

프로세스

  • 센서 설치 스크립트를 실행하여 센서를 설치합니다.

    $ ./sensor-<cluster_name>/sensor.sh

    센서를 설치하는 데 필요한 권한이 없다는 경고가 표시되면 화면의 지침을 따르거나 클러스터 관리자에게 도움을 요청하십시오.

3.4. 기존 클러스터의 센서 번들 다운로드

프로세스

  • 다음 명령을 실행하여 클러스터 이름 또는 ID 를 지정하여 기존 클러스터 의 센서 번들을 다운로드합니다.

    $ roxctl sensor get-bundle <cluster_name_or_id>

3.5. 클러스터 통합 삭제

프로세스

  • 클러스터를 삭제하기 전에 Central에서 제거할 올바른 클러스터 이름이 있는지 확인합니다.

    $ roxctl cluster delete --name=<cluster_name>
    중요

    클러스터 통합을 삭제해도 설치 방법에 따라 클러스터에서 실행되는 RHACS 서비스가 제거되지 않습니다. 센서 설치 번들에서 delete-sensor.sh 스크립트를 실행하여 서비스를 제거할 수 있습니다.

4장. 정책 규정 준수 확인

roxctl CLI를 사용하여 배포 YAML 파일 및 이미지에서 정책 준수를 확인할 수 있습니다.

4.1. 사전 요구 사항

  • 다음 명령을 사용하여 ROX_ENDPOINT 환경 변수를 구성했습니다.

    $ export ROX_ENDPOINT=<host:port> 1
    1
    ROX_ENDPOINT 환경 변수에 저장하려는 호스트 및 포트 정보입니다.

4.2. 출력 형식 구성

roxctl 배포 검사 또는 roxctl image 검사 명령을 사용하여 정책 준수를 확인하는 경우 명령에 -o 옵션을 사용하여 출력 형식을 지정하고 형식을 json,테이블,csv 또는 junit 으로 지정할 수 있습니다. 이 옵션은 명령의 출력이 터미널에 표시되는 방식을 결정합니다.

예를 들어 다음 명령은 배포를 확인한 다음 결과를 csv 형식으로 표시합니다.

$ roxctl deployment check --file =<yaml_filename> -o csv
참고

출력 형식에 -o 옵션을 지정하지 않으면 다음과 같은 기본 동작이 사용됩니다.

  • 배포 검사 형식 및 이미지 검사 명령은 테이블입니다.
  • 이미지 검사 명령의 기본 출력 형식은 json 입니다. 이는 이전 버전의 CLI와 호환성을 위해 이전 JSON 형식 출력입니다. 새 JSON 형식으로 출력을 가져오려면 format으로 옵션을 -o json 으로 지정합니다. 문제 해결을 위해 데이터를 수집할 때 이전 JSON 형식 출력을 사용합니다.

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

옵션설명형식

--compact-output

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

json

--headers

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

테이블CSV

--no-header

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

테이블CSV

--row-jsonpath-expressions

이 옵션을 사용하여 출력에서 특정 항목을 선택하려면 GJSON 경로를 지정합니다. 예를 들어 배포 점검의 정책 이름과 심각도 를 가져오려면 다음 명령을 사용합니다.

$ roxctl 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

4.3. 배포 YAML 파일 확인

프로세스

  • 다음 명령을 실행하여 YAML 배포 파일에서 보안 정책의 빌드 시간 및 배포 시간 위반을 확인합니다.

    $ roxctl deployment check --file=<yaml_filename>

    형식은 API 참조에 정의되어 있습니다. RHACS(Red Hat Advanced Cluster Security for Kubernetes)가 관련 레지스트리 및 스캐너에서 이미지 메타데이터 및 이미지 검사 결과를 다시 가져오도록 --force 옵션을 추가합니다.

    참고

    특정 이미지 검사 결과를 확인하려면 이미지 리소스에 대한 읽기쓰기 권한이 모두 있는 토큰이 있어야 합니다. 기본 지속적 통합 시스템 역할에는 이미 필요한 권한이 있습니다.

    이 명령은 다음 항목의 유효성을 검사합니다.

    • 리소스 제한 또는 권한 옵션과 같은 YAML 파일의 구성 옵션
    • 구성 요소 또는 취약점과 같이 YAML 파일에서 사용되는 이미지의 측면

4.4. 이미지 확인

프로세스

  • 다음 명령을 실행하여 이미지에서 보안 정책의 빌드 시간 위반을 확인합니다.

    $ roxctl image check --image=<image_name>

    형식은 API 참조에 정의되어 있습니다. RHACS(Red Hat Advanced Cluster Security for Kubernetes)가 관련 레지스트리 및 스캐너에서 이미지 메타데이터 및 이미지 검사 결과를 다시 가져오도록 --force 옵션을 추가합니다.

    참고

    특정 이미지 검사 결과를 확인하려면 이미지 리소스에 대한 읽기쓰기 권한이 모두 있는 토큰이 있어야 합니다. 기본 지속적 통합 시스템 역할에는 이미 필요한 권한이 있습니다.

추가 리소스

4.5. 이미지 검사 결과 확인

특정 이미지에 대한 검사 결과를 확인할 수도 있습니다.

프로세스

  • 다음 명령을 실행하여 이미지에 있는 구성 요소 및 취약점을 JSON 형식으로 반환합니다.

    $ roxctl image scan --image <image_name>

    형식은 API 참조에 정의되어 있습니다. RHACS(Red Hat Advanced Cluster Security for Kubernetes)가 관련 레지스트리 및 스캐너에서 이미지 메타데이터 및 이미지 검사 결과를 다시 가져오도록 --force 옵션을 추가합니다.

    참고

    특정 이미지 검사 결과를 확인하려면 이미지 리소스에 대한 읽기쓰기 권한이 모두 있는 토큰이 있어야 합니다. 기본 지속적 통합 시스템 역할에는 이미 필요한 권한이 있습니다.

추가 리소스

4.6. roxctl image 명령 개요

특정 이미지에서 실행할 수 있는 명령입니다.

사용법

$ roxctl image [command] [flags]

표 4.1. 사용 가능한 명령
명령설명

확인

이미지에 빌드 시간 정책 위반이 있는지 확인하고 보고합니다.

스캔

지정된 이미지를 스캔하고 검사 결과를 반환합니다.

표 4.2. 옵션
옵션설명

-t,--timeout 기간

요청의 최대 기간을 나타내는 API 요청의 시간 제한을 설정합니다. 기본값은 10m0s 입니다.

4.6.1. 상위 명령에서 상속된 roxctl image 명령 옵션

roxctl image 명령은 상위 roxctl 명령에서 상속된 다음 옵션을 지원합니다.

옵션설명

--CA 문자열

보안 연결을 위한 사용자 정의 CA 인증서 파일 경로를 지정합니다. 또는 ROX_CA_CERT_FILE 환경 변수를 사용하여 파일 경로를 지정할 수 있습니다.

--direct-grpc

연결 성능을 개선하기 위해 --direct-grpc 를 설정합니다. 또는 ROX_DIRECT_GRPC_CLIENT 환경 변수를 true 로 설정하면 직접 gRPC를 활성화할 수 있습니다. 기본값은 false입니다.

-e,--endpoint string

서비스에 연결할 엔드포인트를 설정합니다. 또는 ROX_ENDPOINT 환경 변수를 사용하여 엔드포인트를 설정할 수 있습니다. 기본값은 localhost:8443 입니다.

--force-http1

모든 연결에 대해 강제로 HTTP/1을 사용합니다. 또는 ROX_CLIENT_FORCE_HTTP1 환경 변수를 true 로 설정하여 HTTP/1을 강제로 사용할 수 있습니다. 기본값은 false입니다.

--insecure

비보안 연결 옵션을 활성화합니다. 또는 ROX_INSECURE_CLIENT 환경 변수를 true 로 설정하면 비보안 연결 옵션을 활성화할 수 있습니다. 기본값은 false입니다.

--insecure-skip-tls-verify

TLS 인증서 검증을 건너뜁니다. 또는 ROX_INSECURE_CLIENT_SKIP_TLS_VERIFY 환경 변수를 true 로 설정하면 TLS 인증서 검증을 건너뛸 수 있습니다. 기본값은 false입니다.

--no-color

색상 출력을 비활성화합니다. 또는 ROX_NO_COLOR 환경 변수를 true 로 설정하면 색상 출력을 비활성화할 수 있습니다. 기본값은 false입니다.

-p,--password 문자열

기본 인증의 암호를 지정합니다. 또는 ROX_ADMIN_PASSWORD 환경 변수를 사용하여 암호를 설정할 수 있습니다.

--plaintext

암호화되지 않은 연결을 사용합니다. 또는 ROX_PLAINTEXT 환경 변수를 true 로 설정하면 암호화되지 않은 연결을 활성화할 수 있습니다. 기본값은 false입니다.

-s,--server-name 문자열

SNI에 사용할 TLS 서버 이름을 설정합니다. 또는 ROX_SERVER_NAME 환경 변수를 사용하여 서버 이름을 설정할 수 있습니다.

--token-file 문자열

인증을 위해 지정된 파일에 제공된 API 토큰을 사용합니다. 또는 ROX_API_TOKEN 환경 변수를 사용하여 토큰을 설정할 수 있습니다.

참고

이러한 옵션은 roxctl image 명령의 모든 하위 명령에 적용됩니다.

4.6.2. roxctl 이미지 검사

지정된 이미지를 스캔하고 검사 결과를 반환합니다.

사용법

$ roxctl image scan [flags]

표 4.3. 옵션
옵션설명

--cluster 문자열

이미지 검사를 위임할 클러스터 이름 또는 ID를 지정합니다.

--compact-output

JSON 출력을 컴팩트 형식으로 출력합니다. 기본값은 false입니다.

-f, --force

중앙의 캐시를 무시하고 스캐너에서 새로 다시 가져옵니다. 기본값은 false입니다.

--headers 문자열

테이블 형식 출력에 출력할 헤더를 지정합니다. 기본값은 COMPONENT , VERSION ,CVE,SEVERITY, LINK 입니다.

--headers-as-comments

CSV 테이블 형식 출력에서 헤더를 주석으로 출력합니다. 기본값은 false입니다.

- I ,--image 문자열

이미지 이름 및 검사에 대한 참조를 지정합니다. 예를 들어 nginx:latest 또는 nginx@sha256:…​.

-a,--include-sno Cryostated

검사 결과에 sno Cryostated 및 unsnoounceed CVE를 포함합니다. 기본값은 false입니다.

--merge-output

표 형식 출력에서 중복 셀을 병합합니다. 기본값은 true입니다.

--no-header

테이블 형식 출력에 대한 헤더를 출력하지 마십시오. 기본값은 false입니다.

-o,--output 문자열

출력 형식을 지정합니다. 출력 형식에는 ,csv,json, sarif 가 포함됩니다.

-r,--retries int

오류로 종료하기 전에 재시도 횟수를 지정합니다. 기본값은 3입니다.

-d,--retry-delay int

재시도 횟수를 초 단위로 대기하도록 시간을 설정합니다. 기본값은 3입니다.

--row-jsonpath-expressions string

JSON 오브젝트에서 행을 생성하려면 JSON 경로 표현식을 지정합니다. 자세한 내용은 roxctl image scan --help 명령을 실행합니다.

4.6.3. roxctl 이미지 검사

이미지에 빌드 시간 정책 위반이 있는지 확인하고 보고합니다.

사용법

$ roxctl image check [flags]

표 4.4. 옵션
옵션설명

-c,--categories 문자열

실행할 정책 카테고리 목록입니다. 기본적으로 모든 정책 범주가 사용됩니다.

--cluster 문자열

평가 컨텍스트로 사용할 클러스터 이름 또는 ID를 정의합니다.

--compact-output

JSON 출력을 컴팩트 형식으로 출력합니다. 기본값은 false입니다.

-f, --force

이미지의 중앙 캐시를 무시하고 스캐너에서 새 가져오기를 강제 적용합니다. 기본값은 false입니다.

--headers 문자열

표 형식 출력에 출력할 헤더를 정의합니다. 기본값은 POLICY,SEVERITY,BREAKS BUILD,DESCRIPTION ,VIOLATION, REMEDIATION 입니다.

--headers-as-comments

CSV 테이블 형식 출력에서 헤더를 주석으로 출력합니다. 기본값은 false입니다.

- I ,--image 문자열

이미지 이름 및 참조를 지정합니다. 예를 들면 nginx:latest 또는 nginx@sha256:…​ 입니다.

--JUnit-suite-name 문자열

JUnit 테스트 모음의 이름을 설정합니다. 기본값은 image-check 입니다.

--merge-output

표 형식 출력에서 중복 셀을 병합합니다. 기본값은 false입니다.

--no-header

테이블 형식 출력에 대한 헤더를 출력하지 마십시오. 기본값은 false입니다.

-o,--output 문자열

출력 형식을 선택합니다. 출력 형식에는 junit,sarif,table,csv, json 이 포함됩니다. 기본값은 table 입니다.

-r,--retries int

오류로 종료하기 전에 재시도 횟수를 설정합니다. 기본값은 3입니다.

-d,--retry-delay int

재시도 횟수를 초 단위로 대기하도록 시간을 설정합니다. 기본값은 3입니다.

--row-jsonpath-expressions string

JSON 경로 표현식을 사용하여 JSON 오브젝트에서 행을 생성합니다. 자세한 내용은 roxctl image check --help 명령을 실행합니다.

--send-notifications

위반 시 알림을 보낼지 여부를 정의합니다. 기본값은 false입니다.

5장. 디버깅 문제

중앙에서는 컨테이너 로그에 정보를 저장합니다.

5.1. 사전 요구 사항

  • 다음 명령을 사용하여 ROX_ENDPOINT 환경 변수를 구성했습니다.

    $ export ROX_ENDPOINT=<host:port> 1
    1
    ROX_ENDPOINT 환경 변수에 저장하려는 호스트 및 포트 정보입니다.

5.2. 로그 보기

oc 또는 kubectl 명령을 사용하여 중앙 Pod의 로그를 볼 수 있습니다.

프로세스

  • kubectl 을 사용하여 중앙 Pod의 로그를 보려면 다음 명령을 실행합니다.

    $ kubectl logs -n stackrox <central_pod>
  • oc 를 사용하여 중앙 Pod의 로그를 보려면 다음 명령을 실행합니다.

    $ oc logs -n stackrox <central_pod>

5.3. 현재 로그 수준 보기

로그 수준을 변경하여 중앙 로그에서 자세한 정보를 확인할 수 있습니다.

프로세스

  • 다음 명령을 실행하여 현재 로그 수준을 확인합니다.

    $ roxctl central debug log

5.4. 로그 수준 변경

프로세스

  • 다음 명령을 실행하여 로그 수준을 변경합니다.

    $ roxctl central debug log --level=<log_level> 1
    1
    < log_level >에 허용되는 값은 Panic,Fatal,Error,warn,Info, Debug 입니다.

5.5. 디버깅 정보 검색

프로세스

  • 다음 명령을 실행하여 문제 조사를 위한 디버깅 정보를 수집합니다.

    $ roxctl central debug dump
  • RHACS 관리자 암호 또는 API 토큰 및 중앙 주소를 사용하여 진단 번들을 생성하려면 roxctl CLI를 사용하여 진단 번들 생성 절차를 따르십시오.

5.6. roxctl central debug 명령 개요

Central 서비스를 디버깅합니다.

사용법

$ roxctl central debug [flags]

5.6.1. 상위 명령에서 상속된 roxctl 중앙 디버그 명령 옵션

roxctl central debug 명령은 상위 roxctl 명령에서 상속된 다음 옵션을 지원합니다.

옵션설명

--CA 문자열

보안 연결을 위한 사용자 정의 CA 인증서 파일 경로를 지정합니다. 또는 ROX_CA_CERT_FILE 환경 변수를 사용하여 파일 경로를 지정할 수 있습니다.

--direct-grpc

연결 성능을 개선하기 위해 --direct-grpc 를 설정합니다. 또는 ROX_DIRECT_GRPC_CLIENT 환경 변수를 true 로 설정하면 직접 gRPC를 활성화할 수 있습니다. 기본값은 false입니다.

-e,--endpoint string

서비스에 연결할 엔드포인트를 설정합니다. 또는 ROX_ENDPOINT 환경 변수를 사용하여 엔드포인트를 설정할 수 있습니다. 기본값은 localhost:8443 입니다.

--force-http1

모든 연결에 대해 강제로 HTTP/1을 사용합니다. 또는 ROX_CLIENT_FORCE_HTTP1 환경 변수를 true 로 설정하여 HTTP/1을 강제로 사용할 수 있습니다. 기본값은 false입니다.

--insecure

비보안 연결 옵션을 활성화합니다. 또는 ROX_INSECURE_CLIENT 환경 변수를 true 로 설정하면 비보안 연결 옵션을 활성화할 수 있습니다. 기본값은 false입니다.

--insecure-skip-tls-verify

TLS 인증서 검증을 건너뜁니다. 또는 ROX_INSECURE_CLIENT_SKIP_TLS_VERIFY 환경 변수를 true 로 설정하면 TLS 인증서 검증을 건너뛸 수 있습니다. 기본값은 false입니다.

--no-color

색상 출력을 비활성화합니다. 또는 ROX_NO_COLOR 환경 변수를 true 로 설정하면 색상 출력을 비활성화할 수 있습니다. 기본값은 false입니다.

-p,--password 문자열

기본 인증의 암호를 지정합니다. 또는 ROX_ADMIN_PASSWORD 환경 변수를 사용하여 암호를 설정할 수 있습니다.

--plaintext

암호화되지 않은 연결을 사용합니다. 또는 ROX_PLAINTEXT 환경 변수를 true 로 설정하면 암호화되지 않은 연결을 활성화할 수 있습니다. 기본값은 false입니다.

-s,--server-name 문자열

SNI에 사용할 TLS 서버 이름을 설정합니다. 또는 ROX_SERVER_NAME 환경 변수를 사용하여 서버 이름을 설정할 수 있습니다.

--token-file 문자열

인증을 위해 지정된 파일에 제공된 API 토큰을 사용합니다. 또는 ROX_API_TOKEN 환경 변수를 사용하여 토큰을 설정할 수 있습니다.

참고

이러한 옵션은 roxctl central debug 명령의 모든 하위 명령에 적용됩니다.

5.6.2. roxctl central debug db

데이터베이스 디버깅을 제어합니다.

사용법

$ roxctl central debug db [flags]

표 5.1. 옵션
옵션설명

-t,--timeout 기간

요청의 최대 기간을 나타내는 API 요청의 시간 제한을 지정합니다. 기본값은 1m0s 입니다.

5.6.3. roxctl 중앙 디버그 로그

현재 로그 수준을 검색합니다.

사용법

$ roxctl central debug log [flags]

표 5.2. 옵션
옵션설명

-l,--level 문자열

모듈을 설정할 로그 수준을 지정합니다. 유효한 값에는 Debug,Info, warn,Error,Panic, Fatal 가 있습니다.

-m,--modules 문자열

명령을 적용할 모듈을 지정합니다.

--retry-timeout 기간

API 요청을 다시 시도한 후 타임아웃을 지정합니다. 값이 0이면 다시 시도하지 않고 전체 요청 기간이 대기됩니다. 기본값은 20s 입니다.

-t,--timeout 기간

API 요청에 대한 시간 제한을 지정합니다. 이는 요청의 최대 기간입니다. 기본값은 1m0s 입니다.

5.6.4. roxctl 중앙 디버그 덤프

Central에 대한 디버그 정보가 포함된 번들을 다운로드합니다.

사용법

$ roxctl central debug dump [flags]

표 5.3. 옵션
옵션설명

--logs

true 로 설정하면 로그가 중앙 덤프에 포함됩니다. 기본값은 false입니다.

--output-dir 문자열

번들 콘텐츠의 출력 디렉터리를 지정합니다. 기본값은 현재 디렉터리 내에서 자동으로 생성된 디렉터리 이름입니다.

-t,--timeout 기간

API 요청에 대한 시간 제한을 지정합니다. 이는 요청의 최대 기간입니다. 기본값은 5m0s 입니다.

5.6.5. roxctl central debug db stats

중앙 데이터베이스의 통계를 제어합니다.

사용법

$ roxctl central debug db stats [flags]

5.6.6. roxctl central debug authz-trace

디버깅을 위해 Central에서 권한 부여 추적을 활성화하거나 비활성화합니다.

사용법

$ roxctl central debug authz-trace [flags]

표 5.4. 옵션
옵션설명

-t,--timeout 기간

요청의 최대 기간을 나타내는 API 요청의 시간 제한을 지정합니다. 기본값은 20m0s 입니다.

5.6.7. roxctl central debug db stats reset

중앙 데이터베이스의 통계를 재설정합니다.

사용법

$ roxctl central debug db stats reset [flags]

5.6.8. roxctl central debug download-diagnostics

플랫폼에 대한 진단 정보의 스냅샷이 포함된 번들을 다운로드합니다.

사용법

$ roxctl central debug download-diagnostics [flags]

표 5.5. 옵션
옵션설명

--clusters 문자열

로그를 수집하려는 센서 클러스터의 쉼표로 구분된 목록을 지정합니다.

--output-dir 문자열

진단 번들을 저장할 출력 디렉터리를 지정합니다.

--since string

센서 클러스터에서 로그를 수집할 타임스탬프를 지정합니다.

-t,--timeout 기간

요청의 최대 기간을 지정하는 API 요청의 시간 제한을 지정합니다. 기본값은 5m0s 입니다.

6장. 빌드 시간 네트워크 정책 생성

build-time 네트워크 정책 생성기는 roxctl CLI에 포함되어 있습니다. 빌드 시간 네트워크 정책 생성 기능의 경우 roxctl CLI는 RHACS Central과 통신할 필요가 없으므로 모든 개발 환경에서 사용할 수 있습니다.

6.1. 빌드 시간 네트워크 정책 생성기 사용

중요

빌드 시간 네트워크 정책 생성은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

사전 요구 사항

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

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

    (http(s)?://)?<svc>(.<ns>(.svc.cluster.local)?)?(:<portNum>)? 1
    1
    이 패턴에서는,
    • <svc>는 서비스 이름입니다.
    • <NS>는 서비스를 정의한 네임스페이스입니다.
    • <portNum>은 노출된 서비스 포트 번호입니다.

    다음은 패턴과 일치하는 몇 가지 예입니다.

    • wordpress-mysql:3306
    • redis-follower.redis.svc.cluster.local:6379
    • redis-leader.redis
    • http://rating-service.

프로세스

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

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

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

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

옵션

설명

-h, --help

netpol 명령의 도움말 텍스트를 봅니다.

-d, --output-dir <dir>

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

-f, --output-file <filename>

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

--fail

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

--remove

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

--strict

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

7장. roxctl CLI를 사용하여 이미지 스캔

roxctl CLI를 사용하여 OpenShift Container Platform 통합 이미지 레지스트리와 같은 클러스터 로컬 레지스트리를 포함하여 이미지 레지스트리에 저장된 이미지를 스캔할 수 있습니다.

7.1. 원격 클러스터를 사용하여 이미지 스캔

위임된 검사 구성에 적절한 클러스터를 지정하거나 다음 절차에 설명된 클러스터 매개 변수를 통해 원격 클러스터를 사용하여 클러스터 로컬 레지스트리에서 이미지를 스캔할 수 있습니다.

중요

위임된 이미지 스캔을 구성하는 방법에 대한 자세한 내용은 위임 된 이미지 검사 구성을 참조하십시오.

프로세스

  • 다음 명령을 실행하여 원격 클러스터에서 지정된 이미지를 스캔합니다.

    $ roxctl image scan \
      --image=<image_registry>/<image_name> \1
      --cluster=<cluster_detail> \2
      [flags] 3
    1
    < image_registry > 의 경우 이미지가 있는 레지스트리를 지정합니다(예: image-registry.openshift-image-registry.svc:5000/ ). & lt;image_name >의 경우 검사할 이미지 이름을 지정합니다(예: default/image-stream:latest ).
    2
    & lt;cluster_detail& gt;의 경우 원격 클러스터의 이름 또는 ID를 지정합니다. 예를 들어 remote 라는 이름을 지정합니다.
    3
    선택 사항: [flags] 의 경우 매개변수를 지정하여 명령 동작을 수정할 수 있습니다.

    선택적 매개변수에 대한 자세한 내용은 roxctl image scan 명령 옵션을 참조하십시오.

    출력 예

    {
      "Id": "sha256:3f439d7d71adb0a0c8e05257c091236ab00c6343bc44388d091450ff58664bf9", 1
      "name": { 2
        "registry": "image-registry.openshift-image-registry.svc:5000", 3
        "remote": "default/image-stream", 4
        "tag": "latest", 5
        "fullName": "image-registry.openshift-image-registry.svc:5000/default/image-stream:latest" 6
      },
    [...]

    1
    이미지의 지문 역할을 하는 이미지의 고유 식별자입니다. 이미지의 무결성과 신뢰성을 보장하는 데 도움이 됩니다.
    2
    이미지에 대한 특정 세부 정보를 포함합니다.
    3
    이미지가 저장되는 이미지 레지스트리의 위치입니다.
    4
    이미지의 원격 경로입니다.
    5
    이 이미지와 연결된 버전 또는 태그입니다.
    6
    레지스트리, 원격 경로 및 태그를 결합하여 이미지의 전체 이름입니다.

7.2. roxctl image scan 명령 옵션

roxctl image scan 명령은 다음 옵션을 지원합니다.

옵션설명

--cluster 문자열

이미지 스캔을 특정 클러스터에 위임합니다.

--compact-output

JSON 출력을 컴팩트 형식으로 출력합니다. 기본값은 false입니다.

-f, --force

검사에 대한 중앙의 캐시를 무시하고 스캐너에서 새로 다시 가져옵니다. 기본값은 false입니다.

--headers 문자열

테이블 형식으로 헤더를 인쇄합니다. 기본값에는 COMPONENT , VERSION,CVE,SEVERITY, LINK 가 포함됩니다.

--headers-as-comments

CSV 테이블 형식 출력에서 헤더를 주석으로 출력합니다. 기본값은 false입니다.

-h, --help

roxctl image scan 명령의 도움말 텍스트를 봅니다.

- I ,--image 문자열

검사할 이미지 이름 및 참조를 지정합니다.

-a,--include-sno Cryostated

sno Cryostated 및 nononoounceed 일반적인 취약점 및 노출 (CVE)을 모두 반환합니다. 기본값은 false입니다.

--merge-output

표 형식 출력에서 중복 셀을 병합합니다. 기본값은 true입니다.

--no-header

테이블 형식 형식의 헤더를 출력하지 마십시오. 기본값은 false입니다.

-o,--output 문자열

출력 형식을 지정합니다. 형식을 선택하여 결과 표시를 사용자 지정할 수 있습니다. 형식에는 테이블,CSV,JSONSARIF 가 포함됩니다.

-r,--retries int

오류와 함께 작업이 중단되기 전에 재시도 횟수를 설정합니다. 기본값은 3입니다.

-d,--retry-delay int

재시도 횟수를 기다리도록 시간을 초 단위로 설정합니다. 기본값은 3입니다.

--row-jsonpath-expressions string

JSON 경로 표현식을 사용하여 JSON 오브젝트에서 행을 생성합니다. 자세한 내용은 roxctl image scan --help 명령을 실행합니다.

법적 공지

Copyright © 2024 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.