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

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

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

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

サーバーでまだ 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 には、InSpec以前は手動の設定とクックブックの設定が必要だったコンプライアンススキャン機能。Running できますスキャンジョブでAWS OpsWorks for Chef AutomateChef Automate 2.0 を実行しているサーバー。ジョブは、すぐに (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プロファイルを Audit クックブックの属性として使用して、chef pushアップロードするコマンドクックブックの監査およびで規定されている他のクックブックPolicyfile.rbChef Automate サーバーに移動します。Audit クックブックをインストールすると、以下の Gem もインストールされます。ChefInSpecで、Chef によって生成されたオープンソースのテストおよび監査フレームワークです。Chef Automate 2.0 の場合は、Audit クックブックのバージョン 7.1.0 以降を選択します。-InSpecgem はバージョン 2.2.102 以降である必要があります。

このセクションの手順は opsworks-audit クックブックを実装する方法を示しています。Audit クックブックは、Chef Automate サーバーから指定されたプロファイルをダウンロードし、DevSecSSH Baselineプロファイルして、すべてのコンプライアンススキャンの結果を報告するchef-clientRun

Compliance プロファイルをインストールするには

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

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

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

  4. プロファイルのリストを参照します。オペレーティングシステムおよび少なくとも 1 つの管理対象ノードの設定に一致するプロファイルを選択します。プロファイルの対象となる違反の説明および基盤となるルールコードを含むプロファイルの詳細を表示するには、プロファイル項目の右にある [>] を選択します。複数のプロファイルを選択できます。スターターキットでサンプルを設定する場合は、DevSecSSH 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 スクリプトを使用します。このスクリプトは AWS OpsWorks AssociateNode API を使用してノードをサーバーに接続します。

    ノードの関連付けを自動化するには、「AWS OpsWorks for Chef Automate でのノードの自動的な追加」のステップに従うか、または「Chef サーバーで管理するノードを追加する」のステップに従ってノードを 1 つずつ追加します。

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

    
                     Chef Compliance のスキャン結果

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

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


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

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


               非準拠結果のリスト

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

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

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

注記

-ssh-hardeningクックブックはノードを変更して準拠させます。DevSecSSH Baselineルール。本番ノードでこのクックブックを実行する前に、DevSecSSH BaselineChef Automate コンソールでプロファイルして、クックブックがターゲットにするルール違反を理解します。本稼働ノードでこれを実行する前に、オープンソースの ssh-hardening クックブックに関する情報を確認します。

ssh-hardening クックブックを実行するには

  1. テキストエディタで、Policyfile.rb の実行リストに ssh-hardening クックブックを追加します。実行リスト 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クックブックが実行され、ノードセキュリティの改善を支援してDevSecSSH Baselineプロフィールのルール。

  4. ssh-hardening クックブックの初回実行が完了したら 30 分待機し再びコンプライアンススキャンを実行します。Chef Automate ダッシュボードで結果を表示します。の最初の実行時に発生した非準拠結果DevSecSSH 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 クックブックをインストールすると、以下の Gem もインストールされます。InSpecChef によって作成されるオープンソースのテストフレームワークで、デプロイメントパイプラインの任意のステージに自動化されたテストを統合できます。Chef Automate 1.x の場合は、監査クックブックのバージョン 5.0.1 以降を選択します。-InSpecgem はバージョン 1.24.0 以降である必要があります。

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

Compliance プロファイルをインストールするには

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

  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 でのノードの自動的な追加」のステップに従うか、または「Chef サーバーで管理するノードを追加する」のステップに従ってノードを 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 失敗結果リスト

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

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

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

注記

-ssh-hardeningクックブックはノードを変更して準拠させます。DevSecSSH Baselineルール。本番ノードでこのクックブックを実行する前に、DevSecSSH BaselineChef Automate コンソールでプロファイルして、クックブックがターゲットにするルール違反を理解します。本稼働ノードでこれを実行する前に、オープンソースの 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クックブックが実行され、ノードセキュリティの改善を支援してDevSecSSH Baselineプロフィールのルール。

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

Compliance の更新

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

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

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

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