セキュリティ
IronFlockは、セキュリティが必須である産業用およびエンタープライズIoT環境向けに設計されています。デバイス接続からデータ分離まで、すべてのレイヤーにわたってゼロトラストアーキテクチャと多層防御を採用しています。
デバイスのオープンポートなし
IronFlockを実行するエッジデバイスは、オープンポートを一切公開しません。デバイスエージェントは、WAMPメッセージルーターへの接続をすべてアウトバウンドで開始します。これにより:
- デバイスネットワーク上でインバウンドファイアウォールルールが不要です。
- デバイスはインターネットから発見したり直接アドレス指定したりできません。
- リモートアクセスはリバーストンネルを通じて動作します。デバイスが外向きに接続し、逆ではありません。
これにより、デバイスがオープンポート(SSH、HTTP、MQTT)でリッスンするIoTデプロイメントに共通する攻撃ベクトルの全クラスが排除されます。
認証
IronFlockはユーザー認証に**OpenID Connect(OIDC)**を使用しています。
多要素認証
すべてのアカウントでTOTPベースの二要素認証(時間ベースのワンタイムパスワード)をサポートしています。ユーザーはアカウント設定から、任意の標準認証アプリ(Google Authenticator、Authy、1Passwordなど)を使用して2FAを有効にできます。
APIキー
プログラムによるアクセスのために、ユーザーはREST APIに対して認証するAPIキーを生成できます。APIキーは、操作が実行される前にバックエンドですべてのリクエストに対して検証されます。
デバイス認証
デバイスは、デバイスごとの認証情報を使用したWAMP-CRA(チャレンジ・レスポンス認証)で認証します。各デバイスはフラッシュプロセス中に固有のシークレットを受け取り、デバイスに保存されて後続のすべての接続に使用されます。
暗号化されたトランスポート
IronFlockのすべての通信は暗号化されています:
| 接続 | プロトコル | 暗号化 |
|---|---|---|
| ブラウザからIronFlock | HTTPS | TLS 1.2以上 |
| デバイスからルーター | WSS(WebSocket Secure) | TLS 1.2以上 |
| サービス間 | WSS | TLS(内部) |
| データベース接続 | PostgreSQL SSL | TLS |
| リモートアクセストンネル | TLS上のリバースプロキシ | TLS |
システム全体に平文の通信経路は存在しません。
メッセージ分離
IronFlockはすべてのリアルタイム通信にWAMP(Web Application Messaging Protocol)を使用しています。メッセージルーターはプロジェクト間の厳格な分離を強制します。
個別のレルム
各プロジェクトとアプリの組み合わせは、WAMPルーター上の独自のメッセージングレルムを取得します。レルムは完全に分離された名前空間であり、あるレルムで公開されたメッセージは他のすべてのレルムから見えません。
これは以下を意味します:
- プロジェクトAのデバイスはプロジェクトBのメッセージを見ることができません。
- プロジェクトAにインストールされたアプリXは、プロジェクトBにインストールされたアプリXとは異なるレルムを持ちます。
- 同じアプリが2つのプロジェクトにインストールされていても、データフローは完全に分離されています。
レルム認証
すべてのレルム接続には認証が必要です。デバイス、バックエンドサービス、UIクライアントは、レルムに参加するために有効な認証情報を提示する必要があります。認証されていないクライアントは、トピックにサブスクライブしたりプロシージャを呼び出したりできません。
データベース分離
各プロジェクトはFleetDB(PostgreSQL)で独自の専用データベースリソースを取得します:
- 個別のテーブル — 各プロジェクトとアプリの組み合わせは、独自の時系列テーブルセットを持ちます。異なるプロジェクトのデータが漏洩する可能性のある共有テーブルはありません。
- 個別の認証情報 — 各データバックエンドは固有の接続認証情報を持ちます。アプリは自分のプロジェクトのデータにのみアクセスできます。
- クロスプロジェクトクエリなし — データベースレイヤーは、クエリがプロジェクトの境界を越えられないことを強制します。
この分離はアプリケーションレベルだけでなく、インフラレベルで強制されます。侵害されたアプリでさえ、別のプロジェクトのデータにアクセスできません。
権限システム
IronFlockは、すべてのプロジェクト、デバイス、グループ、アプリ、ダッシュボード、データバックエンドに独自のアクセス制御を持つアセットごとの権限モデルを強制します:
- アセットのオーナーは完全な制御権を持ち、他のユーザーにパーミッションを付与できます。
- プロジェクトオーナーは、そのプロジェクト内のすべてのアセットを自動的に完全に制御できます。
- 各パーミッションは個別のブールフラグです。無制限のアクセスを付与する広範な「管理者」ロールはありません。
- すべての権限変更は不変の監査証跡に記録されます。
アセットタイプごとのパーミッションの完全なリストは権限をご覧ください。
ソフトウェアサプライチェーンのセキュリティ
セキュリティはソフトウェアの実行方法だけにとどまらず、ソフトウェアがどのように構築され、配信されるかから始まります。デバイス上で直接実行される唯一のIronFlockコンポーネントであるIronFlock Supervisorは、堅牢に強化された完全自動化のサプライチェーンを通じて構築されており、フリートに何が届くのかを正確に信頼できます。
- 最小限の攻撃対象領域 — Supervisorは、外部ランタイム依存関係も組み込みインタープリタも持たない、単一の静的リンクされたGoバイナリとして提供されます。パッケージマネージャも、動的ライブラリツリーも、インバウンド接続をリッスンするものも存在しないため、攻撃者が標的にできる対象を大幅に削減します。
- 継続的な脆弱性スキャン — すべてのリリースは、当社独自のコードおよびすべての依存関係にわたって既知の脆弱性(CVE)がスキャンされます。このスキャンには、バイナリが実際に実行可能なコードパスに焦点を当てる到達可能性を考慮した分析を使用します。スキャンは毎週のスケジュールでも実行されるため、あるバージョンの提供後に公開された脆弱性も、すでにデプロイ済みのビルドに対して検出されます。
- ソフトウェア部品表(SBOM) — 各リリースは、完全なCycloneDX SBOMを公開します。これはバイナリに組み込まれたすべてのコンポーネントとバージョンの完全な目録です。これにより、お客様および監査担当者は、実行しているものについて正確な透明性を得られます。
- 署名された検証可能なビルド — すべてのリリースバイナリには、その正確な内容に暗号的に紐付けられたsigstoreで署名されたプロベナンス証明が付属します。署名は改ざんが検出可能で、独立して検証できるため、バイナリがIronFlockのパイプラインによって生成され、転送中に改変されていないことを確認できます。
- ゲート制御された自動リリース — ビルド、署名、公開は、個々の開発者のマシンではなく、管理されたCIパイプライン内で行われます。完全な自動テストおよびセキュリティスイートが合格しない限り何も公開されないため、提供されるアーティファクトがテストおよび証明されたものとまったく同一であることが保証されます。
- セキュアなOTA(無線)アップデート — OTAアップデートは暗号化されたチャネルを通じて配信され、IronFlockが公開した署名済みビルドのみを取得元とします。そのため、デバイスはインバウンドポートを開いたり、検証されていないアーティファクトを信頼したりすることなく、自身を更新します。
これらのコントロールにより、ソースコードから各デバイス上で実行されるバイナリまで、検証可能な管理の連鎖(chain of custody)が提供されます。
コンプライアンス
IronFlockのセキュリティアーキテクチャは以下のコンプライアンスをサポートします:
- IEC 62443 — 産業用オートメーションおよび制御システムのセキュリティ
- ISO 27001 — 情報セキュリティマネジメント
- SOC 2 — データセキュリティのためのサービス組織統制
- GDPR — EUデータセンターにデータを保存(設定可能)、データアクセスの監査証跡
- EU Cyber Resilience Act (CRA) — リリースごとのSBOMと、文書化された継続的な脆弱性対応プロセスが、デジタル要素を持つ製品に対するCRAの中核的な義務に直接対応します。
- SLSA / NIST SSDF — 署名されたビルドプロベナンスとゲート制御されたCIパイプラインが、認知されたサプライチェーンの完全性およびセキュアソフトウェア開発のフレームワークに準拠します。
暗号化されたトランスポート、認証、プロジェクトごとのデータ分離、きめ細かな権限、包括的な監査ログ、そして堅牢に強化されたソフトウェアサプライチェーンの組み合わせが、これらのフレームワークで要求されるコントロールを提供します。