Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
4c93e10
docs(i18n): translate the entry path into ja (index, why, start, edit…
zhuangjianguo Oct 29, 2026
408661e
docs(i18n): translate build/ and build/data/ into ja (#388, PR 1 of 7)
zhuangjianguo Oct 29, 2026
e897011
Merge the merged #387 branch head so the push fast-forwards
zhuangjianguo Oct 29, 2026
9613e53
Merge main (#389 landed) so the push fast-forwards
zhuangjianguo Oct 29, 2026
38384aa
docs(i18n): translate build/automation/ and build/interface/ into ja …
zhuangjianguo Oct 29, 2026
577b635
fix(search): keep one locale index and read search text from build ou…
zhuangjianguo Oct 29, 2026
6434c3f
Merge the landed #390 branch head so the push fast-forwards
zhuangjianguo Oct 29, 2026
d0ad718
docs(i18n): re-land build/automation/ and build/interface/ ja pages (…
zhuangjianguo Oct 29, 2026
ace646b
Merge the landed #394 branch head so the push fast-forwards
zhuangjianguo Oct 29, 2026
3fd7047
fix(worker): stop bundling every docs page twice (#395)
zhuangjianguo Oct 29, 2026
6769cd3
Merge the landed #396 branch head so the push fast-forwards
zhuangjianguo Oct 29, 2026
fadc71d
Merge the landed #397 branch head so the push fast-forwards
zhuangjianguo Oct 29, 2026
8688a48
docs(i18n): translate configure/ into ja (#388, PR 3 of 7)
zhuangjianguo Oct 29, 2026
c881844
Merge the landed #398 branch head so the push fast-forwards
zhuangjianguo Oct 29, 2026
8fdcd28
docs(i18n): translate configure/permissions/ and cloud/ into ja (#388…
zhuangjianguo Oct 29, 2026
216f90a
Merge the landed #399 branch head so the push fast-forwards
zhuangjianguo Oct 29, 2026
c74c76a
docs(i18n): translate deploy/ and operate/ into ja (#388, PR 5 of 7)
zhuangjianguo Oct 29, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 74 additions & 0 deletions content/docs/deploy/air-gapped.ja.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
---
title: エアギャップデプロイメント
seoTitle: "エアギャップデプロイメント:ライセンスモードと設定"
description: エアギャップはファイアウォールの設定ではなくライセンスモードです。切断されたデプロイメントが宣言しなければならない 2 つの設定と、起動時に拒否される組み合わせを説明します。
editions: [enterprise]
translation:
source_sha: d0fbf234ac1fc9be7bcdb652e29a259e133103a63533267bf3f065bdee48ce9b
guide_rev: 1
mode: auto
---

## エアギャップはライセンスモードである [#air-gap-is-a-license-mode]

ネットワークを抜くだけでは、エアギャップのデプロイメントにはなりません。通常の ObjectOS ライセンスは**オンライン**で検証されます。ランタイムはコントロールプレーンでライセンスキーを短期のエンタイトルメントと交換し、定期的に再確認します。その経路を断つと、ライセンスは「オフラインにフォールバック」するのではなく、そもそも一切有効になりません。

**エアギャップライセンスは別のライセンス**であり、私たちが意図的にオフラインで発行します。イメージに埋め込まれた公開鍵に対してローカルで検証され、**ネットワークトラフィックなし**でエンタイトルメントを有効にします。エアギャップ運用は Enterprise の機能であり([ライセンスと料金](/docs/editions/license)を参照)、必要なライセンスは設定するものではなく申請するものです。

したがって、切断されたデプロイメントは次の **2 つ**を同時に宣言します。

- **エアギャップライセンス**
- **コントロールプレーンなし**:クラウドの姿勢の設定を明示的に `off` にします(別名の `none`、`local`、`disabled` も同じ意味です)

## 設定を未設定のままにすることは「クラウドなし」ではない [#leaving-the-setting-unset-is-not-no-cloud]

これはこのページで最も高くつく間違いなので、専用の見出しを設けています。

> **未設定のクラウドの姿勢の設定は、公開コントロールプレーンに解決されます。**

未設定は中立だったことは一度もありません。接続された動作を選びます。そのため、「何もしなかった」デプロイメントは、誰とも通信しないことが前提のサイトであるにもかかわらず、マーケットプレイスのプロキシがマウントされ、デバイスバインディングのルートが公開された状態になります。姿勢を宣言することは受け入れられますが、**決めないことは受け入れられません。** `off` を明示的に書いてください。

## サポートされる組み合わせ [#the-supported-combinations]

これらは設定の読み込み時、ライセンスに関わる処理が始まる**前に**確認されます。サポートされない組み合わせは警告でも劣化でもありません。ランタイムは*両方*の設定を名指しした致命的エラーを表示して終了します。

| ライセンス | クラウドの姿勢 | 結果 |
|---|---|---|
| エアギャップライセンス | `off` | **ネットワークトラフィックなしで、完全にライセンスされた状態で動作します。** 切断環境の答えです。 |
| ライセンスなし | `off` | Community の動作で実行されます。マルチ組織の姿勢には引き続きライセンスが必要です。 |
| 通常の(オンライン)ライセンス | 到達可能なコントロールプレーン、デバイスバインディング完了済み | 通常の接続されたデプロイメント。 |
| 通常の(オンライン)ライセンス | `off` | **起動時に拒否されます。** |
| 通常の(オンライン)ライセンス | 未設定 | 公開コントロールプレーンとして扱われます(上記を参照)。動作するかどうかは、そのコントロールプレーンに実際に到達でき、バインドされているかどうかによります。 |

### 拒否が存在する理由 [#why-the-refusal-exists]

オンラインライセンスは、デプロイメントをコントロールプレーンにバインドする際に発行されたランタイムトークンを提示する交換によって検証されます。コントロールプレーンがなければバインディングもなく、トークンは存在しえず、交換は決して行われません。今回の起動でも、以降の起動でもです。猶予期間も役に立ちません。猶予は最後に*成功した*検証から計測されますが、最初の成功が永遠に来ないからです。

強制しなければ、その設定は後になって失敗し、間違ったものを責めます。マルチ組織の姿勢では、デプロイメントが「ライセンスを必要とする」という苦情で終わります。ライセンスこそが唯一間違っていなかったものなのにです。ランタイムは代わりに早い段階で拒否し、どの 2 つの設定が食い違っているかを示します。拒否はあらゆる検証の試行より前に行われるため、拒否された起動は**パケットを一切送信しません**。

## ホスト型のマルチ組織形態もエアギャップライセンスである [#the-hosted-multi-organization-shape-is-air-gap-licensed-too]

**composed** 形態(公開済みアプリをこのデプロイメントのアプリとして起動し、分離の壁の背後で複数の組織が 1 つのデータベースを共有する)を実行する場合、そこでもエアギャップライセンスは任意ではありません。このモードはマーケットプレイスとクラウド接続のサーフェスを完全に拒否するため、オンラインライセンスに必要なバインディングがこのモードで行われることはありません。エアギャップライセンスと `off` が必須で、どちらも起動時に強制され、デプロイバンドル内に専用の環境テンプレートがあります。単一環境のテンプレートを手直ししてこの形態にしないでください。composed のテンプレートをコピーすれば、それが決めるすべての値が一緒についてきます。

## イメージをネットワーク内に持ち込む [#getting-the-image-inside-the-network]

ObjectOS のランタイムイメージは、切断されたサイトからは到達できないプライベートレジストリにあるため、イメージは他の成果物と同じ方法で境界を越えます。

検証は、レジストリとツールがまだ使える接続側で行います。内部へ持ち込もうとしている正確なダイジェストについて、**署名**、**SBOM**、**ビルドの来歴**を確認します(コマンドはバンドルの README に記載されています)。あとは**ダイジェスト**に任せます。ダイジェストはコンテンツアドレスなので、ネットワーク内のコピーが同じダイジェストであることを確認すれば、それが検証したのと同じバイトであることの証明になります。デプロイメントがタグではなくダイジェストを固定するのもこのためです。境界の内側には、タグを再解決する相手がありません。

アップグレードも同じ方法で行います。新しいダイジェストを外部で検証し、内部に転送し、固定するダイジェストを変更して再起動します。以前のダイジェストは残しておいてください。エアギャップのネットワーク内では、それがロールバック先となる唯一のコピーかもしれません。

## 到達可能でなければならないもの [#what-still-has-to-be-reachable]

エアギャップとは、*ObjectOS 自体が*必要とするトラフィックがないということです。ライセンスの検証も、マーケットプレイスも、更新の確認もありません。デプロイメントにネットワークがないという意味ではありません。境界の内側では、引き続き次のものが必要です。

- 設定されたデータベース(クラスター構成の場合は Redis も)
- インバウンドのイングレスまたはロードバランサー
- **あなたが**通信するよう設定したもの:アイデンティティプロバイダー、SMTP、オブジェクトストレージ、Webhook の送信先、AI プロバイダーのエンドポイント。ユーザーが OIDC でサインインする場合、そのアイデンティティプロバイダーにこのネットワークから到達できる必要があります。できない場合はローカルアカウントを使います。

ライセンス自体には有効期限があり、起動のたびにローカルで確認されます。外部への問い合わせはないため、更新はランタイムが取得するものではなく、納品として計画してください。

## 次へ [#next]

- [Docker → Enterprise で追加されるもの](/docs/deploy/docker#enterprise-adds):検証、ライセンス、スケーリング、アップグレードの全体。
- [アップグレード](/docs/operate/upgrade)と[バックアップ](/docs/operate/backup):上記の手順の詳細な手順書。
Loading
Loading