AWS Systems Manager と Chef 有償ライセンス:必要なのか?

https://www.creationline.com/tech-blog/30958

上記記事で説明されている通り、今まで完全に無料で使えていたChefは、Chef v15以降はProgress社からライセンスを取得しなくてはいけなくなりました。

本記事ではAWS経由でChefを使う場合にもChefのライセンスを購入する必要があるのかについてまとめます。

AWS Systems Managerを使う場合

AWS公式(リンク)の回答は次の通りです。

capture 2023-08-31 12.37.36.png

つまり、Chefライセンスの購入が必要ということです。 Chef社を買収した米国のProgress社からChefライセンスを事前に購入/取得する必要があります。

AWSはChefライセンス条項に対して責任を負うことはなく、AWS利用ユーザーが自己責任でChefのライセンスを取得する必要があります。

他のサービス経由でChefを使う場合

基本的にAWSを含むすべてのサードパーティ経由でChefを利用する場合も、Chefライセンスの購入が必要になります。

この点を今正しく認識する必要性についてまとめます。

なぜ"今"、Chefライセンスについて考えるのか?

2019年にChefは有償化されました。4年も前のことになります。

企業によっては、今まで通り無料でChefを使い続けているかもしれません。そこにはなんの問題もありません。なぜならChef v14までは従来通りライセンスを取得せずに無償で使い続ける事ができるからです。

しかし、LinuxWindowsなどのサーバーOSのバージョンが上がるにつれて、互換性の問題でChef v14が動作しなくなる環境がでてきます。自然な流れとしてChefのバージョンもv15+に上げていく必要があります。遅かれ早かれChefを使うすべての企業がいずれはChef v15+を使うようになります。

この時に、真剣に考慮すべきライセンスの問題が発生します。


Chef v14の時と同じ感覚で、Chef v15を使ってしまうと、ライセンス違反を犯してしまうことになるのです。

ーーどういうことでしょうか。

故意にライセンス違反を犯す、ということではなく、社内のインフラエンジニアが何も気にせずに、今まで通りにChefを使い続けてしまう危険性があります。Chef v14 までは何の問題もありませんでした。無料で使う事ができていたからです。しかしChef v15以降を使う場合、事前にProgress 社からライセンスを取得する必要があります。Chefのバージョンを気にせずにChefを利用し続けている企業は、重大なリスクがそこに潜んでいることを認識しておく必要があります。

ーー「リスクが潜んでいる」、とは?

Chefのライセンス販売を行っているのは米国のProgress社です。米国の企業であり、ライセンス規約違反に対して強いアクションを取る可能性があります。訴訟問題に発展するリスクがあります。

ーーリスクが放置されているのは、なぜか。

一つには、無断でChefを使い続けることが技術的に可能であることが挙げられます。つまり、ライセンスの取得をせずにChefを利用し続けてしまい、組織ぐるみで知らぬ間にライセンス規約違反を犯してしまう可能性があるのです。

そのためにChefのライセンスについて正しく理解する必要があるのです。

無断で使い続けることができてしまうのか?

できてしまいます。

十分に理解するために、有償化がどのようにして行われているかを知る必要があります。

次のようなターミナル出力をご覧になった事があるでしょうか。 Chef v14では出力されず、Chef v15以降から出力されるようになったものです。初回実行時だけ出力されるものです。

mask@MBP:~$ chef install                                            
+---------------------------------------------+
            Chef License Acceptance

Before you can continue, 3 product licenses
must be accepted. View the license at
https://www.chef.io/end-user-license-agreement/

Licenses that need accepting:
  * Chef Workstation
  * Chef Infra Client
  * Chef InSpec

Do you accept the 3 product licenses (yes/no)?

現場で働くインフラエンジニアの方々は、見たことがある、とお答えになると思います。 この出力に'yes'と入力することでChef v15+を使うことができるようになります。 それは以下の Agreement に同意したことを意味します。

https://www.chef.io/end-user-license-agreement/

この Agreement には次の文言が含まれています。

"IF...YOU INTEND TO USE THE SOFTWARE FOR COMMERCIAL PURPOSES, YOU MUST CONTACT PROGRESS DIRECTLY TO OBTAIN A COMMERCIAL LICENSE FOR THIS SOFTWARE."

つまり、商用目的でChefを利用する場合、Progress社から商用ライセンスの購入を義務付けており、そうした上でChefを使うことに同意することをすべてのChef利用者に課しています。

