roxctl CLI
roxctl CLI
概要
第1章 roxctl CLI のインストール
roxctl
は、Red Hat Advanced Cluster Security for Kubernetes (RHACS) でコマンドを実行するためのコマンドラインインターフェイス (CLI) です。バイナリーをダウンロードして roxctl
CLI をインストールするか、コンテナーイメージから roxctl
CLI を実行できます。
1.1. バイナリーをダウンロードして roxctl CLI をインストール
roxctl
CLI をインストールすると、コマンドラインインターフェイスから RHACS を操作できます。roxctl
は、Linux、Windows、または macOS にインストールできます。
1.1.1. Linux への roxctl CLI のインストール
次の手順を使用して、Linux に roxctl
CLI バイナリーをインストールできます。
手順
roxctl
CLI の最新バージョンをダウンロードします。$ curl -O https://mirror.openshift.com/pub/rhacs/assets/4.2.5/bin/Linux/roxctl
roxctl
バイナリーを実行可能にします。$ chmod +x roxctl
PATH
上にあるディレクトリーにroxctl
バイナリーを配置します。PATH
を確認するには、以下のコマンドを実行します。$ echo $PATH
検証
インストールした
roxctl
のバージョンを確認します。$ roxctl version
1.1.2. macOS への roxctl CLI のインストール
次の手順を使用して、roxctl
CLI バイナリーを macOS にインストールできます。
手順
roxctl
CLI の最新バージョンをダウンロードします。$ curl -O https://mirror.openshift.com/pub/rhacs/assets/4.2.5/bin/Darwin/roxctl
バイナリーからすべての拡張属性を削除します。
$ xattr -c roxctl
roxctl
バイナリーを実行可能にします。$ chmod +x roxctl
PATH
上にあるディレクトリーにroxctl
バイナリーを配置します。PATH
を確認するには、以下のコマンドを実行します。$ echo $PATH
検証
インストールした
roxctl
のバージョンを確認します。$ roxctl version
1.1.3. Windows への roxctl CLI のインストール
次の手順を使用して、roxctl
CLI バイナリーを Windows にインストールできます。
手順
roxctl
CLI の最新バージョンをダウンロードします。$ curl -O https://mirror.openshift.com/pub/rhacs/assets/4.2.5/bin/Windows/roxctl.exe
検証
インストールした
roxctl
のバージョンを確認します。$ roxctl version
1.2. コンテナーから roxctl CLI の実行
roxctl
クライアントは、RHACS roxctl
イメージのデフォルトエントリーポイントです。コンテナーイメージで roxctl
クライアントを実行するには、以下を行います。
前提条件
- はじめに、RHACS ポータルから認証トークンを生成している。
手順
registry.redhat.io
レジストリーにログインします。$ docker login registry.redhat.io
roxctl
CLI の最新のコンテナーイメージをプルします。$ docker pull registry.redhat.io/advanced-cluster-security/rhacs-roxctl-rhel8:4.2.5
CLI をインストールしたら、次のコマンドを使用して CLI を実行できます。
$ docker run -e ROX_API_TOKEN=$ROX_API_TOKEN \ -it registry.redhat.io/advanced-cluster-security/rhacs-roxctl-rhel8:4.2.5 \ -e $ROX_CENTRAL_ADDRESS <command>
Red Hat Advanced Cluster Security Cloud Service (RHACS Cloud Service) で、Central アドレスを必要とする roxctl
コマンドを使用する場合は、Red Hat Hybrid Cloud Console の Instance Details セクションに表示される 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.2.5 version
第2章 roxctl CLI の使用
2.1. 前提条件
以下のコマンドを使用して
ROX_ENDPOINT
環境変数を設定している。$ export ROX_ENDPOINT=<host:port> 1
- 1
ROX_ENDPOINT
環境変数に保存するホストおよびポートの情報。
2.2. 認証情報の取得
次の手順では、roxctl Central whoami
コマンドを使用して、Central で認証ステータスとユーザープロファイルに関する情報を取得する方法について説明します。出力例は、ユーザーのロール、アクセス許可、さまざまな管理機能など、表示されることが予想されるデータを示しています。この手順では、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 Central login
コマンドを使用できます。
API トークンを効果的に使用するには、次のガイドラインに従ってください。
- 継続的インテグレーション (CI) を備えた運用環境で API トークンを使用します。各トークンには特定のアクセス許可が割り当てられ、実行できるアクションを制御できます。さらに、API トークンはブラウザーベースのログインなどの対話型プロセスを必要としないため、自動プロセスに最適です。これらのトークンの有効期間 (TTL) の値は 1 年で、有効期間が長くなり、シームレスな統合と運用効率が向上します。
- 管理者パスワードはテスト目的にのみ使用してください。これを実稼働環境で使用しないでください。
-
roxctl Central login
コマンドは、対話型かつローカルでのみ使用してください。
2.3.1. API トークンの作成
手順
- RHACS ポータルで、Platform Configuration → Integrations に移動します。
- Authentication Tokens カテゴリーまでスクロールし、API Token をクリックします。
- Generate Token をクリックします。
- トークンの名前を入力し、必要なレベルのアクセスを提供するロールを選択します (たとえば、Continuous Integration または Sensor Creator)。
Generate をクリックします。
重要生成されたトークンをコピーして安全に保存します。再度表示することはできません。
2.3.2. API トークンのエクスポートと保存
手順
認証トークンを生成したら、次のコマンドを入力して、
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 は指定されたパスワードを認証に使用します。
2.3.3. 認証プロバイダーを使用した roxctl での認証
Central で認証プロバイダーを設定し、roxctl
CLI を使用してログインプロセスを開始できます。次の手順で説明するように、ROX_ENDPOINT
変数を設定し、roxctl central login
コマンドでログインプロセスを開始し、ブラウザーウィンドウで認証プロバイダーを選択して、roxctl
CLI からトークン情報を取得します。
前提条件
- フラグメントモードまたはクエリーモードの OpenID Connect (OIDC) など、任意の認証プロバイダーを選択しました。
手順
次のコマンドを実行して、
ROX_ENDPOINT
変数を Central のホスト名とポートに設定します。export ROX_ENDPOINT=<central_hostname:port>
次のコマンドを実行して、Central へのログインプロセスを開始します。
$ roxctl central login
-
roxctl
CLI 内では、URL が出力として出力され、ブラウザーウィンドウにリダイレクトされ、使用する認証プロバイダーを選択できます。 認証プロバイダーを使用してログインします。
ログインに成功すると、認証が成功したことがブラウザーウィンドウに表示されるので、ブラウザーウィンドウを閉じることができます。
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
重要設定が保存されるディレクトリーを決定するように環境を設定してください。デフォルトでは、設定は
$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 Cloud Service での roxctl CLI の設定と使用
手順
これらのコマンドを使用する前に、次の変数をエクスポートします。
$ export ROX_API_TOKEN=<api_token>
$ export ROX_ENDPOINT=<address>:<port_number>
-
--help
オプションを使用して、コマンドに関する詳細情報を取得できます。 -
Red Hat Advanced Cluster Security Cloud Service (RHACS Cloud Service) で、Central アドレスを必要とする
roxctl
コマンドを使用する場合は、Red Hat Hybrid Cloud Console の Instance Details セクションに表示される Central インスタンスアドレス を使用します。たとえば、acs-data-ABCD12345.acs.rhcloud.com
の代わりにacs-ABCD12345.acs.rhcloud.com
を使用します。
第3章 セキュリティー保護されたクラスターの管理
Kubernetes または OpenShift Container Platform クラスターを保護するには、Red Hat Advanced Cluster Security for Kubernetes (RHACS) サービスをクラスターにデプロイする必要があります。Platform Configuration → Clusters ビューに移動して RHACS ポータルでデプロイメントファイルを生成するか、roxctl
CLI を使用できます。
3.1. 前提条件
以下のコマンドを使用して
ROX_ENDPOINT
環境変数を設定している。$ export ROX_ENDPOINT=<host:port> 1
- 1
ROX_ENDPOINT
環境変数に保存するホストおよびポートの情報。
3.2. Sensor デプロイメントファイルの生成
Kubernetes システムのファイルの生成
手順
次のコマンドを実行して、Kubernetes クラスターに必要な Sensor 設定を生成し、Central インスタンスに関連付けます。
$ roxctl sensor generate k8s --name <cluster_name> --central "$ROX_ENDPOINT"
OpenShift Container Platform システムのファイルの生成
手順
以下のコマンドを実行して、OpenShift Container Platform クラスターに必要な Sensor 設定を生成し、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 Secure (
wss
) プロトコルを使用します。wss
を使用するには、アドレスの前にwss://
を付けます。 アドレスの後にポート番号を追加します。次に例を示します。
$ roxctl sensor generate k8s --central wss://stackrox-central.example.com:443
3.3. sensor.sh スクリプトを使用した Sensor のインストール
Sensor デプロイメントファイルを生成すると、roxctl
は作業ディレクトリーに sensor-<cluster_name>
というディレクトリーを作成します。Sensor をインストールするスクリプトは、このディレクトリーにあります。
手順
Sensor インストールスクリプトを実行して、Sensor をインストールします。
$ ./sensor-<cluster_name>/sensor.sh
Sensor のインストールに必要な権限がないという警告が表示された場合は、画面の指示に従うか、クラスター管理者に連絡してください。
3.4. 既存のクラスターのSensor バンドルのダウンロード
手順
次のコマンドを実行して、
クラスター名
またはID
を指定して既存のクラスターの Sensor バンドルをダウンロードします。$ roxctl sensor get-bundle <cluster_name_or_id>
3.5. クラスター統合の削除
手順
クラスターを削除する前に、Central から削除するクラスター名が正しいことを確認してください。
$ roxctl cluster delete --name=<cluster_name>
重要インストール方法によっては、クラスター統合を削除しても、クラスター内で実行されている RHACS サービスは削除されません。サービスは、Sensor インストールバンドルから
delete-sensor.sh
スクリプトを実行することで削除できます。
第4章 ポリシーコンプライアンスの確認
roxctl
CLI を使用して、ポリシーに準拠しているかどうかデプロイメント YAML ファイルおよびイメージを確認できます。
4.1. 前提条件
以下のコマンドを使用して
ROX_ENDPOINT
環境変数を設定している。$ export ROX_ENDPOINT=<host:port> 1
- 1
ROX_ENDPOINT
環境変数に保存するホストおよびポートの情報。
4.2. 出力形式の設定
roxctl deployment check
または roxctl image check
コマンドを使用してポリシーへの準拠をチェックする場合、コマンドに -o
オプションを使用し、形式を json
、table
、csv
または junit
として指定することにより、出力形式を指定できます。このオプションは、コマンドの出力が端末にどのように表示されるかを決定します。
たとえば、次のコマンドはデプロイメントをチェックしてから、結果を csv
形式で表示します。
$ roxctl deployment check --file =<yaml_filename> -o csv
出力形式に -o
オプションを指定しない場合は、次のデフォルトの動作が使用されます。
-
deployment check
およびimage check
コマンドの形式はtable
です。 -
imagescan
コマンドのデフォルトの出力形式はjson
です。これは、古いバージョンの CLI との互換性を目的とした古い JSON 形式の出力です。新しい JSON 形式で出力を取得するには、-o json
などのフォーマットでオプションを指定します。トラブルシューティングの目的でデータを収集する場合は、古い JSON 形式の出力を使用します。
出力を設定するためにさまざまなオプションを使用できます。次の表に、オプションとそれらが使用可能な形式を示します。
オプション | 説明 | フォーマット |
---|---|---|
| このオプションを使用して、JSON 出力をコンパクトな形式で表示します。 |
|
| このオプションを使用して、カスタムヘッダーを指定します。 |
|
| このオプションを使用して、出力からヘッダー行を省略します。 |
|
| このオプションを使用して GJSON パス を指定し、出力から特定のアイテムを選択します。たとえば、デプロイメントチェックの ポリシー名 および 重大度 を取得するには、次のコマンドを使用します。 $ roxctl deployment check --file=<yaml_filename> \ -o table --headers POLICY-NAME,SEVERITY \ --row-jsonpath-expressions="{results..violatedPolicies..name,results..violatedPolicies..severity}" |
|
| このオプションを使用して、同じ値を持つテーブルセルを結合します。 |
|
| このオプションを使用して、ヘッダー行をコメントとして出力に含めます。 |
|
| このオプションを使用して、JUnit テストスイートの名前を指定します。 |
|
4.3. デプロイ YAML ファイルの確認
手順
次のコマンドを実行して、YAML デプロイメントファイル内のセキュリティーポリシーのビルド時およびデプロイ時の違反を確認します。
$ roxctl deployment check --file=<yaml_filename>
形式は API リファレンスで定義されています。Red Hat Advanced Cluster Security for Kubernetes (RHACS) で、関連付けられたレジストリーとスキャナーからイメージメタデータおよびイメージスキャン結果を再プルするには、
-force
オプションを追加します。注記特定のイメージスキャン結果を確認するには、
Image
リソースのread
およびwrite
の両方の権限を持つトークンが必要です。デフォルトの 継続的インテグレーション システムのロールには、すでに必要な権限があります。このコマンドは、以下の項目を検証します。
- リソース制限や特権オプションなど、YAML ファイルの設定オプション
- コンポーネントや脆弱性など、YAML ファイルで使用されるイメージの側面
4.4. イメージの確認
手順
次のコマンドを実行して、イメージ内のセキュリティーポリシーのビルド時の違反を確認します。
$ roxctl image check --image=<image_name>
形式は API リファレンスで定義されています。Red Hat Advanced Cluster Security for Kubernetes (RHACS) で、関連付けられたレジストリーとスキャナーからイメージメタデータおよびイメージスキャン結果を再プルするには、
-force
オプションを追加します。注記特定のイメージスキャン結果を確認するには、
Image
リソースのread
およびwrite
の両方の権限を持つトークンが必要です。デフォルトの 継続的インテグレーション システムのロールには、すでに必要な権限があります。
4.5. イメージスキャン結果の確認
特定のイメージのスキャン結果を確認することもできます。
手順
以下のコマンドを実行して、イメージで見つかったコンポーネントおよび脆弱性を JSON 形式で返します。
$ roxctl image scan --image <image_name>
形式は API リファレンスで定義されています。Red Hat Advanced Cluster Security for Kubernetes (RHACS) で、関連付けられたレジストリーとスキャナーからイメージメタデータおよびイメージスキャン結果を再プルするには、
-force
オプションを追加します。注記特定のイメージスキャン結果を確認するには、
Image
リソースのread
およびwrite
の両方の権限を持つトークンが必要です。デフォルトの 継続的インテグレーション システムのロールには、すでに必要な権限があります。
第5章 デバッグの問題
Central は、情報をコンテナーログに保存します。
5.1. 前提条件
以下のコマンドを使用して
ROX_ENDPOINT
環境変数を設定している。$ export ROX_ENDPOINT=<host:port> 1
- 1
ROX_ENDPOINT
環境変数に保存するホストおよびポートの情報。
5.2. ログの表示
Kubernetes
手順
次のコマンドを実行して、Central Pod のログを表示します。
$ kubectl logs -n stackrox <central_pod>
OpenShift Container Platform
手順
次のコマンドを実行して、Central Pod のログを表示します。
$ oc logs -n stackrox <central_pod>
5.3. 現在のログレベルの表示
ログレベルを変更して、Central ログの情報を増減できます。
手順
次のコマンドを実行して、現在のログレベルを表示します。
$ 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 を使用した診断バンドルの生成 の手順に従います。
第6章 ビルド時のネットワークポリシーの生成
ビルド時のネットワークポリシージェネレーターは、roxctl
CLI に含まれています。ビルド時のネットワークポリシー生成機能の場合、roxctl
CLI は RHACS Central と通信する必要がないため、任意の開発環境で使用できます。
6.1. ビルド時のネットワークポリシージェネレーターの使用
ビルド時のネットワークポリシー生成は、テクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat 製品サービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
前提条件
-
ビルド時のネットワークポリシージェネレーターは、コマンドの実行時に指定したディレクトリーを再帰的にスキャンします。したがって、コマンドを実行する前に、サービスマニフェスト、config map、ワークロードマニフェスト (
Pod
、Deployment
、ReplicaSet
、Job
、DaemonSet
、StatefulSet
など) が、指定されたディレクトリーに YAML ファイルとしてすでに存在している必要があります。 -
kubectl apply -f
コマンドを使用して、これらの YAML ファイルをそのまま適用できることを確認します。ビルド時のネットワークポリシージェネレーターは、Helm スタイルのテンプレートを使用するファイルでは機能しません。 サービスネットワークアドレスがハードコーディングされていないことを確認します。サービスに接続する必要があるすべてのワークロードは、サービスネットワークアドレスを変数として指定する必要があります。この変数は、ワークロードのリソース環境変数を使用するか、config map で指定できます。
サービスネットワークアドレスは、次の公式の正規表現パターンに一致する必要があります。
(http(s)?://)?<svc>(.<ns>(.svc.cluster.local)?)?(:<portNum>)? 1
- 1
- このパターンでは、
- <svc> はサービス名
- <ns> はサービスを定義した namespace
- <portNum> は公開されたサービスのポート番号
以下は、パターンに一致するいくつかの例です。
-
wordpress-mysql:3306
-
redis-follower.redis.svc.cluster.local:6379
-
redis-leader.redis
-
http://rating-service.
手順
help コマンドを実行して、ビルド時のネットワークポリシー生成機能が使用可能であることを確認します。
$ roxctl netpol generate -h
netpol generate
コマンドを使用してポリシーを生成します。$ roxctl netpol generate <folder-path> 1
- 1
- Kubernetes マニフェストがあるフォルダーのパスを指定します。
roxctl netpol generate
コマンドは、次のオプションをサポートしています。
| 説明 |
|
|
| 生成されたポリシーをターゲットフォルダーに保存します。ポリシーごとに 1 つのファイルです。 |
| 生成されたポリシーを保存して単一の YAML ファイルにマージします。 |
|
最初に発生したエラーで失敗します。デフォルト値は |
| 出力パスがすでに存在する場合は削除します。 |
|
警告をエラーとして扱います。デフォルト値は |