変更要約: GH-200 第5章を新規作成(セキュリティのベストプラクティス=スクリプトインジェクション緩和・GITHUB_TOKEN 最小権限/PAT対比・OIDC クラウド連携・SHA ピン留め/信頼できるアクション/利用ポリシー・アテステーション/provenance(SLSA)・環境承認ゲート、パフォーマンス/コスト最適化=actions/cache・retention(REST API)・matrix サイズ/max-parallel・concurrency+cancel-in-progress・paths/branches フィルター・if 条件・ランナーサイズ)
5.1セキュリティのベストプラクティス
スクリプトインジェクションの緩和、GITHUB_TOKEN のライフサイクルと最小権限・PAT との対比、クラウド連携の OIDC(長期シークレットの排除)、サードパーティアクションの SHA ピン留めと信頼できるアクションの選定・利用ポリシー、アーティファクトのアテステーション/来歴(provenance)、環境の承認ゲートを理解します。
CI/CD はソースコード・シークレット・本番環境に触れるため、攻撃者の標的になりやすい領域です。GH-200 の最終ドメインは、ワークフローを 安全に設計 する実践を問います。中心となる原則は 最小権限・信頼できるコードだけを実行・長期シークレットを持たない の 3 つです。
5.1.1スクリプトインジェクションの緩和
スクリプトインジェクション は、PR タイトルや Issue 本文・ブランチ名などの 信頼できない入力 を run: のシェルコマンドに直接埋め込むと起きます——攻撃者が ${{ github.event.issue.title }} に悪意あるコマンドを仕込むと、ランナー上で実行されてしまいます。緩和策は、信頼できない値を run: に直接展開しない(中間の 環境変数 に入れて "$VAR" のように 引用 して使う)、入力の検証/サニタイズ、最小権限 の付与、そして可能なら インラインスクリプトより検証済みアクション を使うことです。
5.1.2GITHUB_TOKEN の最小権限と PAT との対比
各実行に発行される GITHUB_TOKEN は 一時的(ephemeral) で、ジョブ終了とともに失効する スコープ付き の資格情報です。permissions: キーで contents: read のように 最小権限 に絞り、書き込みが要るジョブだけ昇格させます。一方、個人の PAT(Personal Access Token) は長期間有効で広い権限を持ちがちなため、ワークフローでの常用は避け、必要な場合もシークレットに保存して最小スコープにします。原則として「まず GITHUB_TOKEN、足りない時だけ最小スコープの別資格情報」です。

