🌱

Artifact AttestationsやEDoS攻撃に関する話など|Productivity Weekly(2024-05-08)

2024/05/27に公開

こんにちは。サイボウズ株式会社 生産性向上チームの平木場です。

僕たち生産性向上チームは毎週水曜日に Productivity Weekly という「1 週間の間に発見された開発者の生産性向上に関するネタを共有する会」を社内で開催しています。
本記事はその時のネタをまとめたものです。

2023-01-25 号から、基本的に隔週で連載することとしました。たまに単独でも投稿するかもしれません。
今週は 2024-05-08 単独号です。

今回が第 151 回目です。過去の記事はこちら

news 📺

Introducing Artifact Attestations–now in public beta - The GitHub Blog

https://github.blog/2024-05-02-introducing-artifact-attestations-now-in-public-beta/

GitHub Actions において、ソフトウェア成果物が特定のワークフローで作られたことを証明するための機能である Artifact Attestations がパブリックベータとしてリリースされました(public beta)。

Artifact Attestations は、GitHub Actions 上でソフトウェア成果物に署名し、利用時にその署名を検証することで、その成果物が特定のワークフローで作られたことを証明できます。これにより、サプライチェーン攻撃にさらされるリスクを減らせます。署名と検証には、OSS である Sigstore が利用されています。

去年公開された、npm registry に provenance の情報を追加する機能に似ていますね。

専用のカスタムアクションが用意されており、簡単に署名できます。生成された証明書は自動で保存され GitHub 上で参照可能であるため、保存場所を考える必要はありません。
検証は、GitHub CLI を使って簡単に検証できます。また、証明書をあらかじめダウンロードしておくことで、オフラインでの検証も可能です。

なお、コンテナイメージにも対応しており、SBOM との関連付けができるカスタムアクションも用意されています。

さっそく試してみました。どんなコードでどんな感じになるか、気になる人は見てみてください。

これまでも独自の方法で署名し、利用時に検証することでリスクは軽減できましたが、それを GitHub の機能として手軽に利用できるようになったのが特に嬉しいポイントかと思います。
成果物の署名と検証のハードルが下がり、今後、個人か組織かに関わらず、ソフトウェア成果物を署名・検証するケースが増えていくかもしれません。

本項の執筆者: @korosuke613

OpenTofu 1.7.0 is out with State Encryption, Dynamic Provider-Defined Functions, and more | OpenTofu

https://opentofu.org/blog/opentofu-1-7-0/

OpenTofu v1.7.0 がリリースされました。OpenTofu は OSS の頃の Terraform からフォークされた Terraform 代替ツールになります。

v1.6.0 までは Terraform との互換性が重視されていましたが、v1.7 では OpenTofu 独自の機能が追加されています。

state ファイルの E2E 暗号化機能はそもそも Terraform には無いですし、プロバイダ定義関数については Terraform v1.8 で追加された機能であり、同じバージョンだから同じコードが動くわけではないことに注意が必要です。
(早くもどっちでどの機能が使えるのかわからなくなってきた)

OpenTofu と Terraform の競争がこれから激しくなっていきそうです。まだまだ Terraform が主流ですが、今後 OpenTofu に便利機能が追加されていくと、いつか逆転するかもしれませんね。
また、次の意見のように、競争が活発になることで両者の開発が加速することによるユーザーへのメリットもあると思います。

OpenTofuは明確にコミュニティからリクエストが多い機能を優先的に実装する方針を打ち出してるので、結果的に競合であるTerraformにもその圧力がかかって開発が加速するという構図になっており、よいことじゃないかなと思うなど
https://twitter.com/minamijoyo/status/1793079469605109850

今後も両者の動向に注目したいです。

本項の執筆者: @korosuke613

Dependabot pull requests jobs are now available to run on self hosted GitHub Actions runners - The GitHub Blog

https://github.blog/changelog/2024-05-02-dependabot-pull-requests-jobs-are-now-available-to-run-on-self-hosted-actions-runners/

Productivity Weekly で取り上げ忘れてしまっていましたが、4/22 からオプトイン可能となった Dependabot を GitHub Actions で動かせるようになる機能に関連したアップデートです。
先にこのアップデートについて軽く紹介をしておくと、今までは Dependabot の実行は GitHub Actions とは独立した機能でしたが、将来的には内部的な実行基盤を GitHub Actions に統合する予定のようです。Dependabot による GitHub Actions の実行については課金対象外であると明記されており、基本的にユーザーへの影響はなさそうです。
https://github.blog/changelog/2024-04-22-dependabot-updates-on-actions-for-github-enterprise-cloud-and-free-pro-and-teams-users/

Dependabot にはもともとプライベートレジストリに対してアクセス可能にするために認証情報を与える設定がありましたが、レジストリ自体がプライベートなネットワーク上に隔離されている場合は不可能でした。今回のアップデートでセルフホストランナーでも Dependabot を動かすことが可能になることで、セルフホストランナーのネットワーク構成次第でこのようなケースも対応可能となります。

Dependabot が利用するセルフホストランナーには dependabot のラベルを付与する必要があるのに加えて、Docker がインストールされている必要があるなどいくつかの細かい要件があります。ここには書ききれないので詳しくはドキュメントを参照してください。

ちなみに生産性向上チームでは以前から Dependabot よりも多機能でカスタマイズ性が高い Renovate を利用しているので、今回の機能追加は特に影響なさそうでした。Dependabot の代わりに Renovate もおすすめです。

本項の執筆者: @Kesin11

GitHub Copilot Chat in GitHub Mobile is now generally available - The GitHub Blog

