セキュアな開発
変更のチェックとリリースの方法、およびサポート対象
ソースコード
AnsibleForms はオープンソースなので、このページの内容はすべてリポジトリ自体で確認できます。
- コード、その履歴、ビルドパイプラインは github.com/ansibleforms/ansibleforms で公開されています。
- ライセンス は GPL-3.0 です。
- 変更履歴 には、セキュリティ修正を含め、すべてのリリースのすべての変更が記載されています。
変更のマージ方法
すべての変更は、誰も回避できないルールセットのもとで、プルリクエストを通じて main に入ります。
| ルール | 意味 |
|---|---|
| プルリクエストが必須 | main に直接プッシュされるものはありません |
| 必須のチェック | プルリクエストは、下記のすべてのチェックに合格した場合にだけマージされます |
| 強制プッシュと削除の禁止 | main の履歴を書き換えたり削除したりすることはできません |
| 直線的な履歴 | 各プルリクエストは 1 つのコミットになるため、変更を個別に追跡し、元に戻せます |
プルリクエストが合格しなければならないチェック:
| チェック | 内容 |
|---|---|
| Client、Server | Web インターフェイスとサーバーの単体テスト |
| CodeQL | GitHub による JavaScript と TypeScript のコードの静的解析。インジェクション、クロスサイトスクリプティング、その他の脆弱性を検出します |
| Public schema is up to date | コードが想定するデータベーススキーマと、同梱されているスキーマが一致すること |
| Title、Branch | プルリクエストが命名規則に従っていること。これにより変更履歴が正確に保たれます |
さらに 2 つのチェックがすべてのプルリクエストで実行され、結果を報告します。
- Database は MySQL と MariaDB でサーバーをテストし、 Browser はブラウザーでインターフェイスを操作します。
- Dependency review は、深刻度が高いまたは重大な既知の脆弱性を持つ新しい依存関係をブロックします。
コード分析と依存関係
コードとその依存関係は、マージ後にも再度チェックされます。
- CodeQL は、
mainとリリースブランチへのすべてのプッシュも分析し、毎週コードベース全体も分析します。 そのため、新しい CodeQL のルールは、それ以前にマージされたコードもチェックします。 - Dependabot は、依存関係の新しいバージョンごとにプルリクエストを作成します。サーバーとインターフェイスの npm パッケージ、 ランタイム環境の Python パッケージ、パイプラインの GitHub Actions は毎週、 コンテナーのベースイメージは毎日です。
- ベースイメージはダイジェストで固定されている (
node:26-trixie-slim@sha256:...) ため、ビルドではレビュー済みのイメージがそのまま使われます。 アップストリームでイメージが再ビルドされると、Dependabot がダイジェストを更新します。
リリースとイメージ
リリースのビルドと公開は GitHub Actions だけで行われ、開発者のマシンから行われることはありません。
- リリースは
main(またはrelease/6.x) から作成され、変更履歴はそのプルリクエストから生成されます。 - イメージは Publish ワークフロー でビルドされ、 GitHub Container Registry の
ghcr.io/ansibleforms/ansibleformsに、ランタイム環境のイメージとともに プッシュされます。ワークフローとそのログは公開されているため、誰でもイメージに何が含まれたかを確認できます。 - アプリケーションとランタイム環境のイメージは、root ではなく、特権を持たない
nodeユーザー (uid 1000) として実行されます。
サポート対象のバージョン
セキュリティ修正は、サポート対象の各系列の最新リリースに含まれます。
| バージョン | セキュリティ修正の提供 |
|---|---|
| 7.x | あり |
| 6.5.x | あり |
| 6.5 より前 | なし。アップグレードが対策になります |
新しいリリースへの移行については アップグレードガイド を、6.5 からの移行については v7 へのアップグレード を参照してください。