1. システム概要#
1.1 システム概要#
システムはAmazon Web Services(以降、AWS)上に構築されており、マイクロサービスアーキテクチャを採用しています。
開発環境、開発環境(Stable)、UAT(User Acceptance Test)環境、および、本番環境の4環境にて運用されています。各環境はAWSアカウントが分離されており、それぞれ異なるAWSアカウントを利用しています。
システムは大きくフロントエンド(ここではxIDの認可画面を意味します、xIDアプリは含みません)、バックエンドサービス群、データベースにて構成されています。
グローバルサービスを除くリソースは東京リージョン(ap-northeast-1)に配置されています。
DNSとしてAmazon Route 53を利用しています。
1.2 利用AWSサービス#
Amazon Simple Storage Service
バックエンドサービス群は次の サービスを利用しています。Amazon Virtual Private Cloud(VPC)
Amazon Elastic Container Registry
Amazon Elastic Container Service(ECS)
データベースにはAmazon Aurora PostgreSQL(Amazon Relational Database Service)を利用しています。
その他、運用、管理、セキュリティ、サービス監視といった用途にて、次のサービス(既出は除く)を利用しています。AWS Identity and Access Management(IAM)
Amazon Elastic File System(EFS)
Amazon Simple Notification Service
AWS Key Management Service
1.3 ネットワーク構成#
東京リージョンで利用可能な3つのアベイラビリティゾーンを利用した冗長化構成をとっています。
AWS VPCを利用し、プライベートサブネットとパブリックサブネットを使用してセグメント化されています。
パブリックサブネットには、Application Load Balancer、および、NAT Gatewayが配置されます。
プライベートサブネットには、バックエンドサービスが実行されるECSサービス、Lambda関数、および、Auroraクラスターが配置されます。Lambda関数についてはVPC内のリソースにアクセスが必要なもののみ、VPC内で実行されます。
1.4 システム概要図#
2. AWS権限設定#
2.1 リソースにおける権限設定#
各リソースには役割に応じた適切なIAMロールを割り当てています。
例えばAuroraクラスターへの接続はIAMデータベース認証を用いて行われますが、データベースへのアクセスのあるリソースにのみ、IAMポリシーにて権限が付与されています。2.2 ユーザーの権限設定#
AWS IAM Identity Centerを使用して社内ユーザーの認証、および、認可を行っています。
各ユーザーの役割に応じた適切な権限管理(例えば開発者は開発環境にのみアクセス可能など)を行い、特に本番環境へのアクセスは業務上必要な者のみに制限されています。
部署異動、退職等による権限の変更については適宜行っています。手動による変更作業においては管理者(スーパーユーザー)権限を利用してますが、対応者をCTO、および、プロダクト責任者のみに限定して運用しています。
他開発者、委託先等の簡易的に作業を行うという運用は現在とっておりません。
2.3 多要素認証#
3. ネットワークセキュリティ#
3.1 セキュリティグループとネットワークACL#
受信側のセキュリティグループを用いて必要最小限の許可設定にてアクセス制御を行っています。
ネットワークACLにて明示的な拒否、明示的な許可、暗黙の拒否を用いた設定を行っています。
3.2 通信の暗号化#
TLSを使用してデータの暗号化を実施しています。
利用可能なTLSバージョンはv1.2以上です。3.3 DDoS攻撃への対策#
4. データセキュリティ#
4.1 データ保管先#
サービスに利用されるデータはAuroraクラスター、および、S3に記録、保存されます。
ECSサービス の各タスクは読み取り専用コンテナとして実行され、自身のストレージ領域やEFSへの書き込みは行われません。
タスクに利用されるコンテナイメージはAmazon ECR上のプライベートリポジトリに保存されます。コンテナイメージのタグはイミュータブル設定とされ、上書き不可での運用となります。
サービス更新時は新しいコンテナイメージから新しいタスクが起動され、古いタスクは停止されます。
4.2 データベース暗号化#
4.2 データの暗号化#
利用者の個人情報は一部(姓名、メールアドレス)を除いてE2E暗号化されています。4.3 データへのアクセス制御#
Aurora PostgreSQLクラスターへのアクセスはIAM認証にて制御されています。
S3バケットはパブリックブロック設定を行っています。
S3バケット内オブジェクトへのアクセスについては、同一アカウント内においてはIAM、クロスアカウントにおいてはIAM、および、バケットポリシーを使用してデータのアクセスを制御しています。
4.4 データへのアクセスログ#
S3バケットのアクセスについてはCloudTrailを利用したオブジェクトレベルのアクセスログが取得されます。
5. アプリケーションセキュリティ#
5.1 Web Application Firewall#
CloudFront、および、ALBにAWS WAFを設定し、各種ルールを設定、運用しています。5.2 脆弱性スキャン#
コンテナイメージはAmazon Inspectorを利用して、イメージ登録時、および、定期的にイメージスキャンが実行されています。
脆弱性検知した場合、随時ライブラリ等のアップデートを実施しています。5.3 セキュリティイベントの監視#
下記のサービスを利用し、異常検知時は運用者に通知を送信するように構成されています。Amazon Simple Notification Service
5.4 静的ファイルの改ざんへの対策#
静的ファイルについてはS3バケットにホストされていますが、該当のS3バケットの変更監視をしています。
リリース作業などを除き、不審な変更検知があった場合には直ちに確認、および、適切な対応を実施する運用となっています。
(今のところ、当事象の発生はありません。)6. サービス運用#
6.1 xID Admin Portal#
xID社のxID運用者はxID Admin Portal と呼ばれる専用の管理画面を用いて認可クライアントの管理等を実施します。6.2 障害検知#
下記のサービスを利用し、異常検知時は運用者に通知を送信するように構成されています。Amazon Simple Notification Service
なお、運用者への通知後の対応については、障害発生時の対応手順を文書化しており、手順に沿った対応が行われます。6.3 ログ管理と保持ポリシー#
ログは次のサービスに保存されます。保持期間はCloudTrail(AWSサービスの操作履歴)については1年、その他ログについては3カ月としています。Amazon Simple Storage Service
6.4 バックアップと復旧戦略