既に会社としてライセンスを取得済であれば問題にはなりません。 しかし、万が一、エンジニアが勝手に Agreement に同意していることを会社が把握しておらず、ライセンスを取得していない状態でChefを使い続けてしまうなら、無断でソフトウェアを利用していることになり、組織ぐるみのライセンス規約違反を犯してしまうことになってしまうのです。

さらに深刻なこととして、当該Agreementは一度、'yes'と入力してしまうと便宜上2度と出力される事がないために、ライセンス違反に企業が気づくことすらない、ないしは発見が遅れてしまう危険性もあるのです。

どの機能が無料で使えなくなるのか?

基本的にすべてのChef機能が有償になります。 レシピやCookbookをローカルで実行するChef SoloやChef Workstationの利用を含むすべてのChef機能においてライセンスの取得が必要になります。

OpsWorksやState Manager などのAWSが提供するChef関連サービスにおいてもライセンスの取得が必要になります。

ライセンスに関して問い合わせる

社内で利用されているChefのバージョンを把握しChefライセンスについて国内代理店に問い合わせる事ができます。

現状、Chefの技術サポート・コンサルやライセンス販売を国内で行っているのは、以下の1社のみのようです。

https://www.creationline.com/chef#pricing

ゼロベースから60秒で InSpec セキュリティ監査を実行する

## InSpec インストール(推定15秒)
mac:
```
brew install chef/chef/inspec
```

curl使えるOS:
```
curl https://omnitruck.chef.io/install.sh | sudo bash -s -- -P inspec
```

Windows Powershell:
```
. { iwr -useb https://omnitruck.chef.io/install.ps1 } | iex; install -project inspec
```
OR
Windowsインストーラをダウンロード:https://www.chef.io/downloads/tools/inspec

## InSpec実行(推定30秒)

```
$ inspec -v
5.21.29
$ inspec exec https://github.com/dev-sec/ssh-baseline.git -t ssh://automate
(※`git clone`ができる環境で実行し、[automate]の箇所をsshできるターゲットノードに変更)
```

## InSpec実行結果確認(推定15秒)

実行結果の一部抜粋↓↓↓
![capture 2023-07-31 14.53.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352042/60937de8-1a36-d04e-fe4f-28457468b5e0.png)

※今回使用しているテストコードはSSHの設定をスキャンするコード。SSHに関連したセキュリティリスクが57個以上検知されている。テストコードのソースは:https://github.com/dev-sec/ssh-baseline 


以上、スクラッチからInSpecの実行、セキュリティ監査を60秒で行うことができました。


---

##### InSpecに関する補足

InSpecはプロファイルと呼ばれるテストコードに基づいてスキャンを行います。特定のOSのCISベンチマークに沿ったプロファイルは、InSpecを公式にメンテナンスしている __Progress社から提供され__ ます。そのため、テストコードを __自前で用意する必要はありません。__ 将来的にCIS公式の基準が変更される場合、適宜Progress社から更新されたテストコードが配布されます。
また、テストコードは __カスタマイズ可能__ であるため自社ポリシーに合わせて __過不足の調整__ をすることができます。
__*技術サポートとライセンス取得について詳しくは、Progress社販売代理店に[こちら](https://www.creationline.com/contact?utm_content=chef_hlink)よりお問い合わせください。*__ 
(Chef InSpecは、Chefと同様に2019年に無償の商用利用が出来なっています) 

https://www.creationline.com/tech-blog/30958

---

## 60秒以上お時間ある方はこちらへ

https://qiita.com/Gorilucky/items/d9318a368be003fec7e4

InSpecでCISベンチマークスキャンを実行する

###### - __はじめに__
CIS(Center for Internet Security)は、情報セキュリティのガイドラインを提供する非営利団体です。CISベンチマークは、主要なオペレーティングシステムやアプリケーションに対して、セキュリティ設定の基準を定めたものであり、セキュリティコンプライアンスを確保する際の重要な参考資料となっています。1999年に設立され、アメリカ合衆国を拠点として世界中の組織に対してセキュリティのベストプラクティスとガイドラインを提供しています。


InSpecは、CISベンチマークに準拠したセキュリティスキャンを実行する際の非常に強力なツールです。この記事では、InSpecを使用してCISベンチマークに基づいたセキュリティスキャンを実行する方法について詳しく解説します。

※本記事内ではCISを主に扱いますが、STIGに関しても同様のことをInSpecで行うことができます。
>STIG(Security Technical Implementation Guide)は、アメリカ国防総省DoD:Department of Defense)が開発したセキュリティポリシーガイドラインのことです。


---


##### ・ __ステップ1: InSpecのインストール__

下記サイトからInSpecを簡単にダウンロード/インストールすることができます。

 

https://www.chef.io/downloads/tools/inspec

 

