ネットワーク構成図
本文書は、当組織のネットワーク構成および外部サービスへの接続状況を示すものである。
1.1 用語定義
Section titled “1.1 用語定義”| 用語 | 説明 |
|---|---|
| spartraining | スパトレオンライン英会話アプリケーション |
| gryffindor | スパトレAI英会話アプリケーション |
| videocall | スパトレビデオ通話基盤(LiveKit) |
1.2 エンドユーザーのアクセス
Section titled “1.2 エンドユーザーのアクセス”エンドユーザーはproduction環境にのみ接続する。unstable/staging環境は開発・テスト用途であり、エンドユーザーからのアクセスは想定していない。
2. ネットワーク構成図
Section titled “2. ネットワーク構成図”注記: 図中のインターネット(社内向け/エンドユーザー向け)は、技術的には同一のインターネットである。図ではアクセスの流れをわかりやすくするために2つに分けて表現している。
flowchart LR
subgraph 開発者環境
DevPC[開発者PC<br/>リモートワーク]
end
subgraph 一般社員環境
EmpPC[社員PC] --> Router[ルーター]
end
subgraph エンドユーザー環境
User((エンドユーザー))
end
subgraph インターネット
Internet_User((インターネット<br/>エンドユーザー向け))
Internet_Company((インターネット<br/>社内向け))
end
subgraph ID管理
EntraID[Microsoft Entra ID]
GoogleWorkspace[Google Workspace]
end
subgraph クラウドサービス
subgraph AWS
AWSSSO[AWS SSO]
subgraph spartraining-unstable
CF_U[CloudFront]
ALB_U[ALB]
ECS_U[ECS]
RDS_U[RDS]
Bastion_U[Bastion]
end
subgraph spartraining-production
CF_P[CloudFront]
ALB_P[ALB]
ECS_P[ECS]
RDS_P[RDS]
Bastion_P[Bastion]
end
end
subgraph GCP
subgraph gryffindor-staging
CloudRun_S[Cloud Run]
CloudSQL_S[Cloud SQL]
end
subgraph gryffindor-production
CloudRun_Prod[Cloud Run]
CloudSQL_Prod[Cloud SQL]
end
subgraph videocall-unstable
subgraph GKE_U[GKE]
LiveKit_U[LiveKit]
TURN_U[TURN Server]
end
Redis_U[Redis]
end
subgraph videocall-production
subgraph GKE_P[GKE]
LiveKit_P[LiveKit]
TURN_P[TURN Server]
end
Redis_P[Redis]
end
end
end
subgraph SaaS
Slack[Slack]
end
DevPC --> Internet_Company
Router --> Internet_Company
User --> Internet_User
Internet_Company --> EntraID
EntraID -->|アカウント同期| GoogleWorkspace
EntraID -->|AWS SSO| AWSSSO
AWSSSO --> Bastion_U
AWSSSO --> Bastion_P
Internet_Company -->|Cognito認証| CF_U
CF_U --> ALB_U --> ECS_U --> RDS_U
Internet_Company --> CF_P
Internet_User --> CF_P
CF_P --> ALB_P --> ECS_P --> RDS_P
Internet_Company -->|IAP sptr.jp認証| CloudRun_S
Internet_Company --> CloudRun_Prod
Internet_User --> CloudRun_Prod
CloudRun_S -.->|cloud-sql-proxy| CloudSQL_S
CloudRun_Prod -.->|cloud-sql-proxy| CloudSQL_Prod
Internet_Company --> LiveKit_U
Internet_Company --> LiveKit_P
Internet_User --> LiveKit_P
LiveKit_U --> Redis_U
LiveKit_P --> Redis_P
LiveKit_U --> TURN_U
LiveKit_P --> TURN_P
LiveKit_U -->|webhook| ECS_U
LiveKit_P -->|webhook| ECS_P
Internet_Company --> Slack
Internet_Company --> GoogleWorkspace
3. 構成要素
Section titled “3. 構成要素”3.1 開発者環境
Section titled “3.1 開発者環境”| 構成要素 | 説明 |
|---|---|
| 開発者PC | 開発者が業務に使用する端末。全員リモートワーク |
3.2 一般社員環境
Section titled “3.2 一般社員環境”| 構成要素 | 説明 |
|---|---|
| 社員PC | 一般社員が業務に使用する端末 |
| ルーター | 社内ネットワークとインターネットを接続 |
3.3 ID管理
Section titled “3.3 ID管理”| サービス | 説明 |
|---|---|
| Microsoft Entra ID | アカウント管理の中心。Google WorkspaceおよびAWS SSOと連携 |
| Google Workspace | Entra IDと連携し、sptr.jpドメインのGoogle認証を提供 |
| AWS SSO | Entra IDと連携し、AWSリソースへのシングルサインオンを提供 |
3.4 spartraining(AWS)
Section titled “3.4 spartraining(AWS)”spartrainingはunstable環境とproduction環境の2環境があり、ネットワーク的に完全に分離されている。
| 環境 | 構成 | 認証 |
|---|---|---|
| unstable | CloudFront → ALB → ECS → RDS | Cognito認証あり |
| production | CloudFront → ALB → ECS → RDS | - |
各環境の特徴は以下の通り。
| 構成要素 | 説明 |
|---|---|
| CloudFront | CDNおよびエッジロケーション |
| ALB | Application Load Balancer |
| ECS | コンテナ実行環境 |
| RDS | データベース。インターネットからの直接アクセス不可 |
| Bastion | 踏み台サーバー。AWS SSO経由のSSHでアクセス。ポートは閉じており、インターネットには面していない |
3.5 gryffindor(GCP)
Section titled “3.5 gryffindor(GCP)”gryffindorはstaging環境とproduction環境の2環境があり、完全に別プロジェクトとしてネットワーク的に分離されている。
| 環境 | 構成 | 認証 |
|---|---|---|
| staging | Cloud Run → Cloud SQL | sptr.jp Google認証 |
| production | Cloud Run → Cloud SQL | なし(直インターネット) |
| 構成要素 | 説明 |
|---|---|
| Cloud Run | サーバーレスコンテナ実行環境 |
| Cloud SQL | データベース。cloud-sql-proxy経由でのみアクセス可能。インターネットには面していない |
3.6 videocall(GCP)
Section titled “3.6 videocall(GCP)”videocallはスパトレのビデオ通話基盤であり、LiveKitを使用している。GCPのpromising-lampプロジェクトでGKE上に構築されている。unstable環境とproduction環境の2環境があり、それぞれ別クラスタとしてネットワーク的に分離されている。
| 環境 | 構成 | 説明 |
|---|---|---|
| unstable | GKE → LiveKit → Redis | 開発・テスト環境 |
| production | GKE → LiveKit → Redis | 本番環境 |
| 構成要素 | 説明 |
|---|---|
| GKE | Google Kubernetes Engine。LiveKitをホスト |
| LiveKit | WebRTCベースのビデオ通話サーバー |
| Redis | LiveKitの状態管理用 |
| TURN Server | NAT越えのためのTURNサーバー(turn.rtc.sptr.jp) |
spartrainingとの連携として、production環境からspartraining productionへwebhookで通知を送信している。
3.7 SaaS
Section titled “3.7 SaaS”| サービス | 用途 |
|---|---|
| Slack | コミュニケーション |
4. 認証方式
Section titled “4. 認証方式”各サービスへのアクセスには以下の認証方式を採用している。
| 認証方式 | 対象 | 説明 |
|---|---|---|
| sptr.jp Google認証 | GCP(gryffindor staging) | sptr.jpドメインのGoogle Workspaceアカウントによる認証 |
| AWS SSO | AWS(spartraining) | Entra IDと連携したAWS SSOによるシングルサインオン |
| Cognito認証 | spartraining unstable | unstable環境へのアクセス認証 |
| なし | gryffindor production | 直インターネットアクセス |
4.1 ID連携の流れ
Section titled “4.1 ID連携の流れ”flowchart TD
EntraID[Microsoft Entra ID] -->|アカウント同期| GoogleWorkspace[Google Workspace]
EntraID -->|ID連携| AWSSSO[AWS SSO]
GoogleWorkspace -->|sptr.jp Google認証| GCP[GCP gryffindor]
AWSSSO -->|SSO| AWS[AWS spartraining]
AWSSSO -->|SSH via SSO| Bastion[Bastion サーバー]
5. 開発者のクラウドアクセス
Section titled “5. 開発者のクラウドアクセス”開発者は全員リモートワークで業務を行っており、以下の方法でクラウドリソースにアクセスする。
5.1 GCPへのアクセス
Section titled “5.1 GCPへのアクセス”gryffindorのstaging環境へはsptr.jpドメインのGoogle Workspaceアカウントを使用してGoogle認証を行う。production環境は認証なしで直接インターネットからアクセス可能である。
5.2 AWSへのアクセス
Section titled “5.2 AWSへのアクセス”Microsoft Entra IDと連携したAWS SSOを使用してアクセスする。spartrainingのunstable/production環境へのアクセスはAWS SSOによって制御される。
5.3 Bastionサーバーへのアクセス
Section titled “5.3 Bastionサーバーへのアクセス”spartrainingの各環境(unstable/production)にはBastionサーバーが1台ずつ設置されている。開発者はAWS SSO経由のSSHでBastionサーバーにアクセスできる。ただし、Bastionサーバーのポートはインターネットに対して閉じられており、実質的にインターネットには面していない。
6. 一般社員のクラウドアクセス
Section titled “6. 一般社員のクラウドアクセス”一般社員は社内ネットワーク経由でインターネットに接続し、以下のproduction環境にアクセスする。
6.1 spartraining(AWS)へのアクセス
Section titled “6.1 spartraining(AWS)へのアクセス”社員PC → ルーター → インターネット → CloudFront → ALB → ECS → RDS の経路でspartraining production環境にアクセスする。
6.2 gryffindor(GCP)へのアクセス
Section titled “6.2 gryffindor(GCP)へのアクセス”社員PC → ルーター → インターネット → Cloud Run → Cloud SQL の経路でgryffindor production環境にアクセスする。
7. セキュリティ対策
Section titled “7. セキュリティ対策”各サービスにおいて認証を必須化し、Microsoft Entra IDによる一元的なアカウント管理を行っている。GCPへはGoogle Workspaceを経由したシングルサインオン、AWSへはAWS SSOを経由したシングルサインオンを活用している。VPN接続は使用せず、各サービスの認証機能により保護を実施している。
データベース(RDS、Cloud SQL)はインターネットから直接アクセスできない構成となっており、Cloud SQLはcloud-sql-proxy経由でのみアクセス可能である。
制定日: 2024年1月15日
改訂日: 2025年1月22日