mcpField
A
altinity-expert-clickhouse-security

altinity-expert-clickhouse-security

github.com/altinityセキュリティ1741 回インストール6 週間前に更新
リポジトリ

altinity-expert-clickhouse-security について

altinity-expert-clickhouse-securityは、ClickHouseのレビュー担当者向けの読み取り専用セキュリティ監査スキルです。システムメタデータと提供された設定を調べ、状況に照らして所見を評価し、検証できない点の明示と機密情報のマスキングを求めます。

主な機能

  1. 0120項目の初回SQLチェック
  2. 02ユーザー、ロール、権限、ポリシーの確認
  3. 03設定、クォータ、連携の調査
  4. 04バージョン別セキュリティ資料の参照
  5. 05レポート内の機密情報のマスキング

活用シーン

  1. 01ClickHouseのアクセス制御監査
  2. 02提供された設定ファイルのレビュー
  3. 03クエリログにおけるセキュリティ問題の調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/altinity/altinity-skills --skill altinity-expert-clickhouse-security

インストール後、Claude Code で/altinity-expert-clickhouse-securityを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

checks.sql
references/
01-scope-and-safety.md
02-identity-authentication.md
03-users-roles-grants-rbac.md
04-definer-impersonation-principals.md
05-network-exposure-and-tls.md
06-table-functions-external-sources.md
07-table-engines-and-external-integrations.md
08-row-column-policy-security.md
09-settings-profiles-constraints-quotas.md
10-audit-logging-and-log-integrity.md
11-query-log-threat-hunting.md
12-secrets-named-collections-credentials.md
13-password-hash-hygiene.md
14-version-specific-security-checks.md
15-cluster-distributed-security.md
16-keeper-and-interserver-security.md
17-executable-udf-and-code-execution.md
18-encryption-at-rest-and-backups.md
19-http-interface-surface.md
20-reporting-severity-and-output-format.md

詳細

ClickHouse セキュリティ監査

system.users、system.grants、system.roles、system.row_policies、system.settings_profile_elements、system.quotas、system.named_collections、system.functions、system.clusters、および提供された構成ファイルを対象とする、読み取り専用のプロフェッショナルなセキュリティ監査です。 接続モード、クラスター、時間範囲がまだ確定していない場合は、最初に altinity-expert-clickhouse-connection を実行してください。

基本動作

  • ClickHouse のシニアセキュリティレビュアーとして作業してください。読み取り専用の SQL とメタデータの調査を優先してください。
  • 破壊的な SQL は実行せず、オンラインでのパスワード推測も試みないでください。
  • シークレット、パスワードハッシュ、ソルト、秘密鍵、アクセスキー、トークン、復元したパスワード候補を出力しないでください。
  • 発見事項を相互に関連付けてください。権限、ネットワークへの露出、ユーザーの意図、バージョン、観測されたクエリ動作を考慮せずに設定を問題として指摘しないでください。
  • 利用できたアクセスでは検証できなかった事項を明示してください。
  • 求められた場合に限り、必要最小限の修正方法を示してください。権限を変更する場合は、grants スキルの最小権限のロールベース方式を使用します。対象範囲を最小限に絞ったステートメントを使い、ユーザーではなくロールを使用し、広範な *.* 権限は決して付与しないでください。

クエリパック

  • checks.sql — 20 個のチェック:サーバーの識別情報、SHOW ACCESS の全出力、認証方式とホスト ACL を含むユーザー一覧、ロールとロールグラフ、プリンシパルごとの権限状況、管理者と同等の権限を持つ主体およびアクセス管理権限の保持者、セキュリティ上重要な権限、カラム単位の権限、行ポリシー、設定プロファイルと要素、クォータ、名前付きコレクション名、ユーザー定義関数と実行可能関数、安全なポート、クラスター構成と分散ユーザー、外部エンジンテーブルと DEFINER ビュー、ログ記録と認証監査のベースライン。ローカルノードのみが対象です。クラスター全体のチェックは references/15-cluster-distributed-security.md にあります。
  • references/ — 深掘り用ファイル 20 個。以下に索引があります。発見事項から参照されたものだけを読み込んでください。

クエリパックの実行方法

  1. このスキルのディレクトリから各パックファイルを読み込みます(スキルローダーがディレクトリパスを出力します)。
  2. ステートメントはファイル全体ではなく、一つずつ実行します。ステートメントは ; で終わり、-- @check <id> <title> ヘッダーで始まります。結果とともに ID を保持してください。
  3. -- @requires に従ってください。指定されたテーブルが存在しない場合、keeper が必要なのにサーバーに Keeper/ZooKeeper がない場合、またはバージョン条件を満たさない場合は、そのステートメントをスキップします。スキップした ID と理由を記録してください。
  4. クラスターのマクロがある場合は、{cluster} をそのまま保持してください。それ以外の場合は、接続スキルの書き換えルールを適用します。他の {placeholder} はテンプレート変数です。実際の値に置き換えてから実行するか、ステートメントをスキップしてください。
  5. エラーが発生した場合は、チェック ID とエラーの先頭行を記録してから続行します。UNKNOWN_IDENTIFIER の場合に限り、DESCRIBE TABLE system.<table> を実行して、存在しないカラムを削除してください。
  6. severity カラムは、その行の判定です。そのまま転記し、再評価しないでください。

解釈ルール