##### ・ __ステップ2: テストコードの取得__


InSpecはプロファイルと呼ばれるテストコードに基づいてスキャンを行います。特定のOSのCISベンチマークに沿ったプロファイルは、InSpecを公式にメンテナンスしているProgress社から提供されます。テストコードを自前で用意する必要はありません。将来的にCISの基準が変更される場合、Progress社から更新されたテストコードが配布されます。
また、テストコードはカスタマイズ可能であるため自社ポリシーに合わせて過不足の修正をすることができます。
技術サポートとライセンス取得について詳しくは、Progress社販売代理店に[こちら](https://www.creationline.com/contact?utm_content=chef_hlink)よりお問い合わせください。
(Chef InSpecは、Chefと同様に2019年に無償の商用利用が出来なっています) 

https://www.creationline.com/tech-blog/30958


ご参考までにProgress社が提供するInSpecテストコードの対象OSを一部ご紹介します。
以下は、CISベンチマークレベル1とレベル2に対応しているOSとサービスの一部です。


| OS | スキャン | 自動修正 |
|:-----------|------------:|:------------:|
| Amazon Linux 2       | ◯        | ◯         |
| Alma Linux 8     | ◯      | ◯       |
| CentOS Linux 7/8       | ◯        | ◯         |
| Debian Linux 9         | ◯          | ◯           |
| Oracle Linux 8       | ◯       | ◯       |
| Red Hat Enterprise Linux 6/7/8/9    | ◯     | ◯      |
| Rocky Linux 8       | ◯        | ◯         |
| Ubuntu Linux 18.04 / 20.04    | ◯      | ◯       |
| Windows Server 2012 / R2       | ◯        | ◯         |
| Windows Server 2012– Domain Controller         | ◯          | ◯           |
| Windows Server 2016 – Domain Controller       | ◯       | ◯       |
| Windows Server 2016 – Member Server    | ◯     | ◯      |
| Windows Server 2019 – Domain Controller       | ◯        | ◯         |
| Windows Server 2019 – Member Server     | ◯      | ◯       |
| Windows Server 2022 – Domain Controller       | ◯        | ◯         |
| Windows Server 2022 – Member Server         | ◯          | ◯           |

※全ての対応OSの一覧は[こちら](https://www.chef.io/products/chef-premium-content)

| 対象サービス | スキャン | 自動修正 |
|:-----------|------------:|:------------:|
| Apache Tomcat        | ◯       | ◯       |
| Docker    | ◯     | ◯      |
| MongoDB       | ◯        | ◯         |
| NGINX     | ◯      | ◯       |
| Oracle Database       | ◯        | ◯         |
| PostgresSQL         | ◯          | ◯           |
| VMWare ESXI       | ◯       | ◯       |

※全ての対応サービスの一覧は[こちら](https://www.chef.io/products/chef-premium-content)

上記のテーブルは、CISベンチマークのスキャンと”自動修正”が可能なOSとサービスの一部です。
完成したそれぞれのInSpecテストコードがProgress社から提供されます。

また、”自動修正”機能により、CISに沿わない設定が検知された場合にCISに沿うように自動で修正を行うこと可能です。詳しくは[こちら](https://www.creationline.com/contact?utm_content=chef_hlink)からお問い合わせください。

すべての対象OSとサービスの一覧は[こちら](https://www.chef.io/products/chef-premium-content)のProgress社サイトからご覧いただくことができます。CISに限らず、STIGにも対応しています。

##### ・ __ステップ3: テストの実行__
InSpecプロファイル(テストコード)を取得したら、InSpecを使用してテストを実行します。テスト対象のシステムに対してInSpecプロファイルを適用し、CISベンチマークに準拠しているかどうかを確認します。

様々なInSpecの実行方法がありますが、以下は一般的な実行コマンドです。

```
inspec exec [Progressから提供されるプロファイルor自社のテストコード] -t [ターゲットホスト]
```

テスト結果は、合格したテストケースと不合格なテストケースのリストとして表示されます。不合格のテストケースは、システムのセキュリティ上のリスクを指摘し、改善が必要な項目を示します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352042/3f862ca8-f4e1-7439-82db-de4a3ceb694d.png)


##### ・ __ステップ5: 不合格項目の対処__
テスト結果から不合格項目を特定したら、それらの問題を修正する必要があります。セキュリティ上の脆弱性や不適切な設定を改善して、システムをCISベンチマークに準拠させましょう。

ステップ2の対応OSとサービスについては、Progress社から自動修正コードが適用されるため手動での修正は不要です。


###### ・ __おわりに__
InSpecを使用してCISベンチマークに準拠したセキュリティスキャンを実行することで、システムのセキュリティ強化とコンプライアンス確保が可能となります。適切なテストコードを作成し、不合格項目を修正することで、信頼性の高いセキュアなシステムを構築することができます。

InSpec でインフラ構築自動化を【完成】させる

https://www.chef.io/products/chef-inspec

”Chef InSpec”とは、インフラの構成/設定のテストを自動化するためのフレームワークです。
Serverspecの上位互換にあたり、AnsibleやChefにより構築されたインフラの正常性確認やセキュリティ監査を行うためのツールです。

Serverspecの[開発者 宮下 剛輔氏](https://eh-career.com/engineerhub/entry/2018/01/31/110000)は、インフラテストツールの必要性について次のようにコメントしています。

”構築は自動化したが、テストは手動、だから Serverspecが必要だった”

--

日本IBMなど多くの企業でAnsibleやChefなどのIaaSツールとChef InSpecを連携させ、自動化をで完成させている。

https://www.imagazine.co.jp/feature-ansible-2-automation/

Chefを販売するProgress社も、Chef InSpecとAnsibleの連携させる動画を出している。

https://youtu.be/jtLWpwWm0YM

---

# __InSpecの優位性__:Serverspecとの比較

###### - 開発者 (Reliability)
コミュニティ依存のServerspecは、開発やメンテナンスが停滞しているのに対して、
Chef InSpec は、Chef を買収した[Progress社](https://www.progress.com)による開発が活発に行なわれている。

> Progress Softwareは、世界中に100以上の拠点を持ち、10,000人以上の従業員を擁している。主要な顧客には、Fortune 500企業をはじめ、政府機関、金融機関、医療機関など、さまざまな業界の企業が含まれる。


###### - 豊富なテスト項目 (Usability)
Serverspecのリソース数(テスト可能項目)が、[50(Github)](https://github.com/mizzy/serverspec/tree/master/lib/serverspec/type) と限られているのに対して、
Chef InSpec は[1000+(docs.chef.io)](https://docs.chef.io/inspec/resources/)のリソースが用意されている。ここ数年Serverspecのリソースにほぼ変化が見られない中、Chef InSpecの開発とメンテナンスは[Progress社](https://www.progress.com)により活発に行われている。


###### - マルチプラットフォーム対応 (Scalability)
Serverspecが主にLinuxマシンをターゲットにしているのに対して、
Chef InSpecは一般的なOSやアプリケーションのほぼすべてに対応している。
AIXなどを含むLinux系のすべてのDistroに加えて、Windowsに対しても強力に動作する。
OSやアプリケーションに加えて、AWSGCP、Azureのクラウドアカウントのテスト(CSPM)も高い粒度で行うことができる。

###### - 可視化と視認性 (Visibility)
Serverspecが出力するテスト結果は視認性に課題があるのに対して、Chef InSpecは視認性に優れている。
[Chef InSpec出力例]![capture 2023-07-13 22.35.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352042/545f103e-8870-4feb-2b29-df63763c2102.png)
さらに[Chef Automate UI](https://www.chef.io/products/chef-automate)でインフラ全体の状態をリアルタイムに可視化することができる。テストの失敗を検知しSlack,ServiceNowなどへ通知することが可能になる。
![capture 2023-07-13 22.40.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352042/ae267657-d586-5b08-226a-b929d9993bf3.png)

###### - セキュリティとコンプライアンス (DevSecOps)
CISベンチマークやSTIGに準拠したテストコードが用意されており、InSpecテストを実行することで対象のノードがそれらのセキュリティ基準をどの程度満たしているかをテストすることができる。AnsibleやChefなどのインフラ構築の構成・設定テストを行うと同時にセキュリティとコンプライアンスのテストも実施し、インフラ構築の完全自動化を【完成】させることができる。


###### - Chefとの統合 
Compliance Phaseと呼ばれてるChefの新機能により、インフラ構成管理(IaC)としてChefを使用している場合、Chefの実行の最後にInSpecテストをシームレスに実行することができる。

https://docs.chef.io/chef_compliance_phase/

---

”Chef InSpec”ダウンロードリンク:https://www.chef.io/downloads/tools/inspec

Chef InSpecは、Chefと同様に2019年に無償の商用利用が出来なっています。 

https://www.creationline.com/tech-blog/30958

日本国内での販売代理店は下記の1社のみ。[ライセンス取得用問い合わせ](https://www.creationline.com/contact?utm_content=chef_hlink)

https://www.progress.com/partners/partner-locator/details/creationline?partnerId=0014Q00002Xe2oSQAR