https://github.blog/2024-05-07-github-copilot-chat-in-github-mobile/

GitHub Copilot Chat が GitHub のモバイルアプリこと GitHub Mobile 上で使えるようになりました。

Individual ライセンスのユーザは、デフォルトで設定が有効化されているので、GitHub Mobile 上ですぐに使えます。
Business、Enterprise ライセンスのユーザは、Enterprise 上での有効化や、ライセンスを割り当てている Organization 上での有効化が必要になるので、別途管理者に連絡しましょう。

次のツイートのように試してみたのですが、Copilot Chat がすでに知っているリポジトリについてはリポジトリに関する質問が可能です。有名どころのリポジトリは知っていそうでした。僕のリポジトリは知ってませんでした。
リポジトリに限らない一般的な技術の質問はやりやすそうです。

https://x.com/Shitimi_613/status/1793884909561688147

また、画像は貼ってないのですが、GitHub のドキュメントに関する質問には古い回答が返ってきたため、GitHub に関する質問は、サポートページでできる Copilot で聞くのがいいかもしれません。

Copilot Chat をスマホで使いたいぞ!という方は触ってみましょう。

本項の執筆者: @korosuke613

Actions: New region support for Azure private networking - The GitHub Blog

https://github.blog/changelog/2024-05-07-actions-new-region-support-for-azure-private-networking/

GitHub Actions の Azure private networking で新しいリージョンがサポートされ、東京リージョンも含まれています。
Azure private networking については以前も Productivity Weekly で紹介したので、気になる方はこちらの記事を参照してください。

Azure と GitHub Actions を利用している方には待望のアップデートでしょうか。

本項の執筆者: @r4mimu

know-how 🎓

Cloud Storageバケット名を知っていれば、EDoS攻撃を仕掛けられるのか?

https://blog.g-gen.co.jp/entry/cloud-storage-edos-risks

2024 年 4 月当時、Amazon S3 では API リクエストに対して課金が発生していました。そのため、ステータスコードが 403 AccessDenied を返すようなリクエストにも課金が発生してしまうので、EDoS 攻撃を受けるリスクがあるということが話題になっていました(参考)。

この記事では、Cloud Storage においても同様のリスクがあるかどうかを検証しています。
結論としては、Cloud Storage では 307、4xx、5xx レスポンスを返す場合は課金が発生しないため、S3 に比べると EDoS 攻撃を受けるリスクは低いとのことです。
ただし、静的ホスティングを行っており、404 レスポンスで表示させるコンテンツを設定している場合は課金が発生するそうです。また、データアクセス監査ログを有効化していると、ログの肥大化によるコストがかかることもあるので注意が必要とありました。

リスクや注意事項をまとめてくれていて、参考になりました。

なお、2024 年 5 月 13 日にアップデートがあり、S3 で 403 AccessDenied でも課金が発生しないようになりました。

本項の執筆者: @r4mimu

002号(2024/05/01) - SRE Magazine

https://sre-magazine.net/magazines/2/

有志の方々で作られている SRE Magazine の 002 号が公開されました。
SLO や OpenTelemetry といったサービスの運用にまつわる技術的な話題からちょっとした読み物まで、幅広い内容が掲載されています。

個人的には、この春SREになったあなたに贈る、心を折らないための読み物が良いなと思いました。新年度始まって、疲れやツラみを感じている方には特におすすめです。

開発生産性関連だと、巻頭言:Four keysの"Change lead time"をちょっと深堀るという記事がありました。
なにかと話題になりがちな Change lead time の定義について振り返っており、勉強になりました。

これからの連載にも期待です。

本項の執筆者: @r4mimu

actions/cache@v4ではヒットしなかったときcache-hit=='false'にならない - ぽよメモ

https://poyo.hatenablog.jp/entry/2024/05/04/094730

actions/cache@v4 ではキャッシュがヒットしなかった場合、cache-hitfalse ではなく空文字列が返される仕様になっているようです。
そのため、if: steps.cache.outputs.cache-hit == 'false' という条件でキャッシュがヒットしなかった場合の処理を書いていると、意図通りに動作しないため、if: steps.cache.outputs.cache-hit != 'true' という条件で書き換える必要があるとのことです。

v3 から v4 へのアップデートにおける Breaking Change には記載されていなかったらしく、自分も知らなかったです。

本項の執筆者: @r4mimu

read more 🍘

Productivity Weekly で出たネタを全て紹介したいけど紹介する体力が持たなかったネタを一言程度で書くコーナーです。

  • know-how 🎓
  • tool 🔨
    • Octo STS 入門
      • Octo STS という GitHub のアクセストークンをよりセキュアに扱うためのツールの紹介本です
      • Octo STS の説明、使い方、なぜ必要なのか、使う上での課題、コードリーディング内容などが載っています
      • セルフホストもできそうなので気になりますが、まだ開発途上らしいので、今後も注力していきたいです

本項の執筆者: @korosuke613

あとがき

暑くなってきましたね。今週号でした。
実は今週号から一部 GPT-4o による自動レビューを導入しています()。面白いです。

そういえば、生産性向上チームでは夏の学生インターンを募集しています。なんと 5/17 より二次募集を開始しています。
興味ある方はぜひエントリーしてみてください。

https://cybozu.co.jp/company/job/recruitment/intern/improvement.html

サイボウズの生産性向上チームでは社内エンジニアの開発生産性を上げるための活動を行なっています。そんな生産性向上チームが気になる方は下のリンクをクリック!
https://speakerdeck.com/cybozuinsideout/engineering-productivity-team-recruitment-information


GitHubで編集を提案
サイボウズ 生産性向上チーム 💪

Discussion