secure-github-actions について
GitHub Actionsワークフローの作成、レビュー、監査を支援するセキュリティスキルです。CIを保守する開発者向けに、コミットSHAの固定、最小権限、信頼できない入力の安全な処理を重視し、作業別の参考ファイルを使います。
主な機能
- 01外部usesを完全なSHAに固定
- 02信頼できない値のシェル直挿入を回避
- 03最小権限を明示
- 04信頼境界とシークレット漏えいを確認
- 05作業別のセキュリティ資料を参照
活用シーン
- 01GitHub Actionsワークフローの作成・編集
- 02ワークフローの依存関係と権限の確認
- 03リポジトリ全体のセキュリティ監査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ vechain/ vechain-ai-skills --skill secure-github-actionsインストール後、Claude Code で/secure-github-actionsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/audit-checklist.mdsecure-patterns.mdsha-pinning.mdworkflows.md詳細
セキュアな GitHub Actions
サプライチェーンの安全性を確保するデフォルト設定で、GitHub Actions のワークフローを作成、レビュー、監査します。
重大なルール
- まず関連するリファレンスファイルを読んでください。 ユーザーの依頼が以下のリファレンステーブルにあるトピックに関係する場合は、ほかの作業に着手する前に該当ファイルを読んでください。スキルが有効であることをユーザーが確認できるよう、どのファイルを読んでいるかを簡潔に伝えてください。
- ローカル以外のすべての
uses:参照は、40 文字の完全なコミット SHA に固定してください。@v*、@main、@master、ブランチ名、短い SHA はセキュリティ上の負債として扱ってください。 - SHA を捏造してはいけません。 GitHub から確認するか、ユーザーに尋ねてください。正しい SHA を検証できない場合は、作り上げずにその旨を明示してください。
- ユーザーが明示的に求めており、かつワークフローがシークレットや書き込み権限を使って信頼できないコードを実行しない場合を除き、
pull_request_targetを導入してはいけません。 - 信頼できないコンテキストをシェルに直接埋め込んではいけません。
${{ github.* }}、${{ inputs.* }}などの値はenv:に移し、シェル変数を引用符で囲んでください。 - 最小権限の
permissions:を明示的に設定してください。 デフォルトは読み取り専用とし、書き込みスコープは必要とする特定のジョブにのみ付与してください。 - リポジトリの「監査」、「強化」、「セキュリティスキャン」を依頼された場合は、必ず監査チェックリストをすべて実施してください。
- チェックを黙って省略してはいけません。 ツール(gitleaks、trufflehog、zizmor)がない場合は、そのことを報告し、インストール方法を提案してください。
- コンテキストの圧縮や喪失の後は、続行する前にこの SKILL とリファレンスファイルを読み直してください。
作業手順
ワークフローの作成または編集
- 作業を分類します:新規ワークフロー、ワークフローの編集、再利用可能なワークフロー、またはセキュリティレビュー。
- references/workflows.md と references/secure-patterns.md を読みます。
- すべての
uses:参照を監査します。./.github/actions/fooのようなローカルアクションは問題ありません。- ステップレベルのアクションとジョブレベルの再利用可能なワークフローは、完全な SHA を使用する必要があります。
- コメントに人が読めるリリースラベル(例:
# v4.3.1)を残してください。
- 信頼境界を監査します。
pull_request_targetよりもpull_requestを優先してください。- フォークからの PR データは信頼できないものとして扱ってください。
- 信頼できないコードパスでシークレットや書き込みトークンを公開しないでください。
- すべての
run:ステップを監査します。- 動的な値は
env:を介して渡してください。 - シェル変数を引用符で囲んでください。
- どちらでも対応できる場合は、新しいサードパーティ製アクションを追加するより、シンプルなシェルを優先してください。
- 動的な値は
- メンテナンスのためのガードレールを追加または更新します。
- Dependabot が
github-actionsエコシステムを更新するようにしてください。 - 推移的なリスクに注意を促してください。アクションを固定しても、その内部で可変のアクションが参照されている場合があります。
- Dependabot が
セキュリティ監査の全実施
リポジトリの「監査」、「強化」、「セキュリティスキャン」を依頼された場合:
- references/audit-checklist.md を読みます。
- 可能であればサブエージェントを使って並列化し、すべてのチェックを実行します。
- 結果を重大度別に分類して提示します:CRITICAL、HIGH、MEDIUM、LOW。
- 最後に要約テーブルと、優先順位を付けた対応項目を記載します。
リファレンスファイル
| トピック | ファイル | 読むタイミング |
|---|---|---|
| ワークフローの強化パターン | references/workflows.md | ワークフローの作成、編集、レビュー時 |
| セキュアなワークフローテンプレート | references/secure-patterns.md | ワークフローを新規作成するとき |
| 監査の全手順 | references/audit-checklist.md | リポジトリのセキュリティ監査を実施するとき |
| SHA 固定の自動化 | references/sha-pinning.md | アクションをコミット SHA に固定するとき |
ツール
監査では以下のツールを確認し、見つからないものを報告します。
| ツール | 用途 | インストール |
|---|---|---|
gitleaks | Git の履歴をスキャンしてシークレットを検出 | brew install gitleaks |
trufflehog | 検証機能付きの詳細なシークレットスキャン | brew install trufflehog |
zizmor | GH Actions の静的解析 | brew install woodruffw/tap/zizmor |
gh | API 呼び出し用 GitHub CLI | brew install gh |
コメント
Markdown 対応