Kush's Wiki
最小権限の原則
Principle of Least Privilege
#
Security
ユーザーやプロセスに対して、その役割を遂行するために必要な最小限の権限のみを付与する原則
不要な権限を排除することで攻撃面を削減し、セキュリティ侵害時の影響範囲を制限する
zizmor/
excessive-permissions
#Security zizmorの audit。workflow / job レベルの permissions: が、その job が実際に必要とする以上の write 権限を持っているケースを検出する 検出例 permissions: id-token: write jobs: build: runs-on: ubuntu-latest publish: runs-on: ubuntu-latest steps: - uses: pypa/gh-action-pypi-publish@... なぜ危険か 上の例は workflow ルートで id-token: write を宣言しており、実際に必要なのは publish job のみ。build job にも同じ権限が継承される build 内で third-party action が侵害された場合(unpinned-uses)、本来不要な id-token: write も奪われる 被害は job が持つ GITHUB_TOKEN のスコープに比例する。最小権限の原則を CI トークンにも適用する 改善例 permissions: {} jobs: build: runs-on: ubuntu-latest publish: runs-on: ubuntu-latest permissions: id-token: write steps: - uses: pypa/gh-action-pypi-publish@... https://docs.zizmor.sh/audits/#excessive-permissions
セキュアなソフトウェアの設計と開発
PAT
Personal Access Token #Security/Authentication GitHub のユーザー本人として API / Git 認証に使う個人向けアクセストークン。パスワードの代わりとなる認証情報で、HTTPS での Git 操作や gh CLI、外部サービスからの GitHub 連携に用いる 特徴 classic と fine-grained の 2 種類があり、fine-grained はリポジトリ単位・権限単位でスコープと有効期限を絞れる ユーザー権限を継承する長命トークンになりやすく、最小権限と短い有効期限の設定が推奨される https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens
デジタルアイデンティティのすべて