カスタム コンプライアンス コンテンツを使用すると、SaltStack SecOps Compliance に組み込まれているセキュリティ ベンチマークおよびセキュリティ チェックのライブラリを補完する独自のセキュリティ標準を定義できます。このカスタム コンテンツは、SaltStack SecOps Compliance のポリシーを社内の要件に合わせて強化する場合に便利です。

チェックは、SaltStack SecOps Compliance で準拠を評価するセキュリティ標準です。ベンチマークは、セキュリティ チェックのカテゴリです。

SaltStack SecOps Compliance には、Custom Content SDK (Software Development Kit) が含まれています。この SDK を使用して、独自のカスタム セキュリティ コンテンツを作成、テスト、およびビルドできます。カスタム セキュリティ コンテンツをインポートして、SaltStack SecOps Compliance の組み込みのセキュリティ ライブラリとともに評価や修正に使用できます。また、カスタム コンテンツをインポートする機能により、選択したバージョン管理システムを使用してコンテンツをバージョン管理できます。

カスタム チェックを使用するには、まず SaltStack SecOps Compliance の Custom Content SDK を初期化します。SDK に含まれるサンプル ファイルに変更を加えることで、独自のカスタム チェックやベンチマークを作成できます。SDK には、新しいコンテンツをテストできる Docker ベースのテスト環境も含まれています。

カスタム コンテンツの作成とテストが完了したら、コンテンツ ファイルをビルドして SaltStack SecOps Compliance にインポートし、評価と修正を開始できます。カスタム チェックにはユーザー アイコン カスタム チェック ユーザー アイコン が表示され、SaltStack チェックには 組み込みチェック シールド アイコン が表示されます。SaltStack SecOps Compliance は、ポリシーとカスタム コンテンツの間の依存関係を追跡し、コンテンツを削除すると解除される可能性がある依存関係のリストを表示します。

前提条件

SDK の初期化

  1. コマンド ラインから、ファイルを含むディレクトリに移動し、OS に応じて次のコマンドを実行します。
    • Mac OS または Linux
      ./secops_sdk init
    • Windows
      secops_sdk.exe init

    出力は表示されません。これは想定どおりです。この時点で、ディレクトリには次のフォルダとファイルが含まれています。

    • benchmarks
    • salt/locke/custom
    • sample_tests
    • README.md

    これらのフォルダとファイルの詳細については、フォルダとファイルを参照してください。

  2. (オプション)バージョン管理されたリポジトリに変更をコミットします。

カスタム チェックの作成

注:

カスタム コンテンツを作成するには、SDK の初期化が前提条件となります。SDK の初期化を参照してください。

  1. Custom Content SDK で、salt/locke/custom に移動します。このディレクトリには、サンプル状態 (.sls) およびメタ (.meta) ファイルを含むさまざまなサブディレクトリがあります。
    注: すべてのカスタム チェックは、状態 ( .sls) および対応するメタ ( .meta) ファイルの両方で構成する必要があります。
  2. サンプル状態 (.sls) のコピーおよび対応するメタ (.meta) ファイルのコピーを作成し、それぞれの名前をカスタム チェックを示すわかりやすい名前に変更します。

    チェックに関連付けられた両方のファイルが同じディレクトリにあり、同じ名前で始まっている必要があります。たとえば、次のようになります。

    • my_first_check.meta
    • my_first_check.sls

    この 2 つのファイルは、salt/locke/custom の任意のサブディレクトリに一緒に保存できます。

  3. メタ ファイルの内容を編集することで、ニーズに基づいてチェックをカスタマイズします。ファイルは YAML 形式で記述されています。ファイルに含まれるオプションのリストについては、フォルダとファイルを参照してください。
    注: チェックのメタ ファイルには、複数のベンチマークへの参照が含まれています。カスタム コンテンツを作成する場合は、関連付けられているすべてのベンチマークをチェックのメタ ファイルに含める必要があります。
  4. 状態ファイルの内容を編集します。詳細については、フォルダとファイルを参照してください。
  5. 両方のファイルが同じディレクトリに保存されていることを確認します。

    これで、カスタム チェックを作成するために必要な最小限の手順が完了しました。引き続き、チェックのテスト、バージョン管理へのコミット、またはコンテンツ ライブラリのビルドを実行できます。

