近年では、SaaSやクラウドサービスとのAPI連携が一般的になっています。
しかし、既存システムがデータセンター内の閉域環境にあり、現在はHTTPかつIPアドレスでアクセスしている構成の場合、単純にAPIを実装するだけでは連携できません。
特に、
- 自社システムからクラウドAPIを呼び出す
- クラウドサービスから自社システムのAPIを呼び出す
といった連携では、ネットワークやセキュリティを含めた事前準備が必要になります。
本記事では、C# MVC(.NET Framework 4.6)で構築されたシステムを前提として、クラウドAPI連携を行う際に確認すべき環境構築のポイントを整理します。
APIの実装方法ではなく、プロジェクト開始前に確認すべきインフラ・ネットワーク・運用面に焦点を当てています。
API連携方式ごとの確認ポイント
API連携と一言でいっても、通信方向によって必要な準備は異なります。
まずは、自社システムとクラウドサービスの通信方式を確認しましょう。
| 項目 | 自社→クラウドAPI | クラウド→自社API | 双方向連携 |
|---|---|---|---|
| HTTPS化 | ○ | ○ | ○ |
| TLS1.2以上対応 | ○ | ○ | ○ |
| 外向き通信許可 | ○ | – | ○ |
| ポート443公開 | – | ○ | ○ |
| ドメイン準備 | △ | ○ | ○ |
| SSL証明書 | △ | ○ | ○ |
| WAF | – | ○ | ○ |
| リバースプロキシ | – | ○ | ○ |
| DMZ検討 | – | ○ | ○ |
| 接続元IP制限 | ○ | ○ | ○ |
| API認証 | ○ | ○ | ○ |
| ログ設計 | ○ | ○ | ○ |
| リトライ設計 | ○ | ○ | ○ |
自社システム → クラウドAPI
自社システムからクラウドサービスへデータ送信やデータ取得を行う構成です。
例えば、受注データの送信、在庫情報の取得、マスタ同期などが該当します。
主に確認すべき章は以下です。
- HTTPS化は必須
- .NET Framework 4.6で確認すべきTLS設定
- ファイアウォール設定
- 接続元IP制限への対応
- API認証方式を確認する
- ログ設計
- リトライとタイムアウト設計
クラウドサービス → 自社API
クラウドサービスから自社システムへ通知やデータ送信を行う構成です。
例えば、Webhook通知、注文情報通知、処理結果通知などが該当します。
主に確認すべき章は以下です。
- API公開時に推奨されるネットワーク構成
- ドメイン名を準備する
- HTTPS化は必須
- ファイアウォール設定
- 接続元IP制限への対応
- API認証方式を確認する
双方向連携
双方がAPIを呼び出す構成です。
例えば、自社システムから受注登録を行い、その結果をクラウドサービス側から通知するといったケースが該当します。
本記事では、この双方向連携を前提として解説します。
API連携の前に確認したいポイント
API連携の相談を受けた際、まず確認すべきポイントがあります。
クラウド側からの接続有無
自社からAPIを呼び出すだけなのか、それともクラウドサービス側から自社APIへ接続されるのかを確認します。
クラウド側から接続される場合は、API公開やセキュリティ対策が必要になります。
接続元IP制限の有無
クラウドサービスによっては、事前登録したIPアドレス以外からのアクセスを拒否する場合があります。
本番環境と検証環境それぞれのグローバルIPを確認しておきましょう。
テスト環境の有無
API連携では検証環境が重要です。
以下の内容を事前に確認しておきます。
- テストAPIの有無
- テスト用認証情報
- 検証用IP登録の要否
- テストデータの有無
現在の構成で考慮すべき課題
現在の構成が以下の場合、
- HTTP通信
- IPアドレス接続
- 閉域環境のみ利用
クラウド連携時にはいくつかの課題があります。
HTTP通信では暗号化されないため、APIキーや認証情報を安全に扱うことができません。また、IPアドレス接続ではSSL証明書の運用が難しくなります。
さらに、クラウド側から自社システムへ接続する場合は、通信経路やアクセス制御についても検討する必要があります。
クラウド連携を機に、HTTPS化とドメイン管理への移行をおすすめします。
API連携専用サイトを用意する
既存業務サイトとは別に、API連携専用サイトを用意することをおすすめします。
構成例
既存業務サイト https://system.example.local
API連携サイト https://api.example.co.jp
分離するメリット
- API連携用設定を独立管理できる
- 既存業務への影響を抑えられる
- SSL証明書を分離できる
- ログ管理を分離できる
- 障害調査が容易になる
- 将来的なAPI追加に対応しやすい
特にクラウドサービスからアクセスされるAPIは、業務画面とは別サイトとして管理する方が安全です。
API公開時に推奨されるネットワーク構成
クラウドサービスから自社APIへアクセスされる場合、APIサーバを直接インターネットへ公開することは推奨されません。
推奨構成
インターネット
│
▼
WAF
│
▼
リバースプロキシ
│
▼
APIサーバ
│
▼
DBサーバ
WAF
WAF(Web Application Firewall)は、Webアプリケーションへの攻撃を検知・防御する仕組みです。
主に以下の攻撃への対策として利用されます。
- SQLインジェクション
- クロスサイトスクリプティング(XSS)
- 不正リクエスト
- 一部のDDoS攻撃
リバースプロキシ
リバースプロキシは、APIサーバを直接公開せず、中継サーバを配置する仕組みです。
代表的な製品やサービスには以下があります。
- IIS ARR
- Nginx
- Apache
- F5
- Azure Application Gateway
DMZ
DMZは外部公開用のネットワークセグメントです。
インターネットと社内ネットワークを分離することで、不正アクセス時の影響範囲を抑えることができます。
ドメイン名を準備する
API公開時はIPアドレスではなくドメイン名を利用します。
例
- api.example.co.jp
- system-api.example.co.jp
ドメイン名を利用することで、SSL証明書を利用しやすくなり、運用面でも管理しやすくなります。
HTTPS化は必須
API連携ではHTTPSが必須です。
通信対象には以下の情報が含まれます。
- APIキー
- Bearerトークン
- 顧客情報
- 受注情報
- 在庫情報
HTTP通信のままでは盗聴や改ざんのリスクがあります。
IISで必要な作業
- SSL証明書の取得
- IISへの証明書登録
- HTTPSバインド設定
- HTTPアクセス制御
- HTTPS接続確認
.NET Framework 4.6で確認すべきTLS設定
現在のクラウドサービスではTLS1.2以上が必須となるケースがほとんどです。
確認事項は以下の通りです。
- TLS1.2が有効か
- Windows Serverが対応しているか
- HttpClientで問題なく接続できるか
- 接続先が要求するTLSバージョン
開発環境では動作するものの、本番サーバでは接続できない場合、TLS設定が原因であることも少なくありません。
ファイアウォール設定
閉域環境の場合、まず通信経路を確認します。
自社 → クラウドAPI
確認事項
- HTTPS通信許可
- DNS名前解決
- プロキシ利用有無
クラウド → 自社API
確認事項
- HTTPS公開
- ポート443開放
- NAT設定
- 接続元IP制限
接続元IP制限への対応
API連携では、可能な限り接続元IP制限を利用することをおすすめします。
確認事項は以下です。
- 自社本番環境のグローバルIP
- 自社検証環境のグローバルIP
- クラウドサービス側の送信元IP
IP制限を利用することで、不正アクセスリスクを大幅に低減できます。
API認証方式を確認する
API認証方式はサービスごとに異なります。
代表的な認証方式は以下です。
- APIキー認証
- Bearerトークン認証
- OAuth2.0
- Basic認証
- クライアント証明書認証
実務では、
- HTTPS
- IP制限
- Bearerトークン認証
を組み合わせるケースがよくあります。
IISで分離しておきたい設定
API連携サイトは既存サイトと分離して管理することをおすすめします。
分離対象は以下です。
- IISサイト
- アプリケーションプール
- SSL証明書
- web.config
- ログ出力先
- フォルダ権限
障害発生時の切り分けが容易になります。
ログ設計
API連携ではログ設計が重要です。
記録すべき内容は以下です。
- 実行日時
- API名
- HTTPステータスコード
- 処理時間
- エラー内容
- リトライ回数
一方で、以下の情報はログへ出力しないよう注意が必要です。
- APIキー
- アクセストークン
- パスワード
- 個人情報
リトライとタイムアウト設計
クラウドAPIとの通信では一時的な通信障害が発生することがあります。
事前に以下を決めておきましょう。
- タイムアウト秒数
- リトライ回数
- リトライ間隔
- 二重登録防止方法
- エラー通知方法
特に登録系APIでは、安易なリトライによる二重登録に注意が必要です。
API連携は画面実行かジョブ実行か
API連携の実行方法も事前に決めておきます。
画面実行
利用者がボタンを押して実行する方式です。
メリット
- 即時実行できる
- 結果を確認しやすい
ジョブ実行
定期的に自動実行する方式です。
メリット
- 自動化できる
- 夜間実行が可能
業務要件に応じて選択します。
検証環境の準備
API連携では検証環境が重要です。
確認事項
- テストAPI
- テスト認証情報
- テスト用IP登録
- 本番とのデータ分離
- ログ分離
本番接続先と検証接続先は明確に分けて管理しましょう。
API連携前のチェックリスト
- 通信方式を整理したか
- HTTPS化したか
- TLS1.2以上に対応したか
- ドメインを準備したか
- SSL証明書を準備したか
- ファイアウォール設定を確認したか
- IP制限を確認したか
- 認証方式を確認したか
- 検証環境を準備したか
- ログ設計を行ったか
- リトライ設計を行ったか
まとめ
閉域環境のC# MVCシステムからクラウドAPI連携を行う場合、最初に考えるべきことはAPIの実装ではなく通信方式の整理です。
特に、
- 自社→クラウドAPI
- クラウド→自社API
- 双方向連携
のどれに該当するかによって必要な準備は大きく異なります。
また、クラウドサービス側から自社APIへ接続される場合は、API公開に伴うセキュリティ対策も重要になります。
システム開発に着手する前に、インフラ担当者・ネットワーク担当者・API提供元と連携しながら通信要件を整理しておくことで、安定したAPI連携環境を構築できるでしょう。

コメント