セキュリティ
アプライアンスは、お客様が運用するハードウェアとネットワーク上で動作します。IronFlock はソフトウェアとその既定の設定を提供しますが、アプライアンスがどの程度保護されるかは、選択したモード、周囲のネットワーク、そしてアプライアンスが動作するホストにも左右されます。このページは、その部分のためのチェックリストです。
各モードで保護される範囲
アプライアンスは、HTTPS と証明書 で説明している 3 つのモードのいずれかで動作します。モードによって、暗号化・検証される対象が異なります。
| プレーン HTTP(デフォルト) | 自己発行 CA による HTTPS | 企業証明書による HTTPS | |
|---|---|---|---|
| ブラウザからアプライアンスへ | 暗号化なし | HTTPS | HTTPS |
| ログイン Cookie | Secure 属性なし | Secure 属性あり | Secure 属性あり |
デバイスリンク(ポート 18080) | 暗号化なし | 暗号化なし | 443 上の HTTPS |
| デバイス向けのアプリイメージとエージェントの更新 | 暗号化なし | 暗号化なし | 443 上の HTTPS |
| デバイスのリモートアクセストンネル | 暗号化、サーバーは未検証 | 暗号化、サーバーは未検証 | 暗号化、検証済み |
| パスキーとセキュリティキー | アプライアンス本体からのみ | 利用可 | 利用可 |
アプライアンスが他のシステムとネットワークを共有する場所では、企業証明書による HTTPS を使用してください。接続されたデバイスが通信相手を検証できるのは、このモードだけです。他の 2 つのモードは、アプライアンス、そのデバイス、そのオペレーターだけが到達できるネットワークセグメントに適しています。
暗号化されない通信
HTTPS を使用していても、一部のトラフィックは暗号化されません。これを前提にネットワークを計画してください。
- ポート
18080のデバイスリンクは、どのモードでもすべてのネットワークインターフェースで公開されます。アプライアンス自身のデバイスエージェントとアプライアンス上で動作するアプリがこれに接続し、プレーンモードと自己発行 CA のモードでは、接続されたすべてのデバイスも接続します。 - アプライアンスへのリモートアクセストンネル(ポート
7000)は、プレーンモードと自己発行 CA のモードでも暗号化されますが、デバイスはアプライアンスの証明書を確認できません。ネットワーク経路にアクセスできる者が、アプライアンスのトンネルサーバーになりすますおそれがあります。この方法で接続すると、デバイスエージェントは警告をログに記録します。 - アプライアンス内部のサービス間の接続(データベースへの接続など)は暗号化されません。これらの接続はホストの外に出ません。
- アプライアンスは保存データを暗号化しません。アプライアンスが機密データを保存する場合や、敷地外に持ち出される可能性がある場合は、ホストのオペレーティングシステムまたはディスクの暗号化を使用してください。
セキュリティ強化チェックリスト
- ネットワークに合ったモードを選択します(各モードで保護される範囲 を参照)。
- アプライアンスのポートに到達できる相手を制限します。インストーラーはお使いのファイアウォールで何も開放しません。また Docker は、アプライアンスのポートをホストファイアウォールの通常の入力ルール(
ufw、firewalld)を経由せずに公開します。DOCKER-USERチェーンまたはネットワークファイアウォールでフィルタリングしてください。インストーラーは/opt/ironflock/docker-user-firewall.sh.exampleにテンプレートを用意しています。デバイス用のポート(18080、15001、15002、7000、30000–30049)は、デバイスネットワークからのみ許可してください — アプライアンスに接続するデバイス を参照してください。 - ホストのオペレーティングシステムを最新の状態に保ち、ホスト上にアカウントを持つ人を限定します。ホストの root 権限を持つ者は、アプライアンスのすべてのシークレットを読み取れます。
- ホストへの管理アクセスには、パスワードではなく SSH 鍵を使用します。
- 時刻同期を設定します — 時刻同期(NTP) を参照してください。
- 初回ログイン後に admin パスワードを変更し、admin アカウントに二要素認証を設定します。
- すべてのアカウントで二要素認証の設定が済んだら、全員に二要素認証を必須にします(アカウントとアクセス を参照)。
- インスタンスを所有する ironflock.com アカウントを二要素認証で保護します。このアカウントは、クラウドからアプライアンスへの管理者アクセス権を持っています。
- 信頼できるアプリのみをインストールします。アプリはアプライアンスとデバイス上で、アプライアンスの設定ファイルを含め、ホストへの広範なアクセス権を持って動作します。
- アプライアンスを最新の状態に保ちます(アップデート を参照)。
アカウントとアクセス
- admin アカウント:すべてのアプライアンスは、インストール時に固有の admin パスワードを受け取ります。インストーラーはそれを一度だけ表示します。紛失した場合は、ローカル運用 の説明に従って新しいパスワードを設定してください — これにより、すべての admin セッションもサインアウトされます。
- 新規ユーザーは、アプライアンス上のプロジェクトからの招待がある場合にのみサインアップできます。招待がなければ、ソーシャルログイン経由であってもサインアップは拒否されます。
- 二要素認証:ユーザーは認証アプリ(TOTP)、パスキーまたはセキュリティキー、リカバリーコードを設定できます。パスキーとセキュリティキーには HTTPS が必要です。ポリシーはインストーラーのオプション
--2faで設定し、その設定はアップデート後も維持されます。available— ユーザーは二要素認証を設定できますが、入力を求められることはありません。effective(デフォルト) — 二要素認証を設定済みのユーザーは、それを使用する必要があります。required— すべてのユーザーが二要素認証を使用する必要があります。事前に、すべてのアカウントで設定が済んでいることを確認してください。設定していないユーザーはサインインできなくなります。
- セッションの有効期間は 24 時間です。
- ironflock.com からのアクセス:Instance Key を作成した ironflock.com アカウントは、アプライアンスの admin アカウントに接続されます。招待したユーザーは、各自の ironflock.com アカウントを接続します — アカウントの連携 を参照してください。ユーザーはこの接続をいつでも解除できます。
ホスト上のシークレット
インストーラーは、アプライアンスのシークレットをインストール時に一度だけ生成し、アップデート後も保持します。シークレットは /opt/ironflock/ 配下にあります。
| ファイル | 内容 | アクセス |
|---|---|---|
.env | 全サービスのパスワードとキー、初期 admin パスワード、プロキシと SMTP の認証情報 | root のみ(0600) |
license.env | ライセンスキーと Instance Key | root と IronFlock のサービス(0640) |
certs/ | HTTPS 証明書とその鍵。自己発行 CA の場合は CA の鍵も | 秘密鍵は root のみ(0600) |
registry-token-certs/ | アプリイメージのプルトークンに署名する鍵 | レジストリサービスのみ(0600) |
インストーラーはライセンスキーを使って Docker を IronFlock レジストリにログインさせるため、root の Docker 設定にもライセンスキーが保存されています。
これらのファイルをバックアップに含め、バックアップもアプライアンス本体と同様に保護してください。
お客様自身で置き換えられるもの:
- admin パスワード:プロフィールから、または ローカル運用 のリセットコマンドで変更します。
- HTTPS 証明書:
certs/内のファイルを置き換えます。アプライアンスは新しい証明書を自動的に読み込みます。 - ライセンスキー:admin プロフィールのライセンスセクションで変更します。
- SMTP とプロキシの認証情報:
.envで変更し、sudo systemctl restart ironflock.serviceで再起動します。
内部サービスのシークレットについては、IronFlock チームにお問い合わせください。
アウトバウンド接続とテレメトリー
アプライアンスの接続先は ファイアウォールの設定 に記載されています。これらの接続はすべて暗号化されています。
- ライセンス検証では、ライセンスキー、ハードウェアのフィンガープリント、およびオンライン App Store へのアプライアンスの接続に使われるアクセストークンが送信されます。
- AI アシスタントは、独自のゲートウェイを設定しない限り、プロンプトを IronFlock の LLM ゲートウェイ経由で送信します。
- テレメトリーはありません。アプライアンスは利用状況の分析データを送信しません。アプライアンスの UI もそのサービスも、IronFlock や第三者に利用状況を報告しません。
- ユーザーのブラウザから:地図タイルは Mapbox から読み込まれ、音声入力には音声認識サービス Deepgram が使用されます。これらの接続はアプライアンスではなく、ブラウザが行います。
アップデート
- アプライアンスのアップデートは admin が開始します(メンテナンス を参照)。アプライアンスはアップデートを HTTPS でダウンロードし、アップデートが失敗した場合は自動的にロールバックします。
- デバイスエージェントの更新には署名が付いています。すべてのエージェントは更新を適用する前に署名を確認し、新しいバージョンが起動しない場合はロールバックします — デバイスエージェントの更新 を参照してください。
- ホストのオペレーティングシステムは、Docker を含めてお客様の責任範囲です。
バックアップと復元
アプライアンスには組み込みのバックアップ機能はありません。バックアップするには、sudo systemctl stop ironflock.service でアプライアンスを停止し、次のものをコピーします。
/opt/ironflock/フォルダー(.env、license.env、certs/、registry-token-certs/を含む)- アプライアンスの Docker ボリューム(
docker volume ls)。データベース、ファイル、local App Store、ユーザーファイルが格納されています。
.env は、同じ時点のボリュームとセットで保管してください。ボリューム内の暗号化されたデータは、その .env に含まれる鍵でしか読み取れません。
廃止
-
アプライアンスがまだオンラインのうちにライセンスを移行または解放します — ライセンスを新しいハードウェアへ移行する を参照してください。
-
ソフトウェアを削除します:
sudo systemctl disable --now ironflock.service sudo docker compose -f /opt/ironflock/docker-compose.yml \ --env-file /opt/ironflock/.env down -v sudo rm -rf /opt/ironflockインストーラーはライセンスキーを使って Docker を IronFlock レジストリにログインさせています。このログインも削除してください。
sudo docker logout instance-registry.ironflock.com -
ハードウェアを敷地外に持ち出す場合は、ディスクを消去してください — 上記のコマンドはファイルを削除しますが、上書きはしません。
セキュリティを弱める設定
一部の設定はトラブルシューティング専用です。本番環境では設定しないでください。
TUNNEL_TLS_INSECURE_SKIP_VERIFYとCLOUD_TUNNEL_TLS_INSECURE_SKIP_VERIFY— リモートアクセストンネルの証明書チェックを無効にします。AGENT_UPDATE_ALLOW_UNSIGNED— デバイスエージェントが署名のない更新を適用できるようにします。TUNNEL_AUTHZ_ENFORCE=false— デバイスが自身の ID を証明せずにトンネルを開けるようにします。SMTP_CONNECTION_URI内の?tls.rejectUnauthorized=false— メールサーバーからのあらゆる証明書を受け入れます。--2fa available— 二要素認証の入力が一切求められなくなります。