でのコンプライアンススキャン AWS OpsWorks for Chef Automate - AWS OpsWorks

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

でのコンプライアンススキャン AWS OpsWorks for Chef Automate

重要

AWS OpsWorks for Chef Automate は 2024 年 5 月 5 日にサポート終了となり、新規および既存のお客様の両方で無効になっています。既存のお客様は、 Chef SaaS または代替ソリューションに移行することをお勧めします。ご質問がある場合は、 AWS re:Post またはAWS プレミアムサポートを通じて AWS サポート チームにお問い合わせください。

コンプライアンススキャンを使用すると、事前定義されたポリシー (ルールとも呼ばれる) に基づいてインフラストラクチャ内の管理対象ノードのコンプライアンスを追跡できます。Compliance のビューを使用すると、アプリケーションの脆弱性と非準拠設定を定期的に監査できます。Chef には、コンプライアンススキャンに使用できる事前定義された 100 個を超える Compliance プロファイル (特定のノード設定に適用するルールの集合) が用意されています。また、Chef InSpec の言語を使用して独自のカスタムプロファイルを作成することもできます。

サーバーでまだ Chef Automate 2.0 が実行されていない場合は、Audit クックブックをインストールすることで手動で Chef Compliance を設定できます。

注記

AWS OpsWorks for Chef Automate サーバーに関連付けられたノードでサポートされている Chef Infra クライアントエージェントソフトウェア (chef-client) の最小バージョンは 13.x です。最新の安定chef-clientバージョン、または 14.10.9 以上を実行することをお勧めします。

Chef Automate 2.0 の Compliance

AWS OpsWorks for Chef Automate サーバーが Chef Automate 2.0 を実行している場合は、このセクションの手順を使用して Chef Compliance を設定します。

Chef Automate 2.0 を使用したコンプライアンススキャンジョブの実行

Chef Automate 2.0 には、以前は手動の設定とクックブックの設定が必要だった Chef InSpec コンプライアンススキャン機能が含まれています。Chef Automate 2.0 を実行している AWS OpsWorks for Chef Automate サーバーでスキャンジョブを実行できます。ジョブは、すぐに (1 回) 実行するか、後で実行するようにスケジュールするか、指定した間隔 (毎日または 2 時間ごとなど) で実行するようにスケジュールすることができます。スキャンジョブの結果はコンプライアンスレポートに送信されます。Chef Automate ダッシュボードで、コンプライアンススキャンの結果を表示して対処できます。[Compliance] タブを開いてレポートを表示するには、Chef Automate ダッシュボードの [Scan Jobs] タブで、管理対象ノード行の右側にある [Report] を選択します。

管理対象ノードでスキャンジョブを実行するには、以下のものが必要です。

  • 名前空間にインストールされた 1 つ以上の Compliance プロファイル。

  • 手動で追加された 1 つの以上のターゲットノード、または自動的に追加された EC2 インスタンス。

では AWS OpsWorks for Chef Automate、スキャンジョブは次のターゲットでサポートされています。

  • 手動で追加されたノード

  • aws-ec2 インスタンス

  • AWS リージョン

スキャンジョブの実行方法の詳細については、Chef のドキュメントの「Chef Automate Scan Jobs」を参照してください。

(オプション、Chef Automate 2.0) Audit クックブックによるコンプライアンスの設定

コンプライアンスはどの AWS OpsWorks for Chef Automate サーバーでも設定できます。 AWS OpsWorks for Chef Automate サーバーを起動した後、Chef Automate ダッシュボードからプロファイルをインストールしたり、Policyfile.rb ポリシーファイルで Audit クックブックの属性に目的のプロファイルを追加したりできます。スターターキットには、事前入力済みの Policyfile.rb ファイルが含まれています。

監査クックブックの属性として Policyfile.rb プロファイルを編集した後、chef push コマンドを実行して [Audit cookbook] (監査クックブック) と Policyfile.rb で指定された他のクックブックを Chef Automate サーバーにアップロードします。Audit クックブックをインストールすると、Chef によって作成されたオープンソースのテストおよび監査フレームワークである Chef InSpec の gem もインストールされます。Chef Automate 2.0 の場合は、Audit クックブックのバージョン 7.1.0 以降を選択します。InSpec gem はバージョン 2.2.102 以降であることが必要です。

このセクションの手順は opsworks-audit クックブックを実装する方法を示しています。Audit クックブックは指定されたプロファイルを Chef Automate サーバーからダウンロードし、DevSec SSH Baseline プロファイルに対してノードを評価して、chef-client の実行ごとにコンプライアンススキャンの結果をレポートします。

Compliance プロファイルをインストールするには
  1. まだ行っていない場合は Chef Automate ウェブベースダッシュボードにサインインします。 AWS OpsWorks for Chef Automate サーバーの作成時にスターターキットをダウンロードした際に受信した認証情報を使用します。

  2. Chef Automate ダッシュボードで、[Asset Store] タブを選択します。

    Compliance プロファイル
  3. 定義済みのプロファイルを表示するには、[Available] タブを選択します。

  4. プロファイルのリストを参照します。オペレーティングシステムおよび少なくとも 1 つの管理対象ノードの設定に一致するプロファイルを選択します。プロファイルの対象となる違反の説明および基盤となるルールコードを含むプロファイルの詳細を表示するには、プロファイル項目の右にある [>] を選択します。複数のプロファイルを選択できます。スターターキットのサンプルを設定する場合は、[DevSec SSH Baseline] を選択します。

    Chef Compliance プロファイルの詳細ビュー
  5. 選択されたプロファイルを Chef Automate サーバーにインストールするには、[Get] を選択します。

  6. プロファイルをインストールすると、それらは Chef Automate ダッシュボードの [Profiles] タブに表示されます。

Policyfile.rb を使用してクックブックをインストールするには
  1. スターターキットの Policyfile.rb を表示して、Audit クックブックの属性で ['profiles']ssh-baseline プロファイルが指定されていることを確認します。

    # Define audit cookbook attributes default["opsworks-demo"]["audit"]["reporter"] = "chef-server-automate" default["opsworks-demo"]["audit"]["profiles"] = [ { "name": "DevSec SSH Baseline", "compliance": "admin/ssh-baseline" } ]
  2. Policyfile.rb に定義されているクックブックをダウンロードしてインストールします。

    chef install

    すべてのクックブックはクックブックの metadata.rb ファイルでバージョニングされています。クックブックを変更するたびに metadata.rb にあるクックブックのバージョンを上げる必要があります。

  3. Policyfile.rb に定義されているポリシー opsworks-demo をサーバーにプッシュします。

    chef push opsworks-demo
  4. ポリシーのインストールを確認します。以下のコマンドを実行してください。

    chef show-policy

    結果は以下のようになります。

    opsworks-demo-webserver ======================= * opsworks-demo: ec0fe46314
  5. まだ行っていない場合は、サーバーにノードを追加して管理できるようにします。最初のノードを AWS OpsWorks for Chef Automate サーバーに接続するには、このスターターキットに含まれているuserdata.shスクリプトを使用します。AssociateNode API を使用して、ノードを AWS OpsWorks サーバーに接続します。

    でノードを自動的に追加する AWS OpsWorks for Chef Automate」のステップに従ってノードの関連付けを自動化できます。または「ノードを個別に追加します」のステップに従ってノードを 1 度に 1 つずつ追加できます。

  6. ノードの実行リストを更新すると、chef-client エージェントが次回の実行時に、指定したレシピを実行します。この処理はデフォルトで 1,800 秒 (30 分) ごとに行われます。その実行後、Chef Automate ダッシュボードの [Compliance] タブからコンプライアンス結果を表示し、アクションを実行できます。

    Chef Compliance のスキャン結果

コンプライアンススキャンの実行

ノードの実行リストを設定した後、エージェントが初めて実行されるとすぐに、Chef Automate ダッシュボードにコンプライアンススキャンの結果が表示されます。

Chef Compliance レポートページビュー

Chef Automate ダッシュボードで、[Compliance] タブを選択します。左のナビゲーションペインの [Reporting] を選択します。[Profiles] タブを選択して [Scan Results] を選択した後、スキャンによって非準拠と見なされたノードを選択して、そのノードがどのルールに対して非準拠になったかを調べます。

