第6章 Smart Assist通信設計の技術解剖
6.1 実際の通信シーケンス図
Smart Assist PCがAWSクラウドへ未確定画像を送信し、分類結果を取得するまでの通信シーケンスを時系列で示す。
各ステップを以降の節で詳しく解説する。
6.2 DNS解決の流れ
ステップ①②の詳細
Smart Assist PCが最初に行うのは、接続先のFQDNをIPアドレスに変換するDNS問い合わせである。
病院環境での注意点
| 確認ポイント | 内容 |
|---|---|
| DNSサーバのアドレス | Smart Assist PCに設定されたDNSサーバは何か |
| 外部名前解決の可否 | 院内DNSからインターネット上のFQDNを解決できるか |
| ファイアウォールのDNS許可 | DNSの53/udp通信がファイアウォールで許可されているか |
| DNSキャッシュ | 古いIPアドレスがキャッシュされていないか |
AWS環境特有の注意
AWSのサービスでは、同じFQDNに対するIPアドレスが動的に変化することがある。そのため、ファイアウォールの許可ルールをIPアドレスではなくFQDNで設定することが推奨される(第7章で詳述)。
AWSのIPアドレスがどれくらい変わるか、実感ない人が多いと思います。実はALBのIPアドレスは数時間単位で変わることもあるんです。負荷が増えればスケールアウトして新しいIPが追加され、減ればIPが減る。
だから「今のIPアドレスを調べてFWに設定すればOK」は絶対にNG。翌朝には違うIPになっていて通信が止まります。
FWの許可ルールは必ずFQDNで設定すること。FQDN許可に対応していないFWの場合の対処法は第7章で解説します。
6.3 TLSハンドシェイク
TLS証明書(Let's Encrypt ロゴ例)
ステップ③④の詳細
TCP接続が確立された後、TLSハンドシェイクが行われる。
SSLインスペクションの影響
病院のプロキシやファイアウォールがSSLインスペクションを行っている場合、TLSハンドシェイクの動作が変わる。
この場合、Smart Assist PCが受け取る証明書はAWSのものではなく、プロキシが発行した証明書になる。これが証明書エラーの原因となることがある(第10章で詳述)。
SSLインスペクションが入っているかどうか、実は証明書のissuer(発行者)を見れば一発で分かります。
curl -v https://smartassist.example.com の出力で issuer: の行を確認してください。正常なら issuer: C=US, O=Amazon, CN=Amazon RSA 2048 M01 のように公的なCAの名前が出ます。
これが issuer: CN=Hospital-Proxy-CA とか issuer: CN=FortiGate-CA になっていたら、SSLインスペクションが入っている証拠。この確認は導入前のヒアリングでやっておくと、後のトラブルを未然に防げます。
6.4 画像データ送信の流れ
ステップ⑤⑥の詳細
TLSハンドシェイク完了後、暗号化された経路上でHTTPSリクエストとして画像データを送信する。
HTTPSリクエスト(イメージ):
POST /api/v1/images HTTP/1.1
Host: smartassist.example.com
Content-Type: multipart/form-data
Authorization: Bearer <認証トークン>
[画像バイナリデータ]
[検体ID]
[自動分類結果]
[タイムスタンプ]
通信の特性
| 項目 | 内容 |
|---|---|
| HTTPメソッド | POST(データの送信) |
| データサイズ | 画像データを含むため比較的大きい(数KB〜数MB) |
| 認証 | APIトークンによる認証 |
| 暗号化 | TLSにより全データが暗号化されている |
レスポンスの内容
HTTPSレスポンス(イメージ):
HTTP/1.1 200 OK
Content-Type: application/json
{
"status": "accepted",
"request_id": "abc-123-def"
}
このレスポンスは「データを受け付けた」という確認であり、分類結果はまだ返ってこない。
6.5 分類結果返却の仕組み
ステップ⑦⑧の詳細
遠隔技師が分類を完了した後、Smart Assist PCがクラウドに問い合わせることで結果を取得する。
HTTPSリクエスト(イメージ):
GET /api/v1/results?since=2025-01-15T10:00:00Z HTTP/1.1
Host: smartassist.example.com
Authorization: Bearer <認証トークン>
HTTPSレスポンス(イメージ):
HTTP/1.1 200 OK
Content-Type: application/json
{
"results": [
{
"request_id": "abc-123-def",
"specimen_id": "SP-20250115-001",
"classifications": [
{ "image_id": "img-001", "category": "RBC", "confidence": 0.95 },
{ "image_id": "img-002", "category": "WBC", "confidence": 0.92 }
],
"classified_by": "technician-A",
"classified_at": "2025-01-15T10:30:00Z"
}
]
}
ポーリングの仕組み
Smart Assist PCは定期的にクラウドへ結果を問い合わせる。これをポーリング(Polling)と呼ぶ。
6.6 「Outbound Only」とは何を意味するのか
定義
「Outbound Only」とは、すべての通信が院内から外部への方向で開始されることを意味する。
通信方向の分類
| 方向 | 定義 | Smart Assistでの該当 |
|---|---|---|
| Outbound | 院内 → 外部への通信開始 | すべての通信が該当 |
| Inbound | 外部 → 院内への通信開始 | 該当なし |
| レスポンス | Outbound通信に対する応答 | 結果の返却 |
レスポンスはInboundではない
ファイアウォールの観点で重要なのは、Outbound通信に対するレスポンスは「Inbound通信」ではないという点である。
Outbound Onlyであることのセキュリティ上の意味
| ポイント | 説明 |
|---|---|
| ポートリスニングなし | 院内側で外部からの接続を待ち受けるポートが存在しない |
| 攻撃面の最小化 | 外部から能動的に院内へ侵入する経路がない |
| FWルールの単純化 | Outboundの許可ルールのみで構成できる |
病院IT担当者から「Smart Assistは双方向通信ですか?」と聞かれるケース、非常に多いです。このとき「はい、結果が返ってくるので双方向です」と答えるのは最悪の回答です。
正しい回答は:「通信の開始は常に院内からクラウドへのOutbound方向です。結果の返却はHTTPSのレスポンスであり、ファイアウォールのステートフルインスペクションによって自動的に通過します。Inbound通信の許可ルールは不要です。」
この説明ができるかどうかで、病院IT担当者からの信頼度が大きく変わります。第12章のケーススタディ(12.3)で、この回答を間違えて3か月停滞した実例を紹介しています。
6.7 外部からの直接侵入がない理由
技術的な根拠
Smart Assistの通信設計において、外部(インターネット)から院内ネットワークへの直接侵入がないと言える技術的根拠を整理する。
根拠1: Inboundポートが開いていない
外部から院内への新規接続を許可するファイアウォールルールが存在しないため、外部からの接続は物理的にブロックされる。
根拠2: NATの内側
院内PCはNATの内側に位置しており、外部からプライベートIPアドレスへ直接到達する方法がない。
根拠3: リスニングサービスなし
Smart Assist PCは外部からの接続を待ち受けるサービス(Webサーバ、SSHサーバなど)を稼働させていない。仮にファイアウォールを通過できたとしても、接続を受け入れるプロセスが存在しない。
根拠4: TLSによる通信保護
TLSにより、通信経路上での盗聴・改ざん・なりすましが防止されている。中間者攻撃(MITM)による通信の傍受も困難である。
まとめ:病院IT担当者への説明
「外部から院内への侵入はありません」
技術的根拠:
- Inbound通信を許可するFWルールがない
- NATの内側であり、外部から直接到達不可能
- 院内PCにリスニングサービスがない
- TLSにより経路上の攻撃も防止
結果返却はOutbound通信のHTTPSレスポンスであり、
外部からの新規Inbound接続ではありません。
6.8 資料の読み方:ネットワーク説明資料(Network Explanatory Materials)
資料の概要
「SmartAssist Network Explanatory Materials」 は、Smart Assistクラウドのシステム構成とネットワーク接続方法を図解した技術資料である。病院IT部門がファイアウォール設定や接続方式を検討する際に使用する。
対応するファイル:
UHW-PRJ2024040-L-2025-007a_SmartAssist Network Explanatory Materials
Smart Assistクラウドの構成要素
ネットワーク説明資料には、Smart Assistクラウドを構成するAWSサービスの全体像が示されている。担当者は各サービスの役割を理解しておく必要がある。
| AWSサービス | 役割 | 担当者が説明できるべきこと |
|---|---|---|
| Route 53 | DNS | Smart Assistのドメイン名を解決する |
| Certificate Manager | TLS証明書管理 | HTTPS通信に使用する証明書を自動管理 |
| WAF | Webアプリケーションファイアウォール | 不正リクエストをフィルタリング |
| ALB | Application Load Balancer | 通信を複数のサーバーに分散する(第8章参照) |
| Cognito | ユーザー認証・認可 | 操作者の認証とアクセス制御を行う |
| Lambda | サーバーレス関数 | アプリケーションロジックの実行基盤 |
| EC2 | 仮想サーバー | メンテナンス用のサーバー |
| S3 | オブジェクトストレージ | 画像データ・結果ファイルの保存 |
| Aurora (PostgreSQL) | データベース | ユーザー属性・測定ステータスの管理 |
| SSM / Secrets Manager | パラメータ・シークレット管理 | 接続情報や認証情報の安全な管理 |
セキュリティ・監査サービス
Smart Assistクラウドでは以下のAWSセキュリティサービスが有効化されている。
| サービス | 役割 |
|---|---|
| CloudWatch | ログ監視・アラーム通知 |
| CloudTrail | すべてのAPI操作の記録(監査証跡) |
| GuardDuty | 脅威検出(IDS/IPS機能) |
| Config | リソースの構成変更履歴の管理 |
| Security Hub | セキュリティ状態の一元管理 |
| Shield | DDoS攻撃からの保護 |
| Detective | セキュリティデータの分析・可視化 |
| Inspector | 脆弱性の自動検出 |
| IAM Access Analyzer | アクセス権限の異常検知 |
3つの接続オプション
ネットワーク説明資料では、病院からSmart Assistクラウドへの接続方法として3つのオプションが提示されている。
| オプション | 方式 | 病院側の要件 | 特徴 |
|---|---|---|---|
| Option 1 | Outbound直接接続 | FWでOutbound HTTPS許可 | 最もシンプル。FQDNベースの許可設定が必要 |
| Option 2 | AWS Client VPN | VPNクライアントの導入 | VPN経由の暗号化通信。専用アプリが必要 |
| Option 3 | プロキシ経由 | 既存プロキシサーバーの利用 | 病院のプロキシポリシーに準拠。ただしSmart Assistはプロキシ非サポートの場合あり |
重要: いずれのオプションでも 静的なインバウンド設定は不要 である。通信方向はすべて病院側からクラウドへのOutboundである。
物理接続の構成
AUTION EYEとPC・LIS間の接続構成も資料に記載されている。
| 接続 | 方式 | 備考 |
|---|---|---|
| AI-4510 → PC | SED_PORT(USB経由) | 有線接続 |
| PC → Hospital LIS | HOST_PORT(LAN経由) | Smart Assist経由でのLIS接続 |
| PC → Smart Assist Cloud | HTTPS (443) | 病院LANからOutbound |
次章では、この通信を実現するためのファイアウォール設計と、病院IT担当者への申請方法を学ぶ。