Brett Cannon: GitHub Actions を... ノート

Brett Cannon: GitHub Actions を使用して PyPI に安全に公開する方法

GitHub Actions ワークフローに関連する最近のセキュリティインシデントは、公開プロセスにおける脆弱性としての可能性を浮き彫りにしています。この記事では、GitHub Actions を使用した安全な PyPI 公開のための 3 つの緩和戦略を提案します。このアドバイスはビルドではなく公開に特化したものであり、それぞれに個別のワークフローが推奨されることを強調しています。最初のステップは、zizmor ツールを使用して GitHub Actions ワークフローの安全でないデフォルトを特定し、修正することです。これには、zizmor を実行して問題を自動的に修正し、残りの問題を手動で対処することが含まれます。zizmor がフラグを立てる 3 つの一般的な問題は、広範すぎるデフォルトの権限、チェックアウト後のクレデンシャルの永続化、およびアクションを特定のコミットハッシュにピン留めしないことです。広範な権限に対処するには、グローバル権限を空に設定し、次にジョブレベルの権限を明示的に指定します。チェックアウト アクションの場合、クレデンシャル漏洩を防ぐために persist-credentials を false に設定します。タグではなくコミットハッシュにアクションをピン留めすることで、それらのタグへの悪意のあるコード更新による侵害を防ぎます。gha-update、zizmor、または Pinact のようなツールは、このピン留めプロセスを自動化するのに役立ちます。2 番目の重要な戦略は、zizmor を CI パイプラインに統合することです。これにより、セキュリティの問題がプライベート コード スキャン結果として報告され、段階的な修復のためのチェックリストが提供されます。3 番目で最後の推奨ステップは、PyPI の信頼できる公開を実装することです。これにより、API トークンの管理が不要になり、GitHub のセキュリティ インフラストラクチャを活用できます。信頼できる公開を設定する際には、GitHub 環境を構成することが重要です。この環境内で、公開ワークフローにレビュー担当者を要求することで、重要な承認ゲートが追加されます。この承認プロセスは、たとえ自分自身の承認であっても、誤ってまたは悪意を持ってリリースがトリガーされるのを防ぎます。これらの 3 つのステップにより、GitHub Actions を介した PyPI への公開のセキュリティが大幅に向上します。
CdXz5zHNQW_Sp7hMh7V4c.png