非準拠結果のリスト

新しいノードは DevSec SSH Baseline プロファイルのルールすべてを満たさないため、通常はスキャンの非準拠結果が表示されます。DevSec Hardening Framework はコミュニティベースのプロジェクトで、DevSec SSH Baseline プロファイルのルールに違反する問題を修正するクックブックを提供します。

(オプション) 非準拠結果の解決

スターターキットにはオープンソースのクックブック ssh-hardening が含まれています。このクックブックは、DevSec SSH Baseline プロファイルに対して実行したスキャンの非準拠結果を修正するために実行できます。

注記

ssh-hardening クックブックは DevSec SSH Baseline ルールに準拠するようにノードを変更します。本稼働ノードでこのクックブックを実行する前にクックブックがターゲットにするルール違反を理解するため、Chef Automate の DevSec SSH Baseline プロファイルの詳細を確認してください。本稼働ノードでこれを実行する前に、オープンソースの ssh-hardening クックブックに関する情報を確認します。

ssh-hardening クックブックを実行するには
  1. テキストエディタで、ssh-hardening の実行リストに Policyfile.rb クックブックを追加します。実行リスト Policyfile.rb は以下のようになります。

    run_list 'chef-client', 'opsworks-webserver', 'audit', 'ssh-hardening'
  2. Policyfile.rb を更新し、 AWS OpsWorks for Chef Automate サーバーにプッシュします。

    chef update Policyfile.rb chef push opsworks-demo
  3. opsworks-demo ポリシーに関連付けられているノードは実行リストを自動的に更新し、次の chef-client の実行時に ssh-hardening クックブックを適用します。

    chef-client クックブックを使用しているため、ノードが定期的にチェックインします (デフォルトでは 30 分ごと)。次のチェックインで ssh-hardening クックブックが実行され、DevSec SSH Baseline プロファイルのルールを満たすようにノードセキュリティの改善をサポートします。

  4. ssh-hardening クックブックの初回実行が完了したら 30 分待機し再びコンプライアンススキャンを実行します。Chef Automate ダッシュボードで結果を表示します。DevSec SSH Baseline スキャンの初回実行時に発生した非準拠の結果が解決されます。

Chef Automate 1.x の Compliance

AWS OpsWorks for Chef Automate サーバーが Chef Automate 1.x を実行している場合は、このセクションの手順を使用して Chef Compliance を設定します。

(オプション、Chef Automate 1.x) Chef Compliance の設定

Chef Compliance は任意の AWS OpsWorks for Chef Automate サーバーで設定できます。 AWS OpsWorks for Chef Automate サーバーを起動した後、Chef Automate ダッシュボードのプロファイルから実行するプロファイルを選択します。プロファイルをインストールした後、berks コマンドを実行して Audit クックブックを Chef Automate サーバーにアップロードします。Audit クックブックをインストールすると、InSpec のジェムもインストールされます。これは、Chef によって実行されるオープンソースのテストフレームワークであり、デプロイメントパイプラインの任意のステージに自動化されたテストを統合できます。Chef Automate 1.x の場合は、監査クックブックのバージョン 5.0.1 以降を選択します。InSpec gem はバージョン 1.24.0 以降であることが必要です。

AWS OpsWorks for Chef Automate スターターキットには、Chef の Audit クックブックの適切なバージョンをダウンロードしてインストールopsworks-auditするラッパークックブック が含まれています。opsworks-audit クックブックは chef-client エージェントが、この後のトピックで行う Chef Compliance コンソールからインストールする DevSec SSH Baseline プロファイルに対しノード評価を行うように指示します。独自の設定に適したように、いずれかのクックブックを使用してコンプライアンスをセットアップできます。このセクションの手順は opsworks-audit クックブックを実装する方法を示しています。

