エアギャップデプロイメント
エアギャップはファイアウォールの設定ではなくライセンスモードです。切断されたデプロイメントが宣言しなければならない 2 つの設定と、起動時に拒否される組み合わせを説明します。
エアギャップはライセンスモードである
ネットワークを抜くだけでは、エアギャップのデプロイメントにはなりません。通常の ObjectOS ライセンスはオンラインで検証されます。ランタイムはコントロールプレーンでライセンスキーを短期のエンタイトルメントと交換し、定期的に再確認します。その経路を断つと、ライセンスは「オフラインにフォールバック」するのではなく、そもそも一切有効になりません。
エアギャップライセンスは別のライセンスであり、私たちが意図的にオフラインで発行します。イメージに埋め込まれた公開鍵に対してローカルで検証され、ネットワークトラフィックなしでエンタイトルメントを有効にします。エアギャップ運用は Enterprise の機能であり(ライセンスと料金を参照)、必要なライセンスは設定するものではなく申請するものです。
したがって、切断されたデプロイメントは次の 2 つを同時に宣言します。
- エアギャップライセンス
- コントロールプレーンなし:クラウドの姿勢の設定を明示的に
offにします(別名のnone、local、disabledも同じ意味です)
設定を未設定のままにすることは「クラウドなし」ではない
これはこのページで最も高くつく間違いなので、専用の見出しを設けています。
未設定のクラウドの姿勢の設定は、公開コントロールプレーンに解決されます。
未設定は中立だったことは一度もありません。接続された動作を選びます。そのため、「何もしなかった」デプロイメントは、誰とも通信しないことが前提のサイトであるにもかかわらず、マーケットプレイスのプロキシがマウントされ、デバイスバインディングのルートが公開された状態になります。姿勢を宣言することは受け入れられますが、決めないことは受け入れられません。 off を明示的に書いてください。
サポートされる組み合わせ
これらは設定の読み込み時、ライセンスに関わる処理が始まる前に確認されます。サポートされない組み合わせは警告でも劣化でもありません。ランタイムは両方の設定を名指しした致命的エラーを表示して終了します。
| ライセンス | クラウドの姿勢 | 結果 |
|---|---|---|
| エアギャップライセンス | off | ネットワークトラフィックなしで、完全にライセンスされた状態で動作します。 切断環境の答えです。 |
| ライセンスなし | off | Community の動作で実行されます。マルチ組織の姿勢には引き続きライセンスが必要です。 |
| 通常の(オンライン)ライセンス | 到達可能なコントロールプレーン、デバイスバインディング完了済み | 通常の接続されたデプロイメント。 |
| 通常の(オンライン)ライセンス | off | 起動時に拒否されます。 |
| 通常の(オンライン)ライセンス | 未設定 | 公開コントロールプレーンとして扱われます(上記を参照)。動作するかどうかは、そのコントロールプレーンに実際に到達でき、バインドされているかどうかによります。 |
拒否が存在する理由
オンラインライセンスは、デプロイメントをコントロールプレーンにバインドする際に発行されたランタイムトークンを提示する交換によって検証されます。コントロールプレーンがなければバインディングもなく、トークンは存在しえず、交換は決して行われません。今回の起動でも、以降の起動でもです。猶予期間も役に立ちません。猶予は最後に成功した検証から計測されますが、最初の成功が永遠に来ないからです。
強制しなければ、その設定は後になって失敗し、間違ったものを責めます。マルチ組織の姿勢では、デプロイメントが「ライセンスを必要とする」という苦情で終わります。ライセンスこそが唯一間違っていなかったものなのにです。ランタイムは代わりに早い段階で拒否し、どの 2 つの設定が食い違っているかを示します。拒否はあらゆる検証の試行より前に行われるため、拒否された起動はパケットを一切送信しません。
ホスト型のマルチ組織形態もエアギャップライセンスである
composed 形態(公開済みアプリをこのデプロイメントのアプリとして起動し、分離の壁の背後で複数の組織が 1 つのデータベースを共有する)を実行する場合、そこでもエアギャップライセンスは任意ではありません。このモードはマーケットプレイスとクラウド接続のサーフェスを完全に拒否するため、オンラインライセンスに必要なバインディングがこのモードで行われることはありません。エアギャップライセンスと off が必須で、どちらも起動時に強制され、デプロイバンドル内に専用の環境テンプレートがあります。単一環境のテンプレートを手直ししてこの形態にしないでください。composed のテンプレートをコピーすれば、それが決めるすべての値が一緒についてきます。
イメージをネットワーク内に持ち込む
ObjectOS のランタイムイメージは、切断されたサイトからは到達できないプライベートレジストリにあるため、イメージは他の成果物と同じ方法で境界を越えます。
検証は、レジストリとツールがまだ使える接続側で行います。内部へ持ち込もうとしている正確なダイジェストについて、署名、SBOM、ビルドの来歴を確認します(コマンドはバンドルの README に記載されています)。あとはダイジェストに任せます。ダイジェストはコンテンツアドレスなので、ネットワーク内のコピーが同じダイジェストであることを確認すれば、それが検証したのと同じバイトであることの証明になります。デプロイメントがタグではなくダイジェストを固定するのもこのためです。境界の内側には、タグを再解決する相手がありません。
アップグレードも同じ方法で行います。新しいダイジェストを外部で検証し、内部に転送し、固定するダイジェストを変更して再起動します。以前のダイジェストは残しておいてください。エアギャップのネットワーク内では、それがロールバック先となる唯一のコピーかもしれません。
到達可能でなければならないもの
エアギャップとは、ObjectOS 自体が必要とするトラフィックがないということです。ライセンスの検証も、マーケットプレイスも、更新の確認もありません。デプロイメントにネットワークがないという意味ではありません。境界の内側では、引き続き次のものが必要です。
- 設定されたデータベース
- インバウンドのイングレスまたはロードバランサー
- あなたが通信するよう設定したもの:アイデンティティプロバイダー、SMTP、オブジェクトストレージ、Webhook の送信先、AI プロバイダーのエンドポイント。ユーザーが OIDC でサインインする場合、そのアイデンティティプロバイダーにこのネットワークから到達できる必要があります。できない場合はローカルアカウントを使います。
ライセンス自体には有効期限があり、起動のたびにローカルで確認されます。外部への問い合わせはないため、更新はランタイムが取得するものではなく、納品として計画してください。
次へ
- Docker → Enterprise で追加されるもの:検証、ライセンス、スケーリング、アップグレードの全体。
- アップグレードとバックアップ:上記の手順の詳細な手順書。