JMDC TECH BLOG

JMDCのエンジニアブログです

個人情報連携システムにおけるセキュリティ設計

こんにちは!株式会社JMDC プロダクト開発部 プラットフォームGの姜です。 今年、JMDCではアドベントカレンダーに参加しています。

qiita.com

本記事は、JMDC Advent Calendar 2025 19日目の記事です。

今回は個人情報を扱う外部APIとの連携システムを構築する際に採用したセキュリティ設計についてご紹介致します。

1. 背景

個人情報を扱う外部APIと連携するサービスを構築する際に、クロスアカウント間でどのようにセキュアな通信を実現するか検討しました。

そこで、以下の3つの観点からセキュリティを検討しました。

  • 異なるAWSアカウント間での安全な通信
  • 通信相手の厳格な認証
  • 外部への不正な通信の防止

2. システム概要

今回ご紹介するのは、外部の個人情報提供APIと連携してデータを取得・中継する基盤です。

異なるAWSアカウント間で、3つの関門を通過してAPIにアクセスする構成としました。

構成図

個人情報を扱うため、以下の3つの対策でセキュリティを確保する構成としました。

  • PrivateLink: AWS内部ネットワークで通信
  • mTLS: クライアント証明書による認証
  • Proxy: ドメインベースのホワイトリストで送信制御

3. セキュリティ設計

それでは、構成図の左から順に各セキュリティ層を説明していきます。

aws.amazon.com

AWS PrivateLink は、VPC間の通信をインターネットを経由せずにAWS内部ネットワークで行うサービスです。

なぜ採用したか?

インターネットを経由せずに通信することで、通信の安全性を確保するためです。異なるAWSアカウント間の通信を、AWS内部ネットワークで完結させることができます。

構成図では青色の矢印で示されており、Load Balancerまでの通信がPrivateLinkで保護されています。

mTLS - クライアント認証

mTLS とは?

mTLS(相互TLS認証)は、サーバー側だけでなくクライアント側も証明書で認証する方式です。

なぜ採用したか?

通信相手を証明書ベースで厳密に制限し、なりすましや不正アクセスを防ぐためです。事前に発行したクライアント証明書を持つシステムのみが認証に成功し、Fargateで動作する連携APIにアクセスできます。

構成図では、Load BalancerとS3(Trust Store)を結ぶ点線が証明書検証の流れを示しています。Load Balancerが受け取ったクライアント証明書を、S3に保管された信頼できる証明書リストと照合して認証を行います。

Proxy - アウトバウンド通信制御

Squid Proxy とは?

www.squid-cache.org

Squid は、オープンソースのProxyサーバーで、HTTP/HTTPSトラフィックの制御に広く使われています。

なぜ採用したか?

通信先ドメインを制限し、外部との不要な通信を防ぐためです。連携APIから外部の個人情報提供API以外への接続をブロックすることで、万が一システムが侵害された場合でも、データの外部流出を防止します。

ホワイトリスト方式により、許可されたドメインのみへの通信を許可し、すべてのアクセスログを記録します。

構成の特徴

この構成の重要なポイントは、通信経路が2つに分かれていることです。

  • 左側(AWS間の通信): PrivateLinkでAWS内部ネットワークを使用
  • 右側(外部APIへの通信): インターネット経由

内部通信と外部通信で異なるセキュリティアプローチを取ることで、異なる観点からセキュリティを確保しています。

4. 今後の課題

証明書ローテーション

クライアント証明書の有効期限管理と更新フローの確立が必要です。自動ローテーションの仕組みを検討中です。

運用経験の蓄積

実際にサービスを運用する中で得られる知見を元に、継続的に改善していく予定です。

5. まとめ

個人情報を扱うシステムとして、PrivateLink・mTLS・Proxyによるセキュリティ構成を採用しました。

  • ネットワーク層: PrivateLinkでAWS内部通信
  • アプリケーション層: mTLSで厳格な認証
  • 送信制御層: Proxyでホワイトリスト制御

クロスアカウント間でセキュアな通信を実現する基盤として、要件を満たせる設計になったと考えています。

運用して得られた知見があれば、また共有したいと思います。


明日20日目は、川島さんによる「AI×システム開発 ― 進め方とドキュメント整備のリアル」です。お楽しみに!

JMDCでは、ヘルスケア領域の課題解決に一緒に取り組んでいただける方を積極採用中です!
フロントエンド /バックエンド/ データベースエンジニア等、様々なポジションで募集をしています。
詳細は下記の募集一覧からご確認ください。

hrmos.co

まずはカジュアルにJMDCメンバーと話してみたい/経験が活かせそうなポジションの話を聞いてみたい等ございましたら、下記よりエントリーいただけますと幸いです。

hrmos.co


★最新記事のお知らせはぜひ X(Twitter)、またはBlueskyをご覧ください!

bsky.app