6. チェックのスキップと強制

6. チェックのスキップと強制

Spotter を使用すると、組織全体でコンプライアンスと品質を達成できるよう、すべての自動化ワークフローでどの Ansibleをスキップし、どのチェックを常に適用するかを一元的に制御できます。つまり、単一の設定ポイントからすべてのユーザーにルールを適用したり、冗長と思われる一部のルールをスキップしたりすることができます。
たとえば、Spotterが潜在的なリスクを検出し、それを評価して受け入れた場合、今後はそれをスキップするように決定できます。

チェックをスキップまたは強制する場合、以下の 3 つのパラメータを指定して、対象の完全修飾コレクション名 (FQCN) の特定のチェック、またはサブチェックをバイパスまたは強制するように、必要なレベルのチェック制御を簡単にカスタマイズできます。
  1. event : チェック結果のイベント コード (例: W2600)
  2. subevent_code : チェック サブコード (例: B324)
  3. FQCN : 完全修飾コレクション名 (例: amazon.aws.cloudformation)
チェックの改良は次の 3 つのレベルで可能です。

組織レベル

基本的なルールを確立し、組織全体にチェックを適用します。
このレベルで強制されるチェックはスキャン時に無視できず、組織レベルでスキップされるチェックは強制されるチェックよりも優先されます。

org-config.json ファイルのサンプル:
 
    "skip_checks": [ 
     { 
       "event": "W003", 
       "fqcn": "ansible.builtin.uri" 
     } 
    ], 
    "enforce_checks": [ 
     { 
       "event": "E005", 
       "fqcn": "community.crypto.x509_certificate" 
     } 
   ] 
  }

アップロードするには「config set」コマンドを使い、クリアするには「config clear」コマンドを使用します。
$ spotter config set org-config.json

$ spotter config clear

特定の組織の現在の設定を確認するには、次のコマンドを使用します。
$ spotter config get
あるいは、Spotter アプリ内でチェックのスキップと強制を管理することもできます 。

スキャンレベル

特定の要件を満たすようにスキャンを微調整します。スキャン レベルで強制されるチェックはタスク レベルでスキップできません。
また、スキャン レベルでスキップされるチェックは、スキャン レベルで強制されるチェックを上書きします。

このレベルでは、主に構成ファイルを通じてチェックをスキップできます。プロジェクトのカスタマイズされた .spotter.json、.spotter.yml、または .spotter.yaml ファイルであっても、オプションの「--configCLI」 引数を介して便利に提供される構成ファイルであっても、自由に制御可能です。

spotter.yml 設定ファイルの例:
 
  skip_checks: 
    - event: W003 
      fqcn: ansible.builtin.uri 
    - event: E601 
      fqcn: community.crypto.x509_certificate
  enforce_checks: 
    - event: E005 
    - event: E903
    

タスクレベル

個々のタスクやシナリオに合わせて、タスクレベルでチェックを絞り込みます。
このレベルでチェックを強制することはできませんが、必要に応じてチェックをスキップでき、Ansibleのコンテンツ自体でコントロールすることができます。
"noqa"(NO Quality Assurance)YAMLコメントを、Ansibleタスクの行末に使うことができます。
# noqa: event[fqcn=<fqcn>, subevent_code=<subevent_code>]

タスク レベルでのチェックをスキップする例:
 -
 --
 - name: Sample playbook with comments 
   hosts: localhost
   tasks:
     - name: Get tpayload from the API # noqa: W003, E903 
       uri: 
         url:some-url" 
         method: GET 
         user: "username1"       &nbcommunity.crypto.x509_certificate: # noqa: E601[fqcn=community.crypto.x509_certificate] 
       path: "{{ config_path certificates/server.crt" 
       privatekey_path: "{{ config_path }}/certificates/server.key"
   &nbsnbsp;  provider: assertonly