Compliance プロファイルをインストールするには
  1. まだ行っていない場合は Chef Automate ウェブベースダッシュボードにサインインします。 AWS OpsWorks for Chef Automate サーバーの作成時に Starter Kit をダウンロードしたときに受け取った認証情報を使用します。

  2. Chef Automate ダッシュボードで、[Compliance] タブを選択します。

    Chef Compliance プロファイル
  3. 左ナビゲーションバーで、[Profile Store] を選択してから [Available] タブを選択して、事前定義されたプロファイルを表示します。

  4. プロファイルのリストを参照します。オペレーティングシステムおよび少なくとも 1 つの管理対象ノードの設定に一致するプロファイルを選択します。プロファイルの対象となる違反の説明および基盤となるルールコードを含むプロファイルの詳細を表示するには、プロファイル項目の右にある [>] を選択します。複数のプロファイルを選択できます。

    Chef Compliance プロファイルの詳細ビュー
  5. 選択されたプロファイルを Chef Automate サーバーにインストールするには、[Get] を選択します。

  6. ダウンロードが完了したら、次の手順に進んでください。

opsworks-audit クックブックをインストールしてセットアップする
  1. このステップはオプションですが、ノードの実行リストにレシピを追加する場合のステップ 6 で時間の節約になります。 AWS OpsWorks for Chef Automate サーバーの作成時にダウンロードしたスターターキットに含まれている roles/opsworks-example-role.rb ファイルを編集します。次の行を追加します。コンプライアンススキャンを実行してから非準拠ノードを解決するために ssh-hardening クックブックとレシピを追加することはオプションなので、最後の行はコメントアウトされています。

    run_list( "recipe[chef-client]", "recipe[apache2]", "recipe[opsworks-audit]" # "recipe[ssh-hardening]" )
  2. テキストエディタを使用して Berksfile で希望のクックブックを指定します。サンプル Berksfile はスターターキットに含まれています。この例では、Chef Infra クライアント ([chef-client) クックブック、apache2クックブック、opsworks-audit クックブックをインストールします。Berksfile は以下のようになります。

    source 'https://supermarket.chef.io cookbook 'chef-client' cookbook 'apache2', '~> 5.0.1' cookbook 'opsworks-audit', path: 'cookbooks/opsworks-audit', '~> 1.0.0'

    すべてのクックブックはクックブックの metadata.rb ファイルでバージョニングされています。クックブックを変更するたびに metadata.rb にあるクックブックのバージョンを上げる必要があります。

  3. 次のコマンドを実行してローカルまたは使用中のコンピュータにある cookbooks フォルダにクックブックをダウンロードしインストールします。

    berks vendor cookbooks
  4. 次のコマンドを実行して、 AWS OpsWorks for Chef Automate サーバーにベンダーのクックブックをアップロードします。

    knife upload .
  5. opsworks-audit クックブックがインストールされていることを確認するには、次のコマンドを実行してサーバーで現在使用可能なクックブックのリストを表示します。

    knife cookbook list
  6. まだ行っていない場合は、サーバーにノードを追加して管理できるようにします。「でノードを自動的に追加する AWS OpsWorks for Chef Automate」のステップに従ってノードの関連付けを自動化できます。または「ノードを個別に追加します」のステップに従ってノードを 1 度に 1 つずつ追加できます。ノードの実行リストを編集して、ステップ 1 の opsworks-example-role で指定したロールを追加します。この例では RUN_LIST の属性を userdata スクリプトで編集します。これはノードの関連性を自動化するために使用します。

    RUN_LIST="role[opsworks-example-role]"

    ステップ 1 をスキップしロールを設定しなかった場合は、実行リストに各レシピの名前を追加します。変更を保存して ステップ 3: 自動関連付けスクリプトを使用してインスタンスを作成する のステップに従がって、ユーザーデータスクリプトをAmazon EC2 インスタンスに適用します。

    RUN_LIST="recipe[chef-client],recipe[apache2],recipe[opworks-audit]"
  7. ノードの実行リストを更新すると、chef-client エージェントが次回の実行時に、指定したレシピを実行します。この処理はデフォルトで 1,800 秒 (30 分) ごとに行われます。実行後、Chef Automate ダッシュボードでコンプライアンス結果を見ることができます。

コンプライアンススキャンの実行

ノードの実行リストを設定した後初めてエージェントデーモンが実行された後短時間で、Chef Automate ダッシュボードにコンプライアンススキャンの結果が表示されます。

Chef Compliance レポートページビュー

Chef Automate ダッシュボードで、[Compliance] タブを選択します。左のナビゲーションペインの [Reporting] を選択します。[Profiles] タブを選択して [Scan Results] を選択した後、スキャンによって非準拠と見なされたノードを選択して、そのノードがどのルールに対して非準拠になったかを調べます。

Chef Compliance 失敗結果リスト

新しいノードは DevSec SSH Baseline プロファイルのルールすべてを満たさないため、通常はスキャンの非準拠結果が表示されます。DevSec Hardening Framework はコミュニティベースのプロジェクトで、DevSec SSH Baseline プロファイルのルールに違反する問題を修正するクックブックを提供します。

(オプション) 非準拠結果の解決

スターターキットにはオープンソースのクックブック ssh-hardening が含まれています。このクックブックは、DevSec SSH Baseline プロファイルに対して実行したスキャンの非準拠結果を修正するために実行できます。

注記

ssh-hardening クックブックは DevSec SSH Baseline ルールに準拠するようにノードを変更します。本稼働ノードでこのクックブックを実行する前にクックブックがターゲットにするルール違反を理解するため、Chef Automate の DevSec SSH Baseline プロファイルの詳細を確認してください。本稼働ノードでこれを実行する前に、オープンソースの ssh-hardening クックブックに関する情報を確認します。

ssh-hardening クックブックを実行するには
  1. テキストエディタで、ssh-hardening クックブックを Berksfile に追加します。Berksfile は以下のようになります。

    source 'https://supermarket.chef.io' cookbook 'chef-client' cookbook 'apache2', '~> 5.0.1' cookbook 'opsworks-audit', path: 'cookbooks/opsworks-audit', '~> 1.0.0' # optional cookbook 'ssh-hardening'
  2. 次のコマンドを実行して ssh-hardening クックブックをローカルのクックブックフォルダにダウンロードし、 AWS OpsWorks for Chef Automate サーバーにアップロードします。

    berks vendor cookbooks knife upload .
  3. ノードの実行リストに ssh-hardening レシピを追加します。この操作はステップ 1 とステップ 6 (opsworks-audit クックブックをインストールしてセットアップする) で説明されています。

    opsworks-example-role.rb ファイルを更新するには、次のコマンドを実行してサーバーに変更をアップロードします。

    knife upload .

    実行リストを直接更新するには、次のコマンドを実行して変更をアップロードします。通常、ノード名はインスタンス ID になります。

    knife node run_list add <node name> 'recipe[ssh-hardening]'
  4. chef-client クックブックを使用しているため、ノードが定期的にチェックインします (デフォルトでは 30 分ごと)。次のチェックインで ssh-hardening クックブックが実行され、DevSec SSH Baseline プロファイルのルールを満たすようにノードセキュリティの改善をサポートします。

  5. ssh-hardening クックブックの初回実行が完了したら 30 分待機し再びコンプライアンススキャンを実行します。Chef Automate ダッシュボードで結果を表示します。DevSec SSH Baseline スキャンの初回実行時に発生した非準拠の結果が解決されます。

Compliance の更新

AWS OpsWorks for Chef Automate サーバーでは、スケジュールされたシステムメンテナンスによってコンプライアンス機能が自動的に更新されます。Chef Automate、Chef Infra Server、Chef InSpec の最新リリースが AWS OpsWorks for Chef Automate サーバーで使用可能になると、サーバーで実行されている Audit クックブックおよび Chef InSpec gem のサポートされているバージョンを確認および更新する必要があります。 AWS OpsWorks for Chef Automate サーバーにインストール済みのプロファイルは、メンテナンスの一環として更新されません。

コミュニティとカスタム Compliance プロファイル

Chef には現在 100 種類を超えるコンプライアンススキャンプロファイルが含まれています。コミュニティとカスタムプロファイルをリストに追加して、含まれているプロファイルと同様にそれらのプロファイルに基づいてコンプライアンススキャンをダウンロードして実行できます。コミュニティベースの Compliance プロファイルは Chef Supermarket から入手できます。カスタムプロファイルは Ruby ベースのプログラムであり、スキャンルールを指定するコントロールのフォルダが含まれています。

以下の資料も参照してください。