Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 73 additions & 0 deletions .github/workflows/actions-security-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
name: Actionsのセキュリティチェック

# ワークフロー自体に潜むセキュリティ上の問題を zizmor で検査します。
# 対象は .github/ 配下の変更があったときだけです。
#
# 落ちたときの読み方(よく出るもの):
# unpinned-uses サードパーティの uses: をタグでなくコミットSHAで指定してください
# 例) foo/bar@v1 → foo/bar@<40桁SHA> # v1
# artipacked actions/checkout に persist-credentials: false を足してください
# (checkout は既定で書き込み権限つきトークンを .git に残すため)
# excessive-permissions permissions: を必要最小限に絞ってください
# template-injection ${{ }} を run: に直接書かず、env: 経由で渡してください
#
# 個別に許容したい指摘がある場合は、その行に次のコメントを付けられます:
# # zizmor: ignore[ルール名]
#
# 詳細な説明: https://docs.zizmor.sh/audits/

on:
push:
branches: [main]
paths:
- '.github/**'
pull_request:
paths:
- '.github/**'
workflow_dispatch:

permissions: {}

jobs:
zizmor:
name: zizmor による静的解析
runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
contents: read
steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false

- name: Run zizmor
id: zizmor
uses: zizmorcore/zizmor-action@6fc4b006235f201fdab3722e17240ab420d580e5 # v0.6.1
with:
inputs: .github/workflows/
# SARIF (advanced-security) は finding があっても失敗しないためゲートにならない。
# annotations は zizmor の終了コードをそのまま返すのでゲートとして機能する
advanced-security: false
annotations: true
min-severity: low

- name: 失敗したときの案内
if: failure()
run: |
{
echo "## Actionsのセキュリティチェックで指摘が出ました"
echo ""
echo "上の **Annotations** に、該当する行と理由が出ています。"
echo ""
echo "| ルール | 直し方 |"
echo "|---|---|"
echo "| \`unpinned-uses\` | サードパーティの \`uses:\` をコミットSHAで指定する(例: \`foo/bar@<SHA> # v1\`)|"
echo "| \`artipacked\` | \`actions/checkout\` に \`persist-credentials: false\` を足す |"
echo "| \`excessive-permissions\` | \`permissions:\` を必要な範囲まで絞る |"
echo "| \`template-injection\` | \`\${{ }}\` を \`run:\` に直書きせず \`env:\` 経由にする |"
echo ""
echo "意図的にその書き方をしている場合は、該当行に \`# zizmor: ignore[ルール名]\` を付けると除外できます。"
echo ""
echo "ルールの詳しい説明: https://docs.zizmor.sh/audits/"
} >> "$GITHUB_STEP_SUMMARY"