Open5

GitHub の Code scanning(CodeQL)がワークフローファイルなしで実行できるようになっていた

hankei6kmhankei6km

2023-01-24 に Code scanning を有効化しようとしたらセットアップ用の UI が変更されていた。

たぶんこれが有効になっている。
https://github.blog/2023-01-09-default-setup-a-new-way-to-enable-github-code-scanning/

ボタンをクリックするとプルダウンで Default と Advanced が表示される。検出された言語が対応できる場合は Default がクリックできるもよう。Default を選択して設定内容を確認するとワークフローのファイル作成なしでそのままスキャンが実行される。

コミットしないでいいので楽といえば楽。が、しかし、実行結果の Summary を見てもワークフローを表示するボタンはない(どうやってるんだこれ?、GitHubアプリ?)。

ワークフロー実行結果の Summary 画面に「Workflow file」ボタン(通常は表示されている)が表示されていないスクリーンショット

あとから Advanced へ変更する場合もリポジトリの Settings / Code security and analysis からできるもよう。

(2023-03-23 追記)

追記が増えてきたので簡単なまとめ

Default はお手軽でよいのだが、現状ではワークフローを作成した方がよさそうという結論になる。

よさそう

  • ワークフローの更新などを気にしなくてもよい
    • 利用しているアクションが deprecated になった的なことがなくなる

よくなさそう

hankei6kmhankei6km

これはイベントに pull_request を使ったからかも。あとで確認。
確認した。このコメントに返信してある。

よくなさそうに追加。

ぱっと見で、どのイベントと ref に反応したかわかりにくい。

リポジトリの Actions タブで、一覧にCode QL のワークフローが表示されているスクリーンショット。Code QL では  が表示されていない

ログを見るとわかる、かな(PR でないとどうなる?)。

Run actions/checkout@v3
  with:
    repository: hankei6km/test-functions-framework-pubsub-ts
    token: ***
    ssh-strict: true
    persist-credentials: true
    clean: true
    fetch-depth: 1
    lfs: false
    submodules: false
    set-safe-directory: true
  env:
    CODE_SCANNING_REF: refs/pull/14/head

アラートが出たときはコミット内のファイルを指していたので、めっちゃ困るというわけでもないかな。

hankei6kmhankei6km

上のコメントで打ち消したコレ。

これはイベントに pull_request を使ったからかも。あとで確認。

冷静に考えてみると、自分で作ったワークフローが使っているイベントは関係ない。あと、設定するときにイベントの説明が表示されていた。
Code scanning をDefault で設定するときに表示されるダイアログのスクリーンショット

On push and pull requests to main and 0 protected branches.

が、いちおう試した。やっぱり関係ない。 ref やどのイベントに反応しかたは表示されない。
ワークフロー実行結果の一覧のスクリーンショット、CodeQL の実行結果にはイベントの種類などが表示されていない

で、ついでなので、いま時点(2023-10-25)で Advanced を選択するとどうなるか確認してみた。

生成されるワークフローはこんな感じ。

https://github.com/hankei6km/test-codeql-default-event/blob/5e19b03e39b5d36e64f3957bb83d7517250b4df9/.github/workflows/codeql.yml

こっちは「そうなるよね」的な感じになる。

ワークフロー実行結果の一覧のスクリーンショット、CodeQL の実行結果にもイベントの種類などが表示されている

Actions タブに表示されるけど、普通のワークフローとは微妙に異なる感じなのかなと。

hankei6kmhankei6km

Dependabot の PR

これには反応しなかった( 開発用の依存関係のdeps-dev だから?)。あまり困ることないような気もするけど、バンドル(ビルド)したコードに問題あるとアラート出るときもあるから、そういうときは困るのかな?

ワークフローの実行結果で Dependabot の PR に反応したテスト用ワークフローの
一覧が表示されているスクリーンショット、CodeQL のワークフローの実行結果は表示されていない

hankei6kmhankei6km

定期的なスキャンは行われない

上記の Advanced 設定により作成したワークフローがもうすぐ disabled になるという、いつものメールが届いた。

それ自体は、リポジトリをそのままにしておいたからなのだが、よくよく考えるとワークフローを作成しなかった場合、定期的なスキャンは行われていなかった。

push などでスキャンされたときはよかったとしても、あとから新しい攻撃方法が発見されて「やっぱりこのコードは問題ある」という状況に対応できないのでないかな。

その辺を含めて Bing の AI チャットで確認。

「github のコードスキャンニングはワークフローを作成しなくても実行できるようになりましたよね?」

こんにちは、こちらはBingです。😊
GitHubのコードスキャンニングは、セキュリティの脆弱性やコーディングエラーを見つけるためにリポジトリ内のコードを分析する機能です¹。ワークフローを作成しなくても実行できるようになりましたが、GitHub Actionsを使って自動的にスキャンすることもできます²³。
どのような目的でコードスキャンニングを利用したいですか?

ソース: Bing との会話 2023/3/22(1) コード スキャンについて - GitHub Docs. https://docs.github.com/ja/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/about-code-scanning アクセス日時 2023/3/22.
(2) GitHub Actionsにcode scanningを導入してみた - Qiita. https://qiita.com/nekorou/items/a6fb8ab9fcdbac1b9d4b アクセス日時 2023/3/22.
(3) About code scanning - GitHub Docs. https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/about-code-scanning アクセス日時 2023/3/22.

「ワークフローを作成しない場合、定期的なスキャンが行われないのですが、スキャンされるように対応する方法はありますか?」

こんにちは、こちらはBingです。😊
GitHubのコードスキャンニングは、セキュリティの脆弱性やコーディングエラーを見つけるためにリポジトリ内のコードを分析する機能です¹。ワークフローを作成しなくても実行できるようになりましたが、GitHub Actionsを使って自動的にスキャンすることもできます²³。
どのような目的でコードスキャンニングを利用したいですか?

ソース: Bing との会話 2023/3/22(1) コード スキャンについて - GitHub Docs. https://docs.github.com/ja/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/about-code-scanning アクセス日時 2023/3/22.
(2) GitHub Actionsにcode scanningを導入してみた - Qiita. https://qiita.com/nekorou/items/a6fb8ab9fcdbac1b9d4b アクセス日時 2023/3/22.
(3) About code scanning - GitHub Docs. https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/about-code-scanning アクセス日時 2023/3/22.

「ワークフローを作成しない方法はお薦めではないというこですか?」

ワークフローを作成しない方法は、コードスキャンニングの機能を十分に活用できない可能性があります。ワークフローを作成することで、スキャンの頻度や対象ブランチ、使用するツールなどをカスタマイズできます。
ワークフローの作成には何か困難がありますか?

いちおうドキュメントもさらっと確認したが、やはり定期的な実行はできないもよう。

https://docs.github.com/ja/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning-for-a-repository