IBM Watson をプライベートネットワークで使ってみる

2023年6月8日掲載

nested-virtualization

IBM Watsonをインターネットを経由させず、プライベートネットワークで利用する方法について紹介します。

目次

IBM Watsonのプライベート化とは?

IBM Watsonは、IBMが開発し提供する、AIサービス名に使われるブランド名です
Watsonは役割ごとにサービスが分かれています。目的にあわせたWatsonサービスを組み合わせて、柔軟なアプリケーション開発が可能となっています。
例えば、Watsonサービス内の、Speech to Text(STT)で音声をテキスト化し、Natural Language UnderStanding(NLU)で自然文を分類する、Assistantを利用して質疑応答システムを組み上げる、などです。

IBM Cloudの環境から、使いたいWatsonサービスをインスタンスとして立ち上げれば、CRUDLに沿ったHTTPリクエスト用のAPIエンドポイントも払い出されます。

このAPIエンドポイントを、パブリックなインターネットからではなく、プライベートなネットワークで利用したいと相談を受けることがあります。

専用線やVPNを引くのでしょうか。そういった手段も提供されており利用できるのですが、、IBM Cloud上でVPCを構築している場合は、非常に手軽な方法があるので、本記事ではIBM Cloud上でVPCを構築している環境でプライベートネットワークで接続する方法を紹介したいと思います。

プライベート化の手順

大きなステップは2つです。
① VPC内にVirtual Server(VM)を立てる
 ※IBMでは、Virtual Server Instanceの略としてVSIと表現することもあります

② 利用するWatsonサービスのサービスエンドポイントをプライベートに指定する

手順①は終わっているものとし、②の手順を解説します。
例として、WatsonのNLUでの手順を記載しますが、他サービスでも同様です。
※本手段が利用できるサービス一覧と詳細は以下をご確認くださいhttps://cloud.ibm.com/docs/account?topic=account-vrf-service-endpoint&interface=ui


IBM Cloudへログイン後、Natural Language Understandingのインスタンスを立ち上げる画面です。
リージョンとプランを選びます。任意のサービス名なども決めます。

watson-private-endpoint

 

最下段にサービスエンドポイントの選択項目が出てきます。

  • Public Network
  • Private Network

この選択項目をPrivate Networkにするだけで、プライベート化は終わりです。

watson-private-endpoint

Createボタンを押すと通常の流れでエンドポイントのURLとAPIキーが発行されます。

今回はプライベートネットワークを選択したので、プライベート用のエンドポイントが払い出されました。
https://api.private.jp-tok.natural-language-understanding.watson.cloud.ibm.com/instances/xxx

パブリックネットワークを指定した場合は、このようなエンドポインになります。
https://api.jp-tok.natural-language-understanding.watson.cloud.ibm.com/instances/xxx

プライベート構成

非常に簡単にプライベート化できたのですが、どういう構成になってるでしょうか。

下図の赤枠内にサーバであるVSIがあります。右箱のIBM Cloud ServiceがWatsonなどのサービスです。サーバからWatsonへの通信は、IBM Cloud内のエンドポイントを経由するようになっています。

watson-private-endpoint

https://cloud.ibm.com/docs/account?topic=account-service-endpoints-overview

インターネットを介した通信は発生せず、IBM内で完結した内部ルーティングです。帯域課金も発生しなくなります。

プライベート化されていることを確認

本当にパブリックからはアクセスできないのか心配ですね。
先ほど作成したNLUのアクセスポイントをcurlで確認してみましょう

(インターネットからアクセス)

$ url=’https://api.private.jp-tok.natural-language-understanding.watson.cloud.ibm.com/instances/xxx
$ apikey='***'
$ version="2022-04-07"

$ curl -v -u "apikey:${apikey}" "${url}/v1/models?version=${version}"
* Trying 166.9.*.*:443...
* connect to 166.9.*.* port 443 failed: Connection timed out

タイムアウトしました。

接続先の166.9.0.0/16のIPアドレスレンジは、同じLANセグメント内のデバイスのみで通信できる、リンクローカルアドレスのようなIPです。ような、と書いたのは、IETFが定める、アドレスブロックのレンジ(169.254.0.0/16)には入っていないためです。IBMが確保し、プライベートエンドポイントサービスのみで使用するために予約しているレンジです。MPLS Layer-3 VPN (RFC 4364) として規格化されています。
https://datatracker.ietf.org/doc/html/rfc4364

IPアドレスがグローバルテーブルでオーバーラップすることはありません。IBM Cloud内のアベイラビリティーゾーン(AZ)で、仮想プライベート・クラウド(VPC)からのみ、VRF(Virtual Routing and Forwarding)と呼ばれるルーティングテーブルを通して通信されます。テナント単位の専用論理ネットワークであり、マルチテナント分離されているため、顧客間で通信が紛れることもありません。

 

(VSIからアクセス)
IBM CloudのVPC内のVSIサーバへログインします。そこから上と同じ環境変数を設定し、同じコマンドを実行します。
ちゃんと応答が返ってきます。

-snip-
< HTTP/2 200
-snip-

まとめ

インターネットを経由しない、セキュアで帯域保証された経路でWatsonサービスを使いたいという要望を、簡単に実現できる手段について解説しました

IBM CloudにはIAM(Identity and Access Management)の機能も備わっています。利用するサービスをリソースグループとして管理し、それを呼び出すサービスアカウントを設定し、アクセスの権限を付与、または限定する、など細やかな管理も可能です。ネットワークのプライベート化とあわせて、このあたりの機能も交えて構成を検討ください。

関連サービス

IBM Cloud Watson

IBM Watsonの導入は、ソフトバンクにご相談ください。お客さまと共に課題を明確にしIBM Watsonの最適な活用方法をご提案します。

おすすめの記事

条件に該当するページがございません