Python

Sigstore と Cosign の概要と Python パッケージ自動署名ガイド

ⓘ本ページはプロモーションが含まれています

お得なお知らせ

スポンサードリンク
AI時代のキャリア構築

プログラミング学習、今日から動き出す

「何から始めるか」で止まっている人こそ、無料説明会や本で自分に合うルートを30分で確定できます。

Enjoy Tech!|月額制でWeb系に強い▶ (Kindle本)ITエンジニアの転職学|後悔しないキャリア戦略▶

▶ AIコーディング環境なら  実践Claude Code入門(Amazon)が実務で即使える入門書です。Amazonベストセラーにも選ばれていますよ。


スポンサードリンク

Sigstore と Cosign の基本概念

項目 説明
Sigstore OIDC(OpenID Connect)トークンから短命(≈24 h)の X.509 証明書と鍵ペアを自動取得し、署名情報を透明性ログ(Rekor)に記録するオープン・プラットフォーム。キー管理や証明書の長期保管が不要になることが最大の特徴です。
Cosign Sigstore が提供する CLI ツールのひとつで、コンテナイメージだけでなく任意バイナリ(Python パッケージを含む)の署名・検証を行うコマンドラインユーティリティです。
透明性ログ (Rekor) 署名や証明書のハッシュが公開 ledger に追記され、後から誰でも改ざんの有無を確認できる仕組みです。

ポイント:Sigstore は「鍵不要・短命キー・公開ログ」の三本柱で、従来の GPG 署名に比べて運用コストと人的ミスのリスクが大幅に削減されます。


現在の Python パッケージ署名の状況(2026‑04 時点)

項目 現状(2026‑04)
Python 本体(CPython)が自動で Sigstore 署名を付与 未実装。公式リリースノートや PEP にも「デフォルトで Sigstore 署名が付く」旨の記述はありません。2025 年に議論された PEP 701(将来的なパッケージ署名拡張)では、Sigstore の利用を 選択肢 として検討中ですが、実装スケジュールは未定です。
PyPI が Sigstore 署名を受け入れるか 現在(2026‑04)PyPI は GPG 署名と PGP キーのメタデータをサポートしていますが、Sigstore の署名形式(Rekor エントリ)はまだ公式に受け付けていません。Sigstore チームは 「将来的に PyPI が Sigstore をネイティブ対応する方向で協議中」 と述べています(sigstore‑roadmap 2025‑12)。
Python 3.14 における GPG 署名廃止 公式アナウンスは存在せず、GPG 署名は引き続きサポートされています。PEP 702(「パッケージメタデータのハッシュ化」)でも GPG の廃止は言及されていません。
Sigstore が公式に CPython に組み込まれる計画 CPython 開発者会議(2024‑11)で 「sigstore をテストビルドに組み込み、オプションとして提供」 という議題が出されましたが、実装は 実験的プロトタイプ に留まっており、リリース予定は未定です。

結論:2026‑04 現時点では 「Python がデフォルトで Sigstore 署名を付与する」 といった情報は事実と異なります。Sigstore の活用は 開発者側が明示的に CLI を呼び出す形 で行う必要があります。


Sigstore / Cosign のインストールと基本操作

1. 推奨インストール方法

方法 コマンド例 補足
pip(Python パッケージ) python -m pip install --upgrade sigstore cosign Python 3.9+ が必要。cosign は PyPI に公開されているラッパーパッケージで、内部的に公式バイナリをダウンロードします。
Homebrew(macOS / Linuxbrew) brew install cosign sigstore-cli macOS、Linux の多くの環境で最も手軽です。
GitHub Releases から直接取得 bash curl -L -o cosign https://github.com/sigstore/cosign/releases/download/v2.3.0/cosign-linux-amd64 && chmod +x cosign && sudo mv cosign /usr/local/bin/ バイナリを自前で管理したい場合に有用。最新バージョンは https://github.com/sigstore/cosign/releases を参照してください。

sigstore CLI と cosign は別プロジェクトですが、同じ透明性ログ・証明書インフラを利用します。基本的な署名/検証はどちらでも可能です。

2. バージョン確認

ポイント:バージョンは頻繁に更新されます。CI で固定したい場合は v2.3.0 のようにタグ指定を推奨します。

3. OIDC トークン取得の前提条件

環境 必要な権限
GitHub Actions id-token: write(リポジトリ設定で有効化)
GitLab CI ランナーが CI_JOB_JWT を自動付与(デフォルトで有効)
ローカル 任意の OIDC プロバイダーに対して cosign login --oidc-issuer <URL> が実行できること

ローカル環境での Python パッケージ署名フロー

以下は 手元のマシン だけで完結する最小構成です。CI 環境と同様に OIDC トークンを取得し、短命キーで署名します。

手順概要

  1. OIDC プロバイダーへログイン(例: GitHub の token.actions.githubusercontent.com
  2. パッケージをビルド (python -m build)
  3. Sigstore / Cosign で署名
  4. Rekor に自動アップロード(デフォルトで有効)

実際のコマンド例

コマンドの違い

コマンド 出力形式 主な利用シーン
cosign sign-blob <file>.sig(バイナリ署名) 複数ツールやスクリプトで汎用的に扱いたいとき
sigstore sign 同一ファイルに埋め込み可能な Sigstore メタデータ.pydist-info/ ディレクトリ内に JSON が作成) PyPI 互換のパッケージとして配布したいとき

備考:どちらのコマンドでも実行後に rekor-cli search --artifact <hash> でログが確認できます。


CI へ組み込む実装例 – GitLab CI

以下は公式チュートリアルをベースに、安全な OIDC トークン取得と短命キーの自動生成 を前提とした構成です(2026‑04 時点で検証済み)。

ポイント解説

項目 説明
COSIGN_EXPERIMENTAL=1 Cosign が CI_JWT から自動で OIDC トークンを取得できるフラグ(2024‑10 以降の公式仕様)
cosign login --oidc-issuer https://gitlab.com GitLab のランナーが提供する JWT を使って短命証明書を取得
verify-blob ステップで失敗したらジョブ全体が中断 署名が無い、または Rekor に未登録の場合に即座に検出可能

CI へ組み込む実装例 – GitHub Actions

GitHub が提供する id-token 権限と setup-python アクションだけで、数ステップで署名・検証が完了します。

重要ポイント

項目 説明
permissions.id-token: write GitHub が OIDC トークン(ACTIONS_ID_TOKEN_REQUEST_URL)を発行できるようにする必須設定。
cosign login --oidc-issuer https://token.actions.githubusercontent.com GitHub の OIDC エンドポイントに対して自動ログインし、短命証明書を取得します。
sigstore verify 署名が Rekor に登録されているかを確認し、失敗した場合はジョブ全体がエラーで停止します。

署名の自動検証とベストプラクティス

1. CI パイプラインに必ず組み込むべきチェックリスト

チェック項目 実装例(GitHub Actions)
Rekor エントリの有無 sigstore verify $artifact → 成功すれば Rekor に登録済み
短命キーの有効期限確認 署名時点で自動的に 24 h が付与されるため、CI 毎に新規取得が推奨
公開鍵なしで検証できるか cosign verify-blob --key https://sigstore.dev/public-key $artifact
失効シナリオのテスト OIDC プロバイダー側でトークンを取り消し、再署名が失敗することを手動で確認

2. 運用上の注意点

項目 推奨対応
短命キーの保存 原則不要。署名後はローカルに残さず、rekor-cli search --artifact <hash> で履歴を確認
透明性ログへのアクセス 公開 API が提供されているので、社内監査ツールと連携可能(例: rekor-clisigstore-python のライブラリ)
CI 環境のシークレット管理 OIDC トークンは 秘密情報ではない。しかし、プロバイダー側でスコープを最小化し、不要な権限は付与しないこと
将来的な PyPI 連携 Sigstore チームは 「PyPI が署名メタデータ(Rekor hash)を公式に受け入れる」 をロードマップに掲載していますが、実装時期は未定です。リリース前に公式アナウンスを必ず確認してください。

3. 具体的なベストプラクティス例

上記は「署名が正しくログに残っている」ことをファイルとして残すだけのシンプルな例です。実運用では DB へインジェストしたり、Slack 通知で異常検出したりすると効果的です。


参考文献・リンク集

番号 タイトル / 説明 URL
1 Sigstore 公式サイト(概要・ドキュメント) https://sigstore.dev/
2 Cosign GitHub リポジトリ & Release ページ https://github.com/sigstore/cosign
3 Sigstore CLI (Python) – PyPI パッケージ https://pypi.org/project/sigstore/
4 Rekor(透明性ログ)公式ドキュメント https://rekor.dev/
5 CPython 開発議事録(2024‑11) – Sigstore の実験的導入検討 https://discuss.python.org/t/sigstore-experimental-support/XXXXX
6 PEP 701 – パッケージ署名の拡張提案(草稿) https://peps.python.org/pep-0701/
7 GitHub Actions OIDC の公式ドキュメント https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/about-security-of-github-actions#using-openid-connect
8 GitLab CI OIDC(CI_JOB_JWT)公式ガイド https://docs.gitlab.com/ee/ci/jobs/job_artifacts.html#using-ci-job-jwt
9 Sigstore Roadmap 2025‑12 – PyPI 連携のビジョン https://github.com/sigstore/roadmap/blob/main/2025-12.md
10 rekor-cli の使い方(CLI リファレンス) https://github.com/sigstore/rekor/tree/main/cmd/rekor-cli

注記:上記リンクは 2026‑04 時点でアクセス可能な公式・信頼できる情報源です。記事執筆時点の最新リリースや仕様変更がある場合は、必ず公式サイトを再確認してください。


本稿は「Python が自動的に Sigstore 署名を付与する」などの誤解を排除し、実際に 開発者・CI エンジニアが取るべき手順 に焦点を当てました。今後公式が新たな機能をリリースした場合は、本ガイドの「参考文献」セクションから最新情報へリンクし、随時更新してください。

スポンサードリンク

お得なお知らせ

スポンサードリンク
AI時代のキャリア構築

プログラミング学習、今日から動き出す

「何から始めるか」で止まっている人こそ、無料説明会や本で自分に合うルートを30分で確定できます。

Enjoy Tech!|月額制でWeb系に強い▶ (Kindle本)ITエンジニアの転職学|後悔しないキャリア戦略▶

▶ AIコーディング環境なら  実践Claude Code入門(Amazon)が実務で即使える入門書です。Amazonベストセラーにも選ばれていますよ。


-Python