[和訳] Chef Audit Mode: CISベンチマーク #getchef #serverspec
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
本稿はChef Audit Mode: CIS Benchmarks (2015/04/09)の和訳です。
本日、audit-cisの最初のバージョンをリリースしました。これは「Audit Modeのみ」のCookbookで、特定のプラットフォームに対してCenter for Internet Security (CIS)ベンチマークに適合するか確認するためにNodeで実行します。このリリースではCentOS 7、CISベンチマークバージョン1.0.0を対象としています。
CISベンチマークは、さまざまなOS、プラットフォームディストリビューション、よく使われるアプリケーションに対するコンセンサスに基いたセキュリティの要求です。スコアリングシステムと、2つのレベルを持っています。このCookbookは、ChefのAudit Modeのcontrolに実装されている「audit」を用いて、control groupとベンチマークのさまざまなセクションに対するcontrolを実装しています。例えば、CentOS 7における1.2.2ベンチマークは「gpgcheckがグローバルで有効になっているかを検証する」ことです。システムが適合しているか監査するには、ベンチマークでは次のようになります。
% grep ^gpgcheck /etc/yum.conf
gpgcheck=1
Audit Modeで実装すると、control_groupブロック内の、さらにcontrolブロック内の、itブロックになります。
control_group '1 Install Updates, Patches and Additional Security Software' do
control '1.2 Configure Software Updates' do
it '1.2.2 Verify that gpgcheck is Globally Activated' do
expect(file('/etc/yum.conf').content).to match(/^gpgcheck=1/)
end
end
end
ChefのAudit Modeって一体何なんですか?
Chef Audit Modeとは、バージョン12.1 (訳注: 和訳)で導入されたChefの機能です。新しいChef Recipe DSLメソッドとして、Serverspec (とRSpec)を使う監査・検証のためのcontrol_groupとcontrolを実装しました。Chef Audit Modeは、Chef Analyticsとともにさらなる検証のため、通知を送るためにも使えます。
Audit Modeについてより詳しくは、Chefドキュメントを読んでください。
Chef Analyticsを使う必要はありますか?
いいえ。Audit ModeはChef Analyticsと関係がありますが、Audit Modeを使うのにChef Analyticsは必要ありません。実際、audit-cis Cookbookはテスト目的のための隔離環境で動作できるようにtest-kitchenの設定を持っています。
しかし、Audit Modeの恩恵を最大に受けるには、Chef Analyticsを推奨します。検証に失敗したことを無視するAnalyticsルールを実装できますし、特定の興味あるものだけ通知することもできます。
どのプラットフォームをサポートしますか?
audit-cisの最初のリリースでは、centos7-v100 RecipeでCentOS 7をサポートしています。今後、このRecipeのようにより一般的な、例えば古いCentOSやUbuntu、Windowsといったプラットフォームを追加していく予定です。
どうしてDRY (Don't Repeat Yourself)ではないのですか?
これらのRecipeを読んで、多くの繰り返しがあることに気がついているでしょう。これには2つの大きな理由があります。第一に、個々でプラットフォームとバージョンが異なるからです。CISはそれぞれ別々のベンチマークを提供しています。第二に、セキュリティやコンプライアンスの観点では、監査はとても規範的で、とても注意深い言い回しや言語を要求し、ドキュメントとして明確でなければならないからです。保守の最中もよりよく動くのであれば、その結果としてAudit Modeのcontrolが明確に読んで理解できるより高品質なものであると感じるでしょう。
どうやってこのCookbookを使うのですか?
検証したいプラットフォームとベンチマークのバージョンのRecipeをNodeのrun_listに含めます。例えば、recipe[audit-cis::centos7-100]はCentOS 7のCISベンチマークのバージョン1.0.0を検証するためのものです。
そして、/etc/chef/client.rbでAudit Modeを有効にします。:enabledとするとChefはNodeを収束してからcontrolを実行します。:audit_onlyとするとChefはどのResourceも収束しようとせず、controlのみを実行します。
audit_mode :enabled # または、
audit_mode :audit_only
chef-clientの引数に--audit-modeを指定することもできます。例えば、chef-client --audit-mode enabledやchef-client --audit-mode audit-onlyとします。
test-kitchenの設定である.kitchen.ymlが参考になるでしょう。
どうしてこんなにたくさん失敗するのですか?
簡単に言うと、ベースOSイメージやインストールがデフォルトではCISベンチマークに適合しないからです。例えば、CentOS 7ベンチマークはインストールメディアからキックスタートでベースインストールしたCentOS 7の一部ではない、/var、/var/log、/var/log/auditのような特定のパーティションをファイルシステムとしてマウントしようとします。あるサイトは、サービスの実行を無効にすることを推奨するようなビジネス上の理由で、特定の失敗を受け入れるリスクを許容します。このような場合にChef Analyticsは有用で、個々のセキュリティポリシーに関連したcontrolに反するルールをフィルタできます。
多くの失敗が起きる他の理由としては、デフォルトで「レベル2」プロファイルの適用が有効になっているからです。これは数少ない(最初のリリースでは2つしかない)Cookbookで挙動を操作するAttributeです。
controlとテストを条件的に含めることができますか?
いいえ。
すべてのベンチマークがAudit Modeに実装されています。controlやテストをフィルタするには、ローカルのセキュリティポリシー(受け入れられるリスク)を定めるChef Analyticsのルールを使ってください。
どうすれば失敗した検査を修正できますか?
Cookbookに修正手順を実行する独自のRecipeを実装する必要があります。このCookbookのRecipeは「Audit Modeのみ」、つまり、何のResourceも収束しません。Supermarketにある何らかのCookbookは修正の目的に有用です。しかし、個々のサイトや組織に特化したセキュリティポリシーがほぼ確実に必須となります。
どうしてこのCookbookは修正Recipeを持っていないのですか?
あらゆるセキュリティポリシーの検査や実装を行えるほどの余裕がないからです。このベンチマークにおけるあらゆる単一の検査に対する修正手順を実装するRecipeを書いたとして、あるタスクやあるトピック特有のCookbookによって取り扱われている別のトピックについてたくさん失敗するでしょう。例えば、セクション6.2「SSHの設定」はopenssh Cookbookによって取り扱われています。
将来のテスト目的で、テストCookbookの実装を予定しています。これはプラットフォームとプラットフォームバージョンとCISベンチマークに特化したRecipeで、ベースBoxを使ってtest-kitchenでクリーンな実行を行うためのものになります。
どこにバグレポートすればいいですか?
このCookbookのAudit Mode Recipeで何か問題に遭遇したら、レポジトリに報告してください。
どうやって取得できますか?
Supermarketから直接ダウンロードするか、好みの依存関係解決ツールを使ってください。test-kitchenでテストしたければ、test-kitchen 1.4.0以上が必要です。