カスタム ベンチマークの作成

注: カスタム コンテンツを作成するには、SDK の初期化が前提条件となります。 SDK の初期化を参照してください。
  1. カスタム コンテンツ SDK で、benchmarks ディレクトリに移動します。このディレクトリには、サンプルのベンチマーク メタ (.meta) ファイルが含まれています。
  2. Sample_Benchmark.meta のコピーを作成し、ベンチマークを示すわかりやすい名前に変更します。
  3. メタ ファイルの内容を編集することで、ニーズに基づいてベンチマークをカスタマイズします。ファイルは YAML 形式で記述されています。ファイルに含まれる各オプションの説明については、フォルダとファイルを参照してください。

カスタム コンテンツのテスト

注: 以下の手順には、Docker のインストールが前提条件となります。Docker のダウンロードとインストールの詳細については、 Docker のインストール ドキュメントを参照してください。
  1. カスタム コンテンツを作成したら、コマンド ラインを開き、Custom Content SDK の sample_tests ディレクトリに移動します。
  2. テスト用に Salt を使用して CentOS7 の Docker イメージをビルドします。
    ./build.sh
  3. テスト用コンテナを起動します。
    ./up.sh
  4. salt/locke/custom ディレクトリに作成したチェックに対してサンプル テストを実行します。カスタム チェックは、次のように通常の Salt 状態と同様に実行できます。
    ./test.sh salt-call --local state.apply locke.custom.mounts.my_first_check test=True

    その他のテストの例については、SDK README の「Test Custom Content」を参照してください。Salt 状態の詳細については、Salt のドキュメント:How do I use Salt States?を参照してください。

  5. テストが完了したら、テスト用コンテナをシャットダウンします。
    ./down.sh

カスタム コンテンツ ライブラリのビルド

  1. カスタム コンテンツを作成したら、コマンド ラインを開き、Custom Content SDK のルート ディレクトリに移動します。
  2. カスタム コンテンツ ライブラリをビルドします。
    ./secops_sdk build -a

    これにより、SDK のルート ディレクトリに _dist サブディレクトリが作成されます。これには、SaltStack Config のユーザー インターフェイスまたは API (RaaS) を介したコンテンツのインポートに使用できる 2 つの tar.gz ファイルが含まれています。ディレクトリに含まれるすべてのファイルの説明については、フォルダとファイルを参照してください。

カスタム コンテンツのインポート

  1. サイド メニューの [管理者] > [SecOps] をクリックします。
  2. [コンプライアンス コンテンツ - SaltStack][更新を確認] をクリックします。
    注: 現在のセッションで SaltStack SecOps Compliance のコンテンツをすでにダウンロードしている場合は、この手順をスキップできます。
  3. [パッケージのアップロード] をクリックし、ファイル エクスプローラで .tar.gz ファイルを選択します。
    注: カスタム チェック間の移動を簡単にするには、ファイル名にタイムスタンプを含むファイルを使用します。ファイルの詳細については、 フォルダとファイルを参照してください。

    これで、SaltStack SecOps Compliance でカスタム コンテンツを使用して、ポリシーの作成、評価の実行、システムの修正を実行できるようになります。カスタム チェックにはユーザー アイコン カスタム チェック ユーザー アイコン が表示され、SaltStack チェックには 組み込みチェック シールド アイコン が表示されます。

    注:

    API (RaaS) を使用するか、インストール時にコマンド ラインを使用して、コンテンツをインポートすることもできます。Sec API インターフェイスまたはエンタープライズ インストール ガイドを参照してください。

