セキュアな開発

変更のチェックとリリースの方法、およびサポート対象

  1. ソースコード
  2. 変更のマージ方法
  3. コード分析と依存関係
  4. リリースとイメージ
  5. サポート対象のバージョン

ソースコード

AnsibleForms はオープンソースなので、このページの内容はすべてリポジトリ自体で確認できます。


変更のマージ方法

すべての変更は、誰も回避できないルールセットのもとで、プルリクエストを通じて 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 へのアップグレード を参照してください。