何かを評価する前に、対象範囲を明確にしてください。ライブ SQL アクセス、エクスポートされた system.* データ、提供された users.xml と config.xml のいずれなのか、単一ノードかクラスターか、ClickHouse のバージョンとデプロイモデルを確認します。その後、最初の確認として checks.sql を実行し、必要に応じて提供された設定スニペットや、最近の system.query_log と system.session_log の抽出データを追加します。

  • 各検出事項は、タイトル、重大度、確信度、証拠の概要、重要である理由、検証できなかった内容の順に報告し、その後に確認方法または修正案を提示してください。
  • session_log_exists = 0(security-20)は、ログインと認証の監査が無効であることを意味します。テーブルが存在しないことが根拠であり、追加のクエリは不要です。
  • 現行バージョンでは、VALID UNTIL は system.users のカラムではありません。有効期限が存在しないと報告するのではなく、SHOW CREATE USER または SHOW ACCESS のダンプで確認してください。
  • 名前付きコレクションの値はサーバーによってマスクされます。名前だけを一覧表示し、値を選択しないでください。値がマスクされていることは、シークレットが安全である証拠にはなりません。
  • 過剰に見える権限も、アプリケーションの実際のワークロードに必要な場合があります。過剰な権限と判断する前に、権限が実際に使われているか system.query_log で確認してください。
  • ソース、エンジン、Definer の動作はバージョンによって異なります。権限が必要かどうかを断定する前に、references/14-version-specific-security-checks.md を確認してください。
  • カラム単位の SELECT 権限は、ビュー、他のテーブルに対する行ポリシー、テーブル関数を通じて回避できます。回避経路も塞がれている場合に限り、制御手段として扱ってください。

参考資料一覧

  • references/01-scope-and-safety.md:安全な実行ルール、証拠の取り扱い、編集・削除による秘匿。
  • references/02-identity-authentication.md:ユーザー、認証方式、デフォルトユーザー、有効期限、複数の認証方式。
  • references/03-users-roles-grants-rbac.md:RBAC、権限付与、管理者相当の権限。
  • references/04-definer-impersonation-principals.md:SQL SECURITY DEFINER、EXECUTE AS、パスワードなしのプリンシパル。
  • references/05-network-exposure-and-tls.md:ホスト制限、ポート、TLS、公開範囲。
  • references/06-table-functions-external-sources.md:テーブル関数、SOURCES 権限、データ流出経路。
  • references/07-table-engines-and-external-integrations.md:外部テーブルエンジン、永続的な統合。
  • references/08-row-column-policy-security.md:行ポリシー、カラム権限、回避パターン。
  • references/09-settings-profiles-constraints-quotas.md:設定プロファイル、制約、クォータ、読み取り専用設定。
  • references/10-audit-logging-and-log-integrity.md:クエリログとセッションログ、log_query_settings、可観測性の欠落。
  • references/11-query-log-threat-hunting.md:ログからの不審な動作のハンティング。
  • references/12-secrets-named-collections-credentials.md:名前付きコレクション、シークレットの取り扱い、ハードコードされた認証情報。
  • references/13-password-hash-hygiene.md:ハッシュの一覧、重複ハッシュ、弱いハッシュの照合、安全な報告。
  • references/14-version-specific-security-checks.md:バージョンを考慮した確認。
  • references/15-cluster-distributed-security.md:クラスター全体の整合性と分散セキュリティ。
  • references/16-keeper-and-interserver-security.md:Keeper の公開範囲と ACL、サーバー間認証。
  • references/17-executable-udf-and-code-execution.md:実行可能な UDF とサーバー側コマンド実行。
  • references/18-encryption-at-rest-and-backups.md:保存データの暗号化、ストレージ認証情報、BACKUP/RESTORE の保存先。
  • references/19-http-interface-surface.md:HTTP ハンドラー、Play UI、CORS、HTTP 経由のデフォルト認証情報アクセス。
  • references/20-reporting-severity-and-output-format.md:重大度の基準と最終レポートの構成。

レポート形式

  1. ヘッダー:接続モード、クラスターまたは「シングルノード」、ClickHouse のバージョン、対象期間。
  2. 検出事項:check、severity、object、evidence、recommendation の列を含む表。検出事項ごとに 1 行とし、Critical を最初に記載します。エビデンスには結果行の数値を引用します。
  3. 問題のないチェック:問題のある行が返されなかったチェック ID を 1 行で列挙します。
  4. スキップされたチェックと失敗したチェック:ID と理由、または最初のエラー行を記載します。このセクションは必ず含めてください。
  5. 次のステップ:次に読み込むスキルと、直ちに実行するアクション。

references/20-reporting-severity-and-output-format.md の基準に従って重大度を評価し、各検出事項に信頼度と「検証不能」の注記を追加します。

マスキング

検出事項や引用したエビデンスに、シークレット、ハッシュ、ソルト、キー、トークン、接続文字列を決して出力しないでください。マスキング対象の全リストとプレースホルダーの規則は references/01-scope-and-safety.md に記載されています。出力するすべての内容に適用してください。

次に読み込むスキル

  • 特定のクエリが ACCESS_DENIED または NOT_ENOUGH_PRIVILEGES で失敗する場合、または正当な操作に最小限の権限付与が必要な場合 → スキル altinity-expert-clickhouse-grants を読み込む
  • クエリログまたはセッションログのテーブルが存在しない、一部が欠落している、または TTL が設定されていない場合 → スキル altinity-expert-clickhouse-logs を読み込む
  • Keeper またはインターサーバーへの露出について、レプリケーション側での確認が必要な場合 → スキル altinity-expert-clickhouse-replication を読み込む
  • アカウントによるクエリ量が不審な場合、または負荷の原因が不明な場合 → スキル altinity-expert-clickhouse-reporting を読み込む

コメント