概要
- Astral は多数の開発者が利用するツールを提供し、 セキュリティ対策 を重視
- サプライチェーン攻撃 の増加を受け、CI/CDやリリース工程の保護策を公開
- GitHub Actions を中心にCI/CDワークフローを構築し、独自の厳格なセキュリティルールを運用
- リポジトリや組織管理 でも多層的な保護策を実施
- リリース配信 や自動化にも独自のセキュリティ強化策を適用
AstralのCI/CDセキュリティ対策
- Ruff、uv、ty などの開発を GitHub Actions ベースのCI/CDで推進
- pull_request_target や workflow_run など危険なトリガーを全組織で禁止
- pull_request_target 利用ケースは GitHub App やWebhookに移行推奨
- 全アクションをコミットSHAにピン止め し、zizmorやGitHubの監査ツールで二重チェック
- 依存アクションも全てハッシュピン を実施し、再現性と安全性を向上
- アクション内部で バイナリの最新版を取得する等の可変性ギャップ は 手動レビュー で検出
- ダウンロードURLとハッシュのマッピング で改ざん対策
- ワークフローとジョブ権限を最小化 し、デフォルトは読み取り専用
- シークレットの分離管理 (環境ごとのシークレット利用)で被害範囲を限定
- zizmor や pinact 等のツールを活用した静的解析・自動ピン止め
Astral組織・リポジトリのセキュリティ管理
- 管理者権限アカウントの最小化、必要なリポジトリのみアクセス付与
- 強力な2FA必須化 (TOTP以上)、将来的には WebAuthn/Passkeys 限定も検討
- 全体的なブランチ保護 :mainの強制プッシュ禁止、pull request経由のみ変更可
- advisory- *や internal- *等の特定ブランチパターン作成禁止
- タグ保護 :リリースデプロイ成功後のみタグ作成可、タグの更新・削除禁止
- mainブランチ以外からのリリースデプロイ禁止
- リポジトリアドミンによる保護回避を禁止、全保護策は組織レベルで強制
- ブランチ・タグ制御ルールセットを公開 し、他プロジェクトの参考用に提供
安全な自動化運用(Automations)
- GitHub Actionsでは安全に実現できない処理 (第三者PRへのコメントなど)は GitHub App で分離
- astral-sh-bot を利用し、イベントデータを安全な環境で処理
- GitHub App開発も通常のソフトウェア同様のセキュリティ意識が必要
- テンプレートインジェクション等は防げるが、SQLiやプロンプトインジェクション等は要注意
- GitHub Appでも未信頼コード実行は不可、pull_request等の安全トリガー利用が必須
- GitHub App開発にはGidgethub等のフレームワークを推奨
- 小規模プロジェクト向けのGitHub App運用の課題 も指摘
- Mariatta氏のPythonによるGitHub Appチュートリアル を紹介
- astral-sh-botのOSS化も予定
リリース配信のセキュリティ(Release security)
- PyPI、Homebrew、Docker images等の配信経路 にも個別の対策を実施
- Trusted Publishing の活用で長期認証情報の不要化と乗っ取りリスク低減
- Sigstoreによるアテステーション生成 でリリース成果物とワークフローの紐付けを証明
- uv等のリリースで実例公開
- GitHubのImmutable Releases機能 で公開済みビルドの改ざん防止
- 過去ビルドのすり替え攻撃への対策
- 配信経路ごとに最適なセキュリティ策を選択 し、サプライチェーン全体の安全性を向上
このようにAstralは CI/CD、組織管理、リリース、オートメーション の各段階で多層的なセキュリティ対策を実施し、 業界全体の参考となるノウハウ も積極的に公開しています。