カスタム チェックの削除

  1. ユーザー インターフェイスで、[SecOps] > [チェック] の順に移動します。
  2. 削除するチェックの横にあるメニュー メニュー アイコン をクリックし、[削除] をクリックします。
    注: カスタム コンテンツのみ削除できます。カスタム コンテンツにはユーザー アイコン カスタム チェック ユーザー アイコン が表示され、SaltStack コンテンツには 組み込みチェック シールド アイコン が表示されます。
  3. [チェックの削除] ダイアログの [使用中] で、チェックを含むポリシーとベンチマークのリストを確認します。これは、チェックを削除すると解除される可能性がある環境内の依存関係を予測するのに便利です。

    使用中の依存関係の確認が完了したら、[次へ] をクリックします。

  4. [チェックの削除] > [警告] で、[削除] をクリックします。チェックが削除されたことがダイアログに表示されます。
  5. [完了] をクリックしてダイアログを閉じます。

カスタム ベンチマークの削除

  1. ユーザー インターフェイスで、[SecOps] > [ベンチマーク] の順に移動します。
  2. 削除するチェックの横にあるメニュー メニュー アイコン をクリックし、[削除] をクリックします。
    注:

    カスタム コンテンツのみ削除できます。カスタム コンテンツにはユーザー アイコン カスタム チェック ユーザー アイコン が表示され、SaltStack コンテンツには 組み込みチェック シールド アイコン が表示されます。

  3. [ベンチマークの削除] ダイアログの [使用中] で、ベンチマークに関連付けられたポリシーとチェックのリストを確認します。これは、ベンチマークを削除すると解除される可能性がある環境内の依存関係を予測するのに便利です。

    使用中の依存関係の確認が完了したら、[次へ] をクリックします。

  4. [ベンチマークの削除] > [警告] で、[削除] をクリックします。ベンチマークが削除されたことがダイアログに表示されます。
  5. [完了] をクリックしてダイアログを閉じます。

フォルダとファイル

SDK の初期化後、ディレクトリには次のフォルダとファイルが含まれています。

  • benchmarks - カスタム ベンチマークのメタ (.meta) ファイルを含む
  • salt/locke/custom - カスタム チェックの状態 (.sls) とメタ (.meta) ファイルを含む
  • sample_tests - Docker を使用したテスト用のサンプル ファイルを含む
  • README.md - SDK に関する詳細情報を含む

重要なファイルについては、以下で詳しく説明します。

[カスタム ベンチマークのファイル]

ベンチマークは、セキュリティ チェックのカテゴリです。SaltStack SecOps Compliance の組み込みのベンチマークは、信頼されたエキスパートによって定義されています。一方、カスタム ベンチマークは、組織の標準に基づいて定義できます。各ベンチマークには、チェックと呼ばれる推奨のリストが含まれます。また、対応する .meta ファイルが benchmarks ディレクトリにあります。SaltStack SecOps Compliance のベンチマークの詳細については、ベンチマークを参照してください。

ベンチマークのメタ ファイルを作成することにより、チェックのカテゴリを作成します。その後、チェックのメタ ファイルの benchmark_id でベンチマークに名前を付けることで、そのベンチマークにチェックを追加できます。フォルダとファイルを参照してください。

メタ ファイルは YAML 形式で記述され、コンテンツ用にカスタマイズできる次のオプションが含まれています。

name

ベンチマーク名

display_name

SaltStack SecOps Compliance でベンチマークのリストに表示されるベンチマークの名前

desc

ベンチマークの説明

注:

上記のオプションに加えて、メタ ファイルには、versionauthorityids など、さまざまな予約済みアイテムが含まれています。これらの予約済みアイテムは、管理者の指示がない限り変更しないでください。

[カスタム チェックのファイル]

チェックは、SaltStack SecOps Compliance で準拠を評価するセキュリティ標準です。これは、ベンチマークに関連付けられた推奨です。この推奨には、説明、根拠、監査、および修正に関する情報が示されます。各チェックは、状態 (.sls) および対応するメタ (.meta) ファイルという 2 つ以上のファイルによって定義されます。

注:

チェックに関連付けられた両方のファイルが同じディレクトリにあり、同じ名前で始まっている必要があります。たとえば、次のようになります。

  • my_first_check.meta
  • my_first_check.sls

この 2 つのファイルは、salt/locke/custom の任意のサブディレクトリに一緒に保存できます。

各ファイル タイプについては、以下で詳しく説明します。

[チェックのメタ ファイル]

チェックのメタ ファイルには、チェックの説明と、そのバージョンや適用可能なオペレーティング システムなど、チェックに関連するその他の詳細が含まれています。メタ ファイルは YAML 形式で記述され、ファイル拡張子 .meta を使用します。

カスタム チェックのメタ ファイルには、次のオプションがあります。

version

チェック コンテンツのバージョン。現時点では、値として 1 のみがサポートされます。

display_name

SaltStack Config のユーザー インターフェイスでチェックのリストに表示されるこのチェックの名前。

global_description

チェックの詳細説明。これは、チェック名やベンチマーク名で示されるよりも多くの情報を提供するために利用できます。

osfinger

このチェックを実行できるオペレーティング システムのリスト。このリストの値と一致する osfinger 値がホストに存在しない場合、チェックの評価結果は notapplicable として返されます。

refs

このチェックによって満たされる他のベンチマークまたはセキュリティ標準の他のチェックに関する相互参照情報。

benchmark_id

チェックが属する各ベンチマークのリスト。

各ベンチマーク エントリについて、次のサブオプションを含む新しいセクションが作成されます。

type

ベンチマークのタイプ。特定の機関から提供されるのではないカスタム チェックを定義する場合は、custom を入力します。

desc

SaltStack Config のユーザー インターフェイスでチェックのリストに表示されるセキュリティ推奨のタイトル。

control_id

推奨の番号(対応する CIS ドキュメントからの番号など)。

scored

このフィールドは、スコア付きまたはスコアなしの CIS 推奨に基づいてモデル化されます。スコアなしの CIS 推奨は、セキュリティ スコアのカウントに影響しません。「true」はスコア付きを示し、false はスコアなしを示します。社内のニーズに基づいて、スコア付きまたはスコアなしのチェックを選択します。

profile

CIS および他のベンチマークは、いくつかのプロファイルに分かれています。たとえば、CIS CentOS Linux 7 ベンチマークには次の 4 つのプロファイルがあります。

profile:
  server:level1
  workstation:level1
  server:level2
  workstation:level3
information

チェックの説明。これは、チェックの global_description フィールドと同様です。

rationale

チェックを実装する根拠の説明。

remediation

非準拠状態のシステムを修正する方法に関する指示。

[チェックの状態ファイル]

チェックの状態ファイルは、評価と修正を実行するために Salt 状態を適用します。状態関数は状態モジュール内に含まれる関数であり、アプリケーションがシステムに対して特定の状態になるように管理することができます。状態関数は多くの場合、指定されたタスクを実行するために 1 つまたは複数の実行モジュールを呼び出します。状態ファイルは YAML と Jinja の両方で記述され、ファイル拡張子 .sls を使用します。

評価の結果は、状態ファイルを test=True モードで実行した結果です。状態を適用すると変更が生じるという結果が示された場合、ホストは非準拠と見なされます。状態を適用しても変更が生じない場合、ホストは準拠と見なされます。

Salt 状態の詳細については、Salt のドキュメント:How do I use Salt States?を参照してください。

カスタム コンテンツ ライブラリのファイル

カスタム コンテンツ ライブラリをビルドした後、ディレクトリには _dist ディレクトリが含まれています。このディレクトリには、次の追加ファイルが含まれます。

  • digest.json - コンテンツに関するハッシュおよびその他の情報を含む
  • secops_custom.tar.gz - 取り込み可能な gzip tar ファイル。これは SaltStack Config のユーザー インターフェイスを介したアップロードに適しています。コンテンツの取り込みの詳細については、エンタープライズ インストール ガイドを参照してください。
  • secops_custom.txt - base64 エンコード バージョンの secops_custom.tar.gz。これは、API 呼び出しを行う場合に便利です。
  • secops_custom_YYYY-MM-DDTHH:MM:SS.SSSSSS...tar.gz - secops_custom.tar.gz と同一のコピー。作成日と tarball UUID を含むわかりやすいファイル名になっているため、SaltStack Config のユーザー インターフェイスを介してアップロードする場合に推奨されます。