GitHub Actions をロックする

2026/11/12 7:16

GitHub Actions をロックする

RSS: https://news.ycombinator.com/rss

要約▶

日本語翻訳:

GitHub Actions は、変更可能なソフトウェアタグに関連するサプライチェーンのセキュリティリスクを大幅に軽減するために「workflow lockfiles」を導入し、ユーザーが完全な SHA ハッシュではなく安定したタグを使用して特定のバージョンをピン固定できるようにしています。この機能を導入するには、開発者が

$ gh extension install github/gh-actions-lock
を使用して
gh-actions-lock
拡張機能をインストールする必要があり、これは各ロックされたアクションの
ref
、
commit
、
owner_id
および
repo_id
の詳細を含むメタデータファイル(
.github/workflows/actions.lock
)を生成します。検証は CI ジョブを使用して簡略化され、コマンド
gh actions-lock --verify
によって行われ、またはロックファイルをサポートするリンターであるセキュリティツール
zizmor
(バージョン v1.32.0 から以前はハッシュピン固定が必要だった)を統合することでも可能になります。顕著なのは、このアプローチが Renovate や Dependabot などの一般的な自動化プラットフォームとシームレスに統合されることであり、チームが既存の更新パイプラインを手放す必要がない点です。ただし、workflow アクションを変更する場合はロックファイルを再生成する必要があり(
$ gh actions-lock
を使用)、新しい検証 workflow を追加する場合も再ロックが必要です。現在の拡張機能はバージョン v0.4.1 にピン固定されており、更新には手動または自動化による管理が必要となる可能性があります。しかしながら、この移行によりセキュリティチームは生態系全体に厳格なハッシュピン固定を強制することなく、攻撃を効果的に緩和することが可能になります。この使用方法を示す例プロジェクトには、
python-pillow/Pillow
、
python/release-tools
、
python/miss-islington
、および
python/cpython
が含まれます。

本文

GitHub Actions ワークフロー用ロックファイルの導入と運用ガイド

セクション:背景と重要性

  • セキュリティ向上: Git からワークフローを取得するため、以前は完全なコミット SHA をピン留め(固定)することが推奨されていました。
  • タグのリスク: タグは変更可能であり、攻撃者が安全だったタグを悪意あるコードへ差し替えるようなサプライチェーン攻撃の対象となり得ます。
  • 新しい対応策: GitHub Actions には現在、ワークフロー用のロックファイルがサポートされています。

セクション:インストールとロック処理

インストール

gh CLI
に
gh-actions-lock
拡張機能をインストールします。

$ gh extension install github/gh-actions-lock
✓ Installed extension github/gh-actions-lock

ロック処理(Lock 'em)

リポジトリ内で以下のコマンドを実行します。

$ gh actions-lock
✓ All 1 workflows valid

これにより、ワークフロー内のアクションの指定が

vX.Y.Z
フォーマットのタグに変更されます。

変更例(Diff)

コミット SHA がタグに置換される様子です。

--git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
 index 946971c..3503e07 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -13,7 +13,7 @@ jobs:
     runs-on: ubuntu-latest

     steps:
-      - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
+      - uses: actions/checkout@v7.0.1
         with:
           persist-credentials: false
-      - uses: j178/prek-action@44924fe9ef4a6f88253c4b6b1bf11c689d3ce53d # v3.1.0
+      - uses: j178/prek-action@v3.1.0

また、

.github/workflows/actions.lock
というロックファイルが自動的に生成されます。このファイルは手動での編集はおやめください。更新には必ず
gh actions-lock
を実行してください。

生成されるロックファイル例

# このファイルは `gh actions-lock` により機械的に生成されています。
# 手動での編集はおやめください。更新には `gh actions-lock` を実行してください。
# ドキュメント: https://gh.io/actions-lockfile
version: 'v0.0.3'
workflows:
    '.github/workflows/lint.yml':
        - 'actions/checkout@v7.0.1'
        - 'j178/prek-action@v3.1.0'
dependencies:
    'actions/checkout@v7.0.1':
        ref: 'v7.0.1'
        commit: 'sha1-3d3c42e5aac5ba805825da76410c181273ba90b1'
        owner_id: 44036562
        repo_id: 197814629
    'j178/prek-action@v3.1.0':
        ref: 'v3.1.0'
        commit: 'sha1-44924fe9ef4a6f88253c4b6b1bf11c689d3ce53d'
        owner_id: 10510431
        repo_id: 1052387486

手順: 変更されたワークフローおよび新しいロックファイルをコミットしてください。

セクション:既存ツールとの互換性(Renovate と Dependabot)

  • 対応状況: Renovate と Dependabot の両ツールがすでにロックファイルに対応しています。
  • 自動更新: 定期的な更新操作により、ロックファイルも自動的に更新されます。
  • 注意点: クールダウン期間の設定を忘れないでください。

セクション:検証(Validate)

GitHub は、ロックファイルが最新かつ破損していないことを CI で確認することを推奨しています。独立したジョブとして検証を行うワークフロー例を示します。

name: Lint
on: [push, pull_request, workflow_dispatch]
permissions: {}
env:
  FORCE_COLOR: 1
  RUFF_OUTPUT_FORMAT: github

jobs:
  lint:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v7.0.1
        with:
          persist-credentials: false
      - uses: j178/prek-action@v3.1.0

  # .github/workflows/actions.lock がワークフローと同期外にある場合、
  # またはロックされたピンが上流で検証に失敗した場合に失敗します。
  lockfile:
    runs-on: ubuntu-slim
    env:
      GH_TOKEN: ${{ github.token }}

    steps:
      - uses: actions/checkout@v7.0.1
        with:
          persist-credentials: false
      - run: gh extension install github/gh-actions-lock --pin v0.4.1
      - run: gh actions-lock --verify

重要な注意点

  • 軽量ランナー: ここでは検証用に軽量な
    ubuntu-slim
    ランナーを使用しています。
  • バージョン管理:
    v0.4.1
    にピン留めしていますが、将来的には更新するか自動化方法を検討する必要があります。
  • 再実行の必要性:
    • ワークフロー内のアクションを最近変更した場合、
      gh actions-lock
      を再実行してロックを更新
      する必要があります。
    • lint.yml
      内に検証ステップを追加しても、すでに
      actions/checkout
      がロックされているため実質的な変更はありません(ただし CI はその状況を認識します)。
    • 新しいファイル(例:
      verify-lockfile.yml
      )を作成した場合は、それに対して再度ロック処理を行う必要があります。

セクション:セキュリティリンター「zizmor」の導入

zizmor は GitHub Actions 用のセキュリティリンターであり、強く推奨されます。利用していない場合はぜひ導入してください。

  • SHA ピン留め: v1.32.0 以前のパッケージは SHA ピン留めを促しますが、v1.32.0 が初めてロックファイルに対応したバージョンです。
  • 設定方法:
    prek
    で利用している場合は、
    .pre-commit-config.yaml
    に
    zizmor
    の設定を追加または更新してください。
- repo: https://github.com/zizmorcore/zizmor-pre-commit
  rev: v1.32.0
  hooks:
    - id: zizmor

セクション:完了と参照事例

ロック処理が完了しました!コミットしてプッシュしましょう。

参考事例

同じ日のほかのニュース

一覧に戻る →

2026/11/12 3:21

AWS エミュレーター

## 日本語翻訳: AWS Emulator は、実際の AWS アカウントが必要なく、サービス料金も発生しないローカルソリューションとして、AWS API に対するソフトウェアテストを提供します。リクエストを実際のサービスではなくローカルにルーティングします。ローカルマシン、開発サーバー、CI エンバーメント上で動作し、**Server モード**(CLI/SDK を使用、AI エージェントには AWS CLI v2.35.0+ が必須)、**Embedded モード**(Rust バイナリに直接統合)、および **direct integration** の 3 つの柔軟なモードをサポートします。グラフィカルインターフェースは備えていませんが、環境変数または直接的な HTTP クライアントコールによる設定で利用可能です。インストールには重要な前提条件が必要です:Rust ツールチェーン、C コンパイラ、少なくとも 100 GB のディスクスペース、マルチコアプロセッサ。Linux ユーザーはソースからビルド可能(x86_64/aarch64)ですが、Windows と macOS ユーザーは Docker を使用する必要があります。Cold full build はすべての crates をコンパイルしますが、その後の増分ビルドの方が高速です。Embedded モードも同様のビルドコストがかかります。デフォルトでは `127.0.0.1:9297` で HTTPS を提供し、自己署名証明書を使用します。Telemetry はデフォルトで有効となり、最小限の使用データを収集しますが(認証情報やコンテンツは除外)、CLI フラグ、環境変数、または構成ファイルによって無効にできます。本ソフトウェアは開発およびテスト用途のみを想定しており、本番環境またはセキュリティ用途には使用しないでください。ライセンスは CC0 1.0 Universal です(ベンダーコードについては Apache 2.0 の例外あり)。問題は GitHub Issues を通じて報告されます。

2026/11/11 16:03

Tim Peters が死去した

## Japanese Translation: Tim Peters の死去は、愛称「Timbot」として親しまれる彼が Python の歴史の基盤となる柱の一つを失ったことを象徴する。2001 年から 2014 年まで Python Software Foundation のステアリングコミーティーに在籍したピボタルフイグである Peters は、Python コードを実行した第 2 号人物であり、かつその核心メカニズムの主要な設計者の一人でもあった。彼の技術的遺産は膨大で、言語そのものを共設計し、「Python の禅」 (PEP 20) を著述し、Java および Android システムで標準となっている効率的なソートアルゴリズムである Timsort を開発した。これらのハイライトに加えて、pymalloc の改良、Py_ADDRESS_IN_RANGE や循環ガベージコレクターといった内部コンポーネントの最適化、簡易的なジェネレーターの基盤作りなどを行い、float オブジェクト、math モジュール、dict の最適化、weakref.txt、difflib、pickletools、tabnanny、doctest といった多くの必須モジュールにも寄与した。キャリア初期には Cray Research でスーパーコンピューター用のコンパイラ開発に携わり、Dragon Systems で音声認識ソフトウェアを開発した。彼のコード以外にも、彼はその忍耐強くユーモアに富んだメーリングリスト上の指導を通じてコミュニティを形作り、創業者である Guido van Rossum のスタイルによく似ていたことで知られ、「Timbot」という愛称もこの評判を反映している。彼は Python が int と float の間での混合演算をサポートするよう主張した。行政的な対立によってリーダーシップからの退任およびその後のステアリングコミーティーによる禁止措置を受けることとなったが、同僚らはそれを機に開発者の自由な支援を手放しなかったことを指摘している。

2026/11/12 6:24

ユナイテッド航空が、旅行者代わりのフライト予約においてAIエージェントの使用を禁止しました

## Japanese Translation: ユナイテッド航空は、フライトの予約やチェックインを実行することを人工知能(AI)エージェントから厳格に禁止しており、シームレスな自動化よりもセキュリティを最優先しています。この決定的な措置は、連邦法違反を防ぎ、支払い詳細や認証情報など、不正な AI ツールによって晒される可能性のある機密顧客データを保護することを目的としています。航空会社はまた、自律型エージェントが意図せぬ購入やマイレージプラスマイルの誤用を引き起こすことを懸念しており、AI によるチェックインは荷物验证を対面で行うことを要求する規制に違反する可能性もあるとしています。スウェーショアのような競合他社(フライト在庫を人気チャットボットに表示することを許可している)とは異なり、ユナイテッドはこれらのツールに対する直接予約チャンネルを即座に閉鎖しています。Google Flights などの集約プラットフォームを通じた通常の検索は引き続き利用可能ですが、高度な AI ボットを使用してチケットを予約したりチェックインを試みる場合は、人間による介入が必要となります。業界の分析家は、この変化が、AI ボットによって引き起こされる検索急増に伴う高いコストを回避し、顧客データに対する厳格な制御を維持することを目指すユナイテッドの意向を反映していると考えています。結局のところ、自動化された旅行管理ソリューションに依存している企業のワークフローを妨げることになっても、規制遵守を確実にするためにより航空会社はそのポリシーを調整しています。

GitHub Actions をロックする | そっか~ニュース