このページの本文へ

FIXER Tech Blog - Azure

FIXER cloud.config Tech Blog

Azure Cognitive Services for Language/Cognitive Searchをプライベート接続に制限する

2023年02月15日 10時00分更新

文● 酒井 凌大/FIXER

  • この記事をはてなブックマークに追加
  • 本文印刷

 本記事はFIXERが提供する「cloud.config Tech Blog」に掲載された「Azure Cognitive Services for LanguageとAzure Cognitive Searchをプライベートに接続してみやう」を再編集したものです。

はじめに

 こんにちは。(おそらく)1年ぶりにブログを書きます。酒井です。

 最近縁あってAzure Cognitive Services for Language(以下、Language)とAzure Cognitive Search(以下、Search)を触っております。

 聡明な読者の皆様なら既にお気づきかと思います。そうです、QnA Maker(以下、QnA)後継サービス(どちらかというと機能?)です。

 残念ながら、QnAは2025年3月31日を持って廃止されてしまいます

 こやつらは、デフォルトでパブリックアクセスが有効になっており、すべてのネットワークからアクセスできてしまいます。

 はい、ではこちらをご覧ください。

 と言いたいところですが、ほんのちょっっっっっとだけ分かりづらく、詰まってしまいがちな部分なので備忘録として残しておきます。

前提

 予めLanguageのリソースを作成して、カスタム質問応答機能を有効にしておいてください(カスタム質問応答を有効にするタイミングで検索のリソースも一緒に作ることができます)。

 このようになってたらOKです。

(ここから先は動作確認用です。)

 また、Language Studio で適切なナレッジベースを作成してデプロイしてください。

 方法はこちらの記事が大変参考になると思います。

【第2回】Azure Cognitive Services for Language で簡単テキスト分析!~質問応答を使ってみる編~

 それでも難しい場合は、千尋の谷に落とされたと思って這い上がってみましょう。

手順

0. 試しにAPIを叩いてみる

 正しく、ちゃんとAPIが叩けるか確認してみましょう。

 LanguageはQuestion Answering - Get Answersを。

 Searchはインデックスの一覧表示 (Azure Cognitive Search REST API)を叩いてみましょう。

 Languageはこのようなレスポンスが返ってきます。

 Searchはこのようなレスポンスが返ってきます。

 ちなみに、APIキーをヘッダーに忘れると、このようになります。

Language

Search

 確認できましたね。APIキーはAzure Portalで確認できるので、探してみてください。

 それでは、設定していきましょう。

1. LanguageリソースにSearchリソースの「共同作成者」のロールを割り振る

 まず、Languageに紐づいたSearchリソースのアクセス制御(IAM)を開きます。

 [+ 追加] > ロールの割り当ての追加と進みます。

 あとは流れで割り当ててください。

 このようになっていたらOKです。次いきましょ。

2. Searchリソースのパブリックアクセスを無効化する

 お次はそのままネットワークを開きます。

 無効をクリックするとこのようなダイアログが出てくるのでOKを押してください。

 ちゃんとしばらく時間がかかるので、しばらく待ちます。

 (公式ドキュメントによると最大30分かかることがあるとかなんとか)

 完了したらこのようになります。

 これでSearchのパブリックアクセスが無効化できました。次いきましょ。

3. Languageリソースにアクセス制限を入れる

 いよいよ大詰めです。ひとつ前の手順とは打って変わって、今度はLanguageのリソースを開きます。

 ネットワークを開き、選択したネットワークとプライベートエンドポイントを選びます。

 するとこのようになるので、お好きな仮想ネットワークを選ぶなりなんなりしてください。

 Saveを押したらぼちぼち待ちます。

 ちゃんと更新されたらOKです。

 そうすると、あらびっくり。Searchリソースにプライベートエンドポイントが生えているではありませんか。良かったですね。

4. 制限がかかっていることを確認する

 最後に動作確認してみましょう。一番最初と同じようにAPIを叩いてみます。

 Languageは同じように叩けますね。

 しかし、Searchはタイムアウトするようになりました。ちゃんと制限がかかってますね。すばらしい。

 ちなみに、Languageを別のIPから叩くと、ちゃんとブロックしてくれます。すばらしい。

 これでLanguageとSearchがプライベートに接続され、SearchはLanguageからのみアクセスできるようになりました。また、Languageも特定のIPからのみアクセスできるようになりました。

 実際にアプリにLanguageを受け取った場合は、特定の仮想ネットワークからのアクセスを許可して使うことになると思います。

 えーそれでは良い感じになったので、あとはよしなにやってください。

参考リンク
・QnA Maker とは

・ネットワーク分離とプライベートエンドポイント
・【第2回】Azure Cognitive Services for Language で簡単テキスト分析!~質問応答を使ってみる編~
・Question Answering - Get Answers
・インデックスの一覧表示 (Azure Cognitive Search REST API)

酒井凌大/FIXER
猫とRubyが好きです。 最近.NETが好きになりました。

[転載元]
 Azure Cognitive Services for Language と Azure Cognitive Search をプライベートに接続してみやう

カテゴリートップへ

この連載の記事