エアギャップステージを含むOutSystemsパイプラインの構築
はじめに
LifeTimeは、同じOutSystemsプラットフォームインフラ内のすべての環境を確認できる統合コンソールです。ITユーザーとその権限を管理するほか、OutSystemsインフラ内の環境間でのアプリケーションのデプロイも管理します。
しかし、金融、医療、公共機関などの厳しい規制がある業界の組織では、セキュリティやコンプライアンスに関する要件が追加されています。
このような場合、健全な自動化されたCI/CDパイプラインと、ネットワークアクセスやその他の高度なセキュリティ標準などの追加のインフラ制約の両立というニーズが発生します。最もよくあるシナリオの1つとしてネットワークの分離があります。このシナリオでは2つの別個の分離されたネットワークゾーンがあり、これらの間での通信はできません。
エアギャップ参照モデルの概要
上記のデプロイパイプラインはOutSystemsの継続的デリバリーのパイプライン参照モデルに基づいており、必要なネットワークの分離が含まれています。ネットワーク間でアプリケーションバージョンを移動するには、バイナリデータを共有ドライブに書き込む必要があります。
開発ネットワークのLifeTimeは定義されたアクセス制御を適用するだけではなく、管理対象の環境にアプリケーションバージョンがデプロイできることを保証するために必要な影響分析も行います。
ACCでリリース候補のバージョンが検証され承認された後、手動による「押しボタン」方式でエアギャップデプロイがトリガーされ、アプリケーションバージョンがACC環境からファイルの共有場所にエクスポートされます。
コードの昇格が確実に成功するように、アプリケーションバージョンの依存関係のトポロジカルソートの結果に基づいて、デプロイの順序が決定されます。
デプロイの順序が決定したら、Solution Pack Tool(OSPTool)が呼び出されて、各アプリケーションバージョンがPRE環境にデプロイされます。
最後に、アプリケーションバージョンタグが本番ネットワークのLifeTimeに同期されます。
エアギャップパイプラインの構成手順
1. エアギャップに固有の変数を構成する
エアギャップステージを構成するには、エアギャップステージを実行する際に必要な以下の情報を構成します。
名前 | 値 | 値の例 |
---|---|---|
OSPToolPath | <コマンドラインで呼び出されるOSPToolのパス> |
C:\Program Files\Common iles\OutSystems\11.0\OSPTool.com |
AirGapUser | <ターゲット環境でのChange & Deploy(変更とデプロイ)権限を持つユーザー> |
air_gap_user |
AirGapPass | <AirGapUserのパスワード> |
|
PreProductionEnvironmentHostName | <ターゲット環境のホスト名> |
preprod.example.com |
2. エアギャップステージを構成する
エアギャップに固有の変数をすべて構成したら、deploy_apps_to_target_env_with_airgapメソッドを呼び出すステージを作成し、必要な情報を入力として提供する必要があります。
Jenkins用とAzure DevOpsパイプラインタスクグループ用のテンプレートは、こちらのgithubリポジトリにあります。