コンテンツにスキップ

ネットワーク構成図

本文書は、当組織のネットワーク構成および外部サービスへの接続状況を示すものである。

用語説明
spartrainingスパトレオンライン英会話アプリケーション
gryffindorスパトレAI英会話アプリケーション
videocallスパトレビデオ通話基盤(LiveKit)

エンドユーザーはproduction環境にのみ接続する。unstable/staging環境は開発・テスト用途であり、エンドユーザーからのアクセスは想定していない。

注記: 図中のインターネット(社内向け/エンドユーザー向け)は、技術的には同一のインターネットである。図ではアクセスの流れをわかりやすくするために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
構成要素説明
開発者PC開発者が業務に使用する端末。全員リモートワーク
構成要素説明
社員PC一般社員が業務に使用する端末
ルーター社内ネットワークとインターネットを接続
サービス説明
Microsoft Entra IDアカウント管理の中心。Google WorkspaceおよびAWS SSOと連携
Google WorkspaceEntra IDと連携し、sptr.jpドメインのGoogle認証を提供
AWS SSOEntra IDと連携し、AWSリソースへのシングルサインオンを提供

spartrainingはunstable環境とproduction環境の2環境があり、ネットワーク的に完全に分離されている。

環境構成認証
unstableCloudFront → ALB → ECS → RDSCognito認証あり
productionCloudFront → ALB → ECS → RDS-

各環境の特徴は以下の通り。

構成要素説明
CloudFrontCDNおよびエッジロケーション
ALBApplication Load Balancer
ECSコンテナ実行環境
RDSデータベース。インターネットからの直接アクセス不可
Bastion踏み台サーバー。AWS SSO経由のSSHでアクセス。ポートは閉じており、インターネットには面していない

gryffindorはstaging環境とproduction環境の2環境があり、完全に別プロジェクトとしてネットワーク的に分離されている。

環境構成認証
stagingCloud Run → Cloud SQLsptr.jp Google認証
productionCloud Run → Cloud SQLなし(直インターネット)
構成要素説明
Cloud Runサーバーレスコンテナ実行環境
Cloud SQLデータベース。cloud-sql-proxy経由でのみアクセス可能。インターネットには面していない

videocallはスパトレのビデオ通話基盤であり、LiveKitを使用している。GCPのpromising-lampプロジェクトでGKE上に構築されている。unstable環境とproduction環境の2環境があり、それぞれ別クラスタとしてネットワーク的に分離されている。

環境構成説明
unstableGKE → LiveKit → Redis開発・テスト環境
productionGKE → LiveKit → Redis本番環境
構成要素説明
GKEGoogle Kubernetes Engine。LiveKitをホスト
LiveKitWebRTCベースのビデオ通話サーバー
RedisLiveKitの状態管理用
TURN ServerNAT越えのためのTURNサーバー(turn.rtc.sptr.jp)

spartrainingとの連携として、production環境からspartraining productionへwebhookで通知を送信している。

サービス用途
Slackコミュニケーション

各サービスへのアクセスには以下の認証方式を採用している。

認証方式対象説明
sptr.jp Google認証GCP(gryffindor staging)sptr.jpドメインのGoogle Workspaceアカウントによる認証
AWS SSOAWS(spartraining)Entra IDと連携したAWS SSOによるシングルサインオン
Cognito認証spartraining unstableunstable環境へのアクセス認証
なしgryffindor production直インターネットアクセス
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 サーバー]

開発者は全員リモートワークで業務を行っており、以下の方法でクラウドリソースにアクセスする。

gryffindorのstaging環境へはsptr.jpドメインのGoogle Workspaceアカウントを使用してGoogle認証を行う。production環境は認証なしで直接インターネットからアクセス可能である。

Microsoft Entra IDと連携したAWS SSOを使用してアクセスする。spartrainingのunstable/production環境へのアクセスはAWS SSOによって制御される。

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環境にアクセスする。

社員PC → ルーター → インターネット → Cloud Run → Cloud SQL の経路でgryffindor production環境にアクセスする。

各サービスにおいて認証を必須化し、Microsoft Entra IDによる一元的なアカウント管理を行っている。GCPへはGoogle Workspaceを経由したシングルサインオン、AWSへはAWS SSOを経由したシングルサインオンを活用している。VPN接続は使用せず、各サービスの認証機能により保護を実施している。

データベース(RDS、Cloud SQL)はインターネットから直接アクセスできない構成となっており、Cloud SQLはcloud-sql-proxy経由でのみアクセス可能である。


制定日: 2024年1月15日
改訂日: 2025年1月22日