IBM Cloud Security and Compliance Center(SCC)を触ってみた

# はじめに
IBM Cloud Security and Compliance Center(SCC)がGAされたので、触ってみました。
とはいっても、このサービスで結局何ができるのかがまだよく分からないので、とりあえず[ここのチュートリアル](https://cloud.ibm.com/docs/security-compliance?topic=security-compliance-getting-started&locale=en)を進めてみました。SCCには以下からアクセスできます。
<img width="25%" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/1fa6f154-a2a1-7f09-9294-66954b2ab9ed.png">

なお、既存のIBM CloudのUIとは少し操作感が異なり、その挙動の違いに戸惑うところもありました。SCCは、[IBMが買収したSpanugo](https://japan.zdnet.com/article/35155358/)というサイバーセキュリティー管理ソリューションをベースに作成されているので、それが原因かもしれません。。。

# 全体の流れ

チュートリアルの流れは以下のようになります（図は、[IBM Cloud docsのこのページ](https://cloud.ibm.com/docs/security-compliance?topic=security-compliance-overview#posture-management)から引用）。

- Collecorはスキャンを行うコンポーネントであり、Linux上にDockerイメージとして導入する。任意の場所に複数配置可能。スキャン対象のリソースはCollectorからネットワーク的に到達可能である必要がある。
- Profileは個々に定められたControl（統制・ルール）の集合体である。既にPCI-DSSやISO27001などのProfileが事前定義済みである。本チュートリアルではProfileを新たに作成することはせず、`IBM Cloud Best Practices Controls 1.0`という既存Profileを利用して、スキャン結果との検証・照合を行なう。
- Scopeはスキャン対象の範囲を定義したもの。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/23be3373-3b5e-e812-5de7-2b329363584b.png)



#1. Collector用サーバーの用意と事前構成

最小スペックは以下の通り。また、Internetにアクセスできるように構成しておく必要あり(Outboundのみが必要であり、Inboundの許可は不要）。

- Image: Red Hat Enterprise Linux, CentOS, or Ubuntu
- Profile: cx2-2x4 (2 vCPUs, 4 GB RAM, and 4GBPS)
- Boot Volume: 50 GB disk space

今回はIBM CloudのVPC上にCentOS7を用意し、Public Gatewayを設定してOutboundのみを許可するように構成しておいた。

```shell:CentOS7の最新化
[root@collector ~]# yum -y update

[root@collector ~]# timedatectl set-timezone Asia/Tokyo

[root@collector ~]# reboot

[root@collector ~]# cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)

[root@collector ~]# uname -a
Linux collector 3.10.0-1062.9.1.el7.x86_64 #1 SMP Fri Dec 6 15:49:49 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
```

DocsにはDocker Composeを導入しろと書いている（よって、Dockerも事前に導入して起動しておく必要もある）。

```shell:Dockerの導入と起動
https://docs.docker.com/engine/install/centos/

[root@collector ~]# yum install -y yum-utils

[root@collector ~]# yum-config-manager \
>     --add-repo \
>     https://download.docker.com/linux/centos/docker-ce.repo

[root@collector ~]# yum install docker-ce docker-ce-cli containerd.io

[root@collector ~]# systemctl enable docker

[root@collector ~]# systemctl start docker

[root@collector ~]# docker --version
Docker version 19.03.12, build 48a66213fe
```

```shell:DockerComposeの導入
https://docs.docker.com/compose/install/

[root@collector ~]# curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

[root@collector ~]# chmod +x /usr/local/bin/docker-compose

[root@collector ~]# docker-compose --version
docker-compose version 1.26.2, build eefe0d31
```

#2. IAMでAPI Keyを作成。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/4c74e8f3-edfa-0d68-fed3-326c4473873b.png)

#3. Security and Compliance CenterでCredentialを作成。

Credential Type: IBM Cloud
Purpose: Discovery/Collection
IBM API Key: 前項で作成したAPI Key

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/78d7e2ed-ce82-3aa5-24c8-fb7362e42a2c.png)


#4. Collectorのセットアップ
ドキュメントには"New collector icon"を押せと書いていたが、最初から入力フィールドが設けられているので押す必要はない。Collectorに対する適当な名前と記述を入れて、Typeは`Unrestricted`を選択して登録。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/96ee951a-f099-1232-91f9-7aab89c4aa1f.png)

すると、Registration Keyが発行され、`initiate_collector.sh`がダウンロード可能になる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/490613ad-a5a7-8e0f-064c-6fd4b2d5699f.png)


```shell:collectorの導入
[root@collector ~]# mkdir /root/collector

[root@collector ~]# chmod +x initiate_collector.sh

[root@collector ~]# ./initiate_collector.sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  7702  100  7702    0     0   4255      0  0:00:01  0:00:01 --:--:--  4257
/usr/bin/docker
Docker version 19.03.12, build 48a66213fe
Docker installed, proceed.
/usr/local/bin/docker-compose
docker-compose version 1.26.2, build eefe0d31
Docker-Compose installed, proceed.
 Enter persistent data path from host machine:/root/collector

 Do you wish to do nmap Validation (y/n)? n
Using host path: /root/collector
 Enter Collector Registration Code:<Collector作成時に表示されたRegistration Codeを使う>

@reboot bash -c "ip route get 1 | awk '{print \$NF;exit}' > /root/collector/config/host_address_list.cfg"
Adding yaml conf: /root/collector/config/collector.yaml
Starting watch-collectors       ... done
Creating ASAP-syasudacollector4 ... done
/dev/fd/63: line 281: secreate: command not found
```

エラーで終了するが、チュートリアルとしては先には進めるらしい（障害として認識されているので近日中に修正予定）

Customer Portalでは、以下のように承認待ち状態になっているので、"Approve"ボタンを押下する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/c77b5a7d-a380-0714-db68-b5279218cb3e.png)


そうなると、ステータスが変わり・・・
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/7a55c246-3b1c-30a4-383e-067a9f9a368f.png)


しばらくすると、ステータスがActiveになる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/2004ed2e-1708-2fa0-5be7-0609bcb642a9.png)



#5. Scopeの設定
スキャン対象のスコープを設定する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/cbc84d9c-853b-a707-bef0-5b200830f66d.png)

Resourceの探索が走る。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/88de4c16-6d91-2aae-aea9-94ae5601b4f8.png)

しばらくすると、Resourceが表示される。`Update Scope`を押下して更新。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/6bcedd79-4a3b-3143-c7d7-871df681e05b.png)

#6. Scheduled Scanの設定と結果の確認

- Schedule Scanの作成<br> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/ecb616d6-f489-48b0-6ce4-080937eeb76f.png)
- Profileは`ISO27001`や`GDPR`など色々な監査セットが用意されている。今回は`IBM Cloud Best Practices Controls 1.0`を選択。<br> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/87ba1562-35d1-3145-2a2c-0dfd81200f4e.png)
- スケジュールを設定<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/441a13b0-245f-d882-e625-830f80ea7ddc.png)
- 15分ぐらい待ってみると、Scan結果が出てくる。この結果を選択すると、、、<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/793c40e6-a757-2554-43a3-4eafb7197d32.png)
- グラフ表示される。<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/07dd9fa5-8a4d-84a6-edb2-9283baa8b077.png)
- グラフの該当部分（例えば`Critical`など）をクリックすると、その具体的な内容が下に記載される。<br> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/9e64bbe9-8549-1a06-93ab-8336fe97aa7c.png)
- 例えば一番上の指摘事項である`Ensure IAM does not allow too many many admins per account`の詳細を選択してみると、10人を超えてadmin権限を与えないように説明が出てくる。これが今回の監査に引っかかった原因であることがわかる。<br> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/d92c5410-e844-ac79-33e9-a7a7fd309125.png)
- ダッシュボードも更新された。<br> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/7e1c5728-8ba7-4386-366c-ebb9eb9fd882.png)