Azure Container Registryの脆弱性診断を試す

Microsoft Ignite 2019の中で、ACRの脆弱性スキャン機能がパブリックプレビューされました。
これまではサードパーティ製のスキャン製品を使うしか選択肢がなかったので、Azureサービスで脆弱性スキャンできるのは待ちに待った機能です！
先日AWSでもECRの脆弱性スキャン機能がリリースされてましたね。

Azureでは、Security Centerを介してACRの脆弱性スキャンをするようです。
早速試してみましょう。

# Azure Security CenterをStandardプランに切り替える

* Securtiy CenterはFreeプランだったので、これを機にStandardプランに切り替えます。

* Azure Security Centerを開いて[価格と設定]を選択します。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/0a2bd2af-603c-4e59-8800-b3af7a0c5bcb.png)

* サブスクリプションを選択します。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/2491ebab-afde-00ed-d230-af3f48689047.png)

* [Standard]を選択します。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/75867660-174c-3690-fbad-112e05443ab6.png)

* 今回Container Registryを試すので、とりあえずContainer Registryだけ有効にします。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/bcd0df59-0033-7cee-4251-c97d497cfd5c.png)

* ダウングレードしちゃうけどいいの？というメッセージが出ます。今回FreeプランからContainer RegistryだけStandardプランに変えたいのでこの設定でいきます。Freeプランで使えている機能が使えなくなるわけではなかったです。このメッセージはちょっと分かりづらいですね。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/73066a58-3119-ec93-ec02-768a0aee81ef.png)

* [リソースセキュリティの検疫]→[計算とアプリ]を選択します。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/76e0c65d-32a4-4bc7-f9ea-dba741066859.png)

* [コンテナー(プレビュー)]を選択します。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/1934beae-4bdb-bc22-7e67-6638894ab914.png)

* AKSだけ出てきています。Standardプランに切り替えただけでは、Container Registryはまだ画面上でてきません。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/340b5789-61b0-0028-a0f2-36dd99036da1.png)

* ACRに何かイメージをpushします。今回はBasicプランのACRにPushしました。

* もう一度同じ画面を見てみるとACRが追加されています。Pushしないと表示されてこないので注意が必要です。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/e5d9144f-c888-5f7d-1113-8826bb9bf5d5.png)

# 脆弱性診断結果を確認する

* 先ほどの画面から対象のACRを選択します。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/546bc8c8-82ad-696e-18f2-e1b5d4ef97ba.png)

* [Azure Container Registry イメージの脆弱性を修復する必要があります (プレビュー)]という項目があるので選択します。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/529df467-46b1-12b3-cdbc-00b14ba29326.png)

* 見てみると、高 20、中 2 の脆弱性があることが分かります。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/8879259b-32a7-edbe-8756-e043478e5416.png)

* ではその詳細はなに？と思って検出結果を見てみても、[結果がありません]という表示になっています。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/a8504e11-462b-ca3c-8149-0d469be08c49.png)

* どうやらこの画面からは詳細な結果を確認することができないようです。これはちょっと分かりにくいですね。

* セキュリティセンターのトップ画面に戻って、[リソースセキュリティの検疫]→[計算とアプリ]を選択します。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/fc19d1e6-cc85-52bb-61ce-87d4ea72db57.png)

* [概要]が選択されている画面で、[Azure Container Registryイメージの脆弱性を修復する必要があります]を選択します。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/ed466465-e620-4472-bb4a-094763f21ed2.png)

* 先ほどと同じような画面が出てきます。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/472dc818-2aea-1835-4358-2442e79bbfc4.png)

* この画面からだと詳細な脆弱性を確認することができました。（Pushしてから反映されるまで時間が掛かります）  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/009634ff-7c69-8668-0cbe-6bc001cdd74d.png)

* 同じ画面で[影響を受けるリソース]という欄を見てみます。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/6614bddf-00f4-82d3-e83e-7503805f709b.png)

* 異常なリソースとなっているACRを選択します。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/54e242ec-db32-5efe-9a40-79da1c361fd0.png)

* スキャンがされて[異常リポジトリ]と判断されたもの、スキャンがされて[正常なリポジトリ]と判断されたもの、まだスキャンされていないリポジトリと3つに区分されています。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/f98f86f4-8c42-3d22-7f21-126d4e0b8bae.png)

* このリポジトリを選択していくと、脆弱性の詳細を確認することができます。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/c0e2bad4-2096-91bf-3c8e-76f60908a45f.png)

* まっさらなnginxをPushしたところ、正常なリポジトリとして記録されました。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/613f29dd-3db3-b804-d1b5-8ae3c153e9ac.png)

# まとめ
Security Centerを介しての操作に若干の分かりづらさがあるものの、コンテナーイメージのスキャンができるのはやっぱりいいですね。使いづらさはGAされるころには解消されていることを期待します。

価格がちょっと気になるところです。$0.29/Scan という料金設定になってます。
頻繁にPushするような使い方だと、それなりの金額になってしまう可能性があります。
CI/CDでPushまで自動化している環境だと、コスト見積もりはきちんとしたほうがよさそうです。
スキャン対象外ACRとかを設定することはできず、そのサブスクリプションの全ACRが対象となりました。

いまのところ通知機能がないようです。
スキャン結果の詳細をSlack通知したり、RESTAPIで取れるようになると使い勝手が上がりますね。