Red Hat Advanced Cluster Security for Kubernetes(RHACS)のインストール手順

# はじめに
Red Hatは、Kubernetes環境で動作しているコンテナのセキュリティ対策状況を管理する **Red Hat Advanced Cluster Security for Kubernetes(RHACS)** という製品を展開しています。
今回は2回の記事に分けて、**RHACSのインストール**から、**RHACSを使ったサンプルアプリのセキュリティ対策方法**についてまとめていこうと思います。

この記事では、RHACSのインストール手順についてまとめていきます。

* 前編：[Red Hat Advanced Cluster Security for Kubernetes(RHACS)のインストール手順(当記事)](https://qiita.com/shin7446/items/69ba8cb23339031d9e40)
* 後編：[サンプルアプリで始めるRed Hat Advanced Cluster Security for Kubernetes(RHACS)入門](https://qiita.com/shin7446/items/e0aeb58625b4586274f7)



RHACSの概要については、赤帽エンジニアブログの以下のページにて詳しく書かれていますので、一読いただくと作業のイメージがしやすいかと思います。
[RHACS (Red Hat Advanced Cluster Security for Kubernetes) のご紹介](https://rheb.hatenablog.com/entry/2022/03/23/RHACS_%28Red_Hat_Advanced_Cluster_Security_for_Kubernetes%29_%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%81%94%E7%B4%B9%E4%BB%8B)  


# 前提条件
今回はひとつのOpenShiftクラスター上に**RHACS**の管理コンポーネント（**Central**）のデプロイと、管理されるための設定（**SecuredCluster化**)を行います。クラスター情報は以下の通りです。
* OpenShift Container Platform v4.10
* AWSにIPIインストール
* Worker3台(m6i.xlarge)

# RHACS環境の構築
基本的にRHACSのインストールは[公式ドキュメント](https://access.redhat.com/documentation/ja-jp/red_hat_advanced_cluster_security_for_kubernetes/3.70/html/installing/install-ocp-operator#doc-wrapper)の手順を参照いただく形になります。ただドキュメントはテキストベースなので、ここでは画面キャプチャを貼ってもう少しわかりやすく記載していきます。

## RHACS Operatorのインストール
まずはOpenShift webコンソールにログインします。Operatorインストールの操作があるため、**cluster-admin**の権限を持つユーザーにてログインを実施下さい。
![ログイン](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419286/8ecc5448-7c9c-a92b-a1c9-2f1b296930aa.png)

"Operator"→"OpeartorHub"に移動して、検索バーに"cluster security"と入力すると、RHACSのOperatorが表示されますので、選択してください。
![OperatorHub](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419286/17192068-f87f-7c20-013d-6540416bd000.png)

基本的にはデフォルトのままでOKです。今回は執筆時の最新バージョンということで**rhacs-3.70**を選択しています。

![スクリーンショット 2022-07-11 10.39.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419286/1d945466-46f1-1955-1251-f71b0da308db.png)

しばらく待つとOperatorのインストールが終わるので"Operatorの表示"をクリックすると、Operatorの詳細画面に遷移します。
![Operatorの表示](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419286/0b102e0d-8e92-f382-9ceb-029f0e696ac8.png)
![Operatorの詳細](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419286/b0d8aecc-983f-f6c8-57e7-68fb38f62cd0.png)

## RHACS Centralのデプロイ

まずは**Central**コンポーネントのデプロイから始めます。
その前にCentralをデプロイするProjectを作成します。
左上のProject選択画面から"プロジェクトの作成"を選択します。
![Project作成1](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419286/c59913d7-d281-fc91-e865-580ec4be23b3.png)

今回は公式ドキュメントにならって`stackrox`というProjectにします。
![Project作成2](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419286/3eaab805-7834-37be-2339-5e4c5fa4f3b1.png)

すると`stackrox`Projectのインストール済みOperatorとしてRHACSが表示されるので、クリックします。
![インストール済みOperator](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419286/6ce9ac0f-47f5-f20b-c8ea-61fe3bc70a95.png)

先ほどの画面と一緒のようですが。Projectが`stackrox`　に変わっています。この状態で"提供されるAPI"→"Central"→"インスタンスの作成"を選択します。
![RHACSの詳細](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419286/954bc273-e237-46c9-e018-1e8cda058225.png)

こちらも基本的にデフォルトでOKです。そのまま"作成"を選択します。
![Central作成](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419286/cb0f4340-3d54-346d-3073-dda190d52124.png)

これでCentralのデプロイができました。
![Centralのデプロイ完了](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419286/e0d431c4-0643-1d54-2d73-1d6bbac71609.png)

実際にRHACSのコンソールにアクセスしてみましょう。
まずはRHACSコンソールのログイン情報を取得します。
先の画面で"stackrox-central-services"を選択するとCentral概要に遷移します。その画面の右側に**Admin Password Secret Reference**という記載があり、下に`central-htpasswd`というSecretがあるので、クリックします。
![Admin Password Secret Reference](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419286/b158e864-f43f-6b13-f2b4-569ec9600e2e.png)

Secret画面の下の"データ"内にpasswordがあるので、右側の"クリップボードにコピー"をクリックします。
![secret](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419286/5d1f0140-d066-69a3-726c-f7761e622e8c.png)

次にコンソールのURLを取得します。
画面左側の"ルート"を選択すると`central`というリソースの"場所"にコンソールのURLがあるので、こちらをクリックしてアクセスします。
![route](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419286/fd6701c0-c668-72d7-758a-9f83bbf19d73.png)

するとRHACSのログイン画面が表示されるので、ユーザー名に`admin`、パスワードに先ほどコピーしたpasswordをペーストしてログインします。
![ログイン](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419286/2812c223-ed1e-67d8-9e7a-e51b9c7320d6.png)

RHACSのダッシュボードが表示されました。ちなみにまだ**Central**のデプロイしかしておらず、RHACSが管理するクラスターの登録（**SecuredCluster**の設定）をしていないので、CLUSTERSは0の状態です。
![ダッシュボード](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419286/cd598902-d983-b2b9-380a-d297b01712b7.png)

## SecuredClusterの設定
さて、次はRHACSで管理するための設定として、SecuredClusterリソースを作成します。
今回はCentralと同じクラスター上にSecuredClusterを作成し、自身のクラスターを管理対象とします。
まずはSecuredClusterデプロイの前に、Centralとの連携に必要な認証情報を取得します。
RHACSのコンソールから"Integrations"→"Authentication Tokens"→"Cluster Init Bundle"をクリックします。
![Integrations](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419286/1ac863e6-4f40-7c65-f8e4-d55ad891c02f.png)

"Generate Bundle"をクリックします。
![Generate Bundle](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419286/75f3f309-742d-78e3-569f-d6fb1375775e.png)

Init Bundle名を入力して"Generate"をクリックします。
![Init Bundle](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419286/63f82045-f856-ef9a-5a04-00abe61e669b.png)

Init Bundleが生成されました。　最後に"Download Kubernetes secrets file"を選択してSecret yamlファイルを取得します。
この認証情報をこれからデプロイする**SecuredCluster**コンポーネントに渡すことで、クラスターをCentralの管理下に置くことができます。
![Download Init Bundle](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419286/4df2c51e-1d6c-dd94-49d5-38b98d5124b7.png)

次にこのInit BundleのSecretをデプロイします。
今回はCentralと同様の`stackrox`Projectに**SecuredCluster**をデプロイするので、以下のコマンドで先ほど取得したyamlファイルをデプロイします。
```
oc create -f init-bundle-cluster-init-secrets.yaml -n stackrox
```
```出力結果.
secret/sensor-tls created
secret/admission-control-tls created
secret/collector-tls created
```

これで**SecuredCluster**をデプロイする準備が整ったので、Operatorをつかってデプロイします。
OpenShiftコンソールで"Operator"→"インストール済みの Operator"からRHACSを選択し、**Secured Cluster**の"インスタンスの作成"をクリックします。
![Secured Cluster](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419286/d814483f-26a2-eac1-e22c-d40daa479e85.png)

今回はいくつかの設定を修正します。
* **Cluster Name** : RHACS上に表示されるSecured Cluster名になります。今回は`aws-cluster01`としました。
* **Central Endpoint** : Centralのエンドポイントになります。今回は同じクラスター上のため、クラスター内部の名前解決`<centralのservice名>.<Namespace名>.svc:443`が可能です。そのためデフォルト設定では`central.stackrox.svc:443`となります。
![Secured　Cluster作成](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419286/e5ae5b5b-e154-e7f4-3544-e929ff705988.png)

その他はデフォルト設定のまま"作成"をクリックすると、**SecuredCluster**がデプロイされます。

# RHACSの確認
これでRHACSの設定が完了したので、ダッシュボードにアクセスしてみます。
![RHACSダッシュボード](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419286/534afd5d-7f62-8fda-8cfe-f3f7ab8bd7c7.png)



# おわりに
ここではRHACS環境のインストールを実施しました。
[後編の記事](https://qiita.com/shin7446/items/e0aeb58625b4586274f7)では、実際にサンプルアプリを使ってRHACSの基本的な機能を確認します。