GitHubSecurityLab/actions-permissions 触ってみる
 Futa Hirakoba
Futa Hirakobaこれ
New tool to secure your GitHub Actions | The GitHub Blog
 Futa Hirakoba
Futa Hirakoba自分の持ってるリポジトリで使ってみる。
 Futa Hirakoba
Futa Hirakobaブログ内容読み読み
- actions-permissions はワークフローを監視して実行に必要な最小限の権限を教えてくれるアクション
- パブリックベータ
- 
GITHUB_TOKENは元々リポジトリへの完全な読み取り書き込み権限を持ってた- フォークからのプルリク除く
 
- 2021 年に .permissionsの概念が生まれ、現在、新規リポジトリ・Organizationのデフォルトは読み取り専用となっている
- 既存のリポジトリ、org は以前として強い権限がデフォ
- デフォを読み取り専用にしてほしいが、既存のワークフローがぶっ壊れる可能性が高い
- 必要な権限を明らかにするのはむずい
- 移行をスムーズにするために今回のアクションを公開
 Futa Hirakoba
Futa HirakobaMonitor アクション
- ローカルプロキシをランナーにインスコし、使われた GitHub API の情報を収集
- サードパーティには送信されない
 
- サマリーに推奨の最小権限を表示
Advisor アクション
- ワークフローの複数の実行からの推奨事項を要約できる
- (おそらくこれまでのワークフローランのログから推測すると思う)
 
- ローカルツールとしても利用可能
 Futa Hirakoba
Futa HirakobaAdvisor アクション触ってみる
- 既存のワークフローに組み込まなくても使える&ローカル実行できるため、ハードルが低い
- なんか上手く動いてる感じがしない
 Futa Hirakoba
Futa Hirakobaローカル実行
Download the index.js script and run it as:
node index.js <workflow_name.yml> <number_of_the_last_runs> <github_owner> <repo_name> <branch_name>
An environment variableGITHUB_TOKENmust be set to your PAT with repo scope granted for the repository you want to analyze.
個別のダウンロードだるいのでクローンする。
 Futa Hirakoba
Futa HirakobaPAT 作る。
fine-grained だと必要なスコープがわからない。

一旦 contents の read を与えた
 Futa Hirakoba
Futa Hirakoba検証には自分のホームページのを使う。
まずは ci.yaml。
❯ cd advisor/
❯ npm i
added 27 packages, and audited 28 packages in 2s
❯ node ./index.js ci.yaml 10 korosuke613 homepage-2nd main
Analyzing ci.yaml for the last 10 successful runs.
Minimal required permissions for ci.yaml:
No permissions logs were found.
No permissions logs were found.
必要な権限はなかった...ってこと!? 2 分かかった。
 Futa Hirakoba
Futa Hirakoba一番必要そうな pages.yml も確認。(すでに permissions 設定してるけど)
❯ node ./index.js pages.yml 10 korosuke613 homepage-2nd main
Analyzing pages.yml for the last 10 successful runs.
Minimal required permissions for pages.yml:
No permissions logs were found.
??
使い方間違ってんのかな。
怪しいのでワークフローの方も使ってみよう。
 Futa Hirakoba
Futa Hirakobaワークフローの方試す


うーん、pages.yml は権限のログが見つからず。
他の yml も試したけど同じ。謎い
 Futa Hirakoba
Futa Hirakobaおっと、勘違いしていた。
Advisor アクションは Monitor アクションを複数回実行した結果を集約して総合的に分析するためのツールか。(アクション内で if 分を使ってたりするため)
どちらにせよ Monitor アクションが使えないと厳しいな。
 Futa Hirakoba
Futa HirakobaMonitor アクションを触ってみる
- 各ジョブの先頭に記述しないといけない
- ジョブを動かさないといけない
- 通信を監視させるのは少し抵抗があるかもしれない
- reusable workflows との相性が悪い
- アクションのセットアップが長い!(1分近くかかる)
- playwright のインストールに失敗する
 Futa Hirakoba
Futa Hirakobaとりあえず全てのジョブに追加。
reusable workflow の呼び出し元には追加できなくてむずい。
 Futa Hirakoba
Futa Hirakobaaction のセットアップに時間がかかった(1分くらい)
npm ci に 2 分くらいかかり、終わったと思ったら落ちた。

playwright のインストールがうまくいかなかったようだ。
うーん....
playwright を使わない別ディレクトリではうまくいった。

 Futa Hirakoba
Futa Hirakoba Futa Hirakoba
Futa Hirakobaproxy してるせいか、ネットワーク通信全般が遅い
 Futa Hirakoba
Futa HirakobaDeno 使うジョブでも落ちた。Sending fatal alert UnknownCA ってエラー。
プロキシしてる故の弊害出てるなー厳し〜
Run deno run --allow-read --allow-run=git,grep ./tools/checkDuplicateEmoji.ts
Download https://registry.npmjs.org/gray-matter
Sending fatal alert UnknownCA
error: Error getting response at https://registry.npmjs.org/gray-matter for package "gray-matter": error sending request for url (https://registry.npmjs.org/gray-matter): error trying to connect: invalid peer certificate: UnknownIssuer: error trying to connect: invalid peer certificate: UnknownIssuer: invalid peer certificate: UnknownIssuer
    at file:///home/runner/work/zenn-articles/zenn-articles/tools/checkDuplicateEmoji.ts:3:26
Error: Process completed with exit code 1.
 Futa Hirakoba
Futa Hirakobamonitor を使うと本来 2 分くらいで終わる Dry-run Renovate が 20 分弱かかる...
 
 Futa Hirakoba
Futa Hirakobaunknows: unknownでワロタ
 
 Futa Hirakoba
Futa Hirakobaちょっとまだまだ荒い感じあるので探求は一旦中断。
正式リリースされたらまた触ることにします。
 Futa Hirakoba
Futa Hirakoba通信遅すぎてタイムアウトする件、Issue 作って 3 週間近く経つけど何一つレスポンスない。
やる気ないのかも
