Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

securityhub-suppress

AWS Security Hub の FAILED コントロールを CSV 経由で抑制(SUPPRESSED、理由メモ付き)するスクリプトです。CSV をエクスポート、Excel 等で理由を書き込み、再取り込みして一括反映する運用を想定しています。

出典

Security Hub のコントロールを一括で無効化(抑制)する - クラスメソッド発「やってみた」ブログ

このリポジトリのスクリプトは、上記ブログ掲載スクリプトを uv で実行しやすく整えたものです。フィルタ条件・CSV 列構成・UpdateText の判定ロジックはブログ版から変更していません。

必要なもの

  • uv
  • AWS 認証情報(環境変数、~/.aws/credentials の profile、SSO など)
  • 対象アカウントで以下の IAM 権限
    • securityhub:GetFindings
    • securityhub:BatchUpdateFindings
    • sts:GetCallerIdentity

使い方

方法1 URL から直接実行

uv run https://raw.githubusercontent.com/nyankotaro/securityhub-suppress/main/securityhub_suppress.py --help

方法2 ファイルを取得して実行

curl -O https://raw.githubusercontent.com/nyankotaro/securityhub-suppress/main/securityhub_suppress.py
uv run securityhub_suppress.py --help

エクスポート → CSV編集 → 抑制 → 確認の流れ

  1. FAILED(WorkflowStatus: NEW)のコントロールを CSV に出力する

    uv run securityhub_suppress.py --export findings.csv
    
  2. findings.csvUpdateText 列を編集する

    • 空のまま → 何もしない(そのまま NEW を維持)
    • 解除 と入力 → 該当リソースの抑制を解除する(Workflow を NEW に戻す)
    • それ以外の文字列を入力 → その文字列を抑制理由として Note.Text に記録し、Workflow を SUPPRESSED にする
  3. 編集した CSV を読み込んで一括反映する

    uv run securityhub_suppress.py --suppress findings.csv "自分の名前"
    
  4. 抑制済み(WorkflowStatus: SUPPRESSED)のコントロールを CSV に出力して結果を確認する

    uv run securityhub_suppress.py --export-suppressed suppressed.csv
    

--profile / --region の指定

uv run securityhub_suppress.py --export findings.csv --profile my-profile --region ap-northeast-1

未指定時は環境変数や ~/.aws/config のデフォルト設定に従います。

CSV の列構成

--export(WorkflowStatus: NEW)

列名 内容
ControlId Finding ID から抽出したコントロールID
Id Finding ID
ProductArn Finding の ProductArn
ResourceId 先頭リソースの ID(リソースがない場合は空)
UpdateText 編集対象。空欄で出力される

--export-suppressed(WorkflowStatus: SUPPRESSED)

列名 内容
ControlId Finding ID から抽出したコントロールID
Id Finding ID
ProductArn Finding の ProductArn
ResourceId 先頭リソースの ID(リソースがない場合は空)
Text 現在の抑制理由(既存の Note.Text)。読み取り専用の参考情報
UpdateText 編集対象。空欄で出力される

UpdateText の書き方(--suppress 実行時に読まれる列)

  • 空文字 → 何もしない
  • 解除 → Workflow を NEW に戻す。Note.Text は "SUPPRESSED -> NEW へ更新" に上書きされる(Note 自体を削除する API がないため)
  • 上記以外の任意の文字列 → その文字列をそのまま Note.Text として記録し、Workflow を SUPPRESSED にする

CSV の文字コードは utf-8 → cp932 → shift_jis の順で自動判定します。

ブログ版との差分

  • PEP 723 インラインメタデータを追加し、uv run で依存関係インストール不要にした
  • boto3 クライアント生成(STS / Security Hub)を main() 内、引数パース後に移動し、--help 実行時に AWS 認証が不要になるようにした
  • --profile / --region オプションを追加した
  • get_findings の手書き NextToken ループを get_paginator("get_findings") に置き換えた

フィルタ条件・CSV 列構成・UpdateText の判定ロジック・出力メッセージはブログ版と同一です。

ライセンス

MIT License

About

Suppress AWS Security Hub failed controls with notes via CSV (uv single-file script)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages