Bot Framework のセキュリティ ガイドライン
この記事の対象: SDK v4
ボットは、金融サービス、小売、旅行などの主要なビジネス分野でますます普及しています。 ボットが、クレジット カード、SSN、銀行口座、その他の個人情報などの機密データを収集する場合があります。 このため、ボットをセキュリティ保護し、一般的な脅威や脆弱性から保護する必要があります。
ボットのセキュリティを向上させるために、いくつかの標準的な予防措置を講じてください。 一部のセキュリティ対策は、他のソフトウェア システムで使用されるセキュリティ対策と似ていますが、一部は Bot Framework に固有のものです。 後者については、Azure セキュリティ ベンチマークを参照してください。 ベンチマークには、Azure 上のクラウド ソリューションをセキュリティで保護する方法に関する推奨事項がまとめてあります。
セキュリティの問題のひとことでの分類
この記事では、セキュリティの問題を 2 つのカテゴリにグループ化しています。
脅威: スプーフィング、改ざん、情報開示、サービス拒否など、第三者がボットを侵害するために取る可能性のある戦術。
脆弱性: バグや手薄なセキュリティなど、ボットまたはボットの管理が戦術に対して脆弱となる可能性のある手法。
脆弱性を減らすことは脅威を軽減する良い方法であり、脆弱性を軽減するための既知の方法は、開発とデプロイのプロセスにセキュリティ チェック ポイントを実装することです。
共通のセキュリティ ガイドライン
次の領域は、アプリケーションに共通する標準的なセキュリティのベスト プラクティスの対象となります。
ネットワーク トラフィックを保護する
転送中のデータの改ざんと漏えいに対処するための暗号化制御を提供するプロトコルが存在します。 この点において、ボットの通信は暗号化されたチャネルを介してのみ行う必要があります。
ネットワーク上のデータを交換するには、セキュリティで保護されたシステムが HTTPS プロトコルを使用する必要があります。HTTP プロトコルは、トランスポート層セキュリティ (TLS) または Secure Sockets Layer (SSL) によって保護された暗号化された接続で、HTTP 経由でデータを転送します。 RFC 2818 - HTTP Over TLS も参照してください。
Note
すべてのボット サービス チャネルには HTTPS と TLS 1.2 が必要です。
自己破壊メッセージ
不要になり次第すぐに、機密データを完全に削除します。通常のケースでは、メッセージ交換の終了後や、一定の時間の経過後です。 これには、個人を識別する情報、ID、PIN、パスワード、セキュリティの質問と回答などが含まれます。
データ ストレージ
ベスト プラクティスでは、情報を安全な状態で一定の時間保存し、目的を果たした後で破棄します。
一般的なセキュリティ手法をいくつか以下に示します。
データベース ファイアウォール
- ファイアウォールは、既定でトラフィックへのアクセスを拒否します。 許可されるトラフィックは、データにアクセスする必要がある特定のアプリケーションまたは Web サーバーから送信される必要があります。
- Web アプリケーション ファイアウォールをデプロイする必要もあります。 これは、Web アプリケーションに対する SQL インジェクション攻撃などの攻撃により、データベースからデータが流出したり、削除されたりする可能性があるためです。
データベースのセキュリティ強化
- データベースがベンダーによって引き続きサポートされており、既知の脆弱性を削除するためにすべてのセキュリティ パッチがインストールされた最新バージョンのデータベースを実行していることを確認します。
- 不要な機能やサービスをアンインストールまたは無効にし、既定のアカウントのパスワードを既定値から変更してください。可能な場合は、既定のアカウントで不要なものを削除します。
- 無効にする特定の理由がない限り、データベースによって提供されるすべてのデータベース セキュリティ コントロールを必ず有効にしてください。
重要な情報を最小限に抑える
- データベースに置く必要のない機密情報は、決して格納しないでください。
- コンプライアンスやその他の目的のために保持するデータは、より安全なストレージ (たとえばオフライン) に移動すると良いでしょう。そうすると、データベースのセキュリティ上の脅威の影響を受けにくくなります。
- 元のインストール手順でサーバーによって書き込まれた履歴ファイルは必ず削除してください。 インストールが成功した場合、これらのファイルには意味はありませんが、悪用される可能性のある情報が含まれている可能性があります。
教育
ボットは、会社とその顧客の間に革新的な対話型ツールを提供します。 ただし、会社の Web サイトを改ざんするためのバックドアとなる可能性があります。 そのため、企業は、開発者が Web サイトのセキュリティの一部としてのボット セキュリティの重要性を理解していることを必ず確認する必要があります。 さらに、ユーザーのエラーも問題になる可能性があります。 これには、ボットを安全に使用する方法に関する教育が必要になります。次に例を示します。
- 開発者向けには、ボットを安全に使用する方法に関する社内トレーニングを戦略に含める必要があります。
- お客様には、ボットと安全に対話する方法について詳しく説明したガイドラインを提供します。
ボット固有のセキュリティ ガイドライン
次の領域は、Bot Framework アプリケーションの標準的なセキュリティのベスト プラクティスの一部でカバーされています。 次のガイドラインでは、Bot Framework のベスト プラクティスのセキュリティ対策について説明します。 詳細については、「セキュリティとプライバシーの FAQ」をご覧ください。
ボットからコネクタへの認証
Bot Connector サービスは、HTTPS をネイティブに使用して、ボットとチャネル (ユーザー) 間でメッセージを交換します。 Bot Framework SDK によって、基本的なボットからチャネルへの認証が自動化されます。
警告
独自の認証コードを記述する場合は、すべてのセキュリティ プロシージャを正しく実装することが不可欠です。 「認証」記事内のすべての手順を実装すると、攻撃者がご利用のボットに送信されたメッセージを読み取ったり、ボットになりすましてメッセージを送信したり、秘密鍵を盗んだりする危険性を軽減できます。
ユーザー認証
Azure AI Bot Service 認証を使用すると、各種 ID プロバイダー (Microsoft Entra ID、GitHub、Uber など) に対してユーザーを認証し、これらからアクセス トークンを取得できます。 カスタム OAuth2 ID プロバイダーの認証も構成できます。 これだけで、サポートされているすべての ID プロバイダーとチャネルで動作する 1 つの認証コードを作成できます。 これらの機能を利用するには、次の手順を実行する必要があります。
- ボットで、ID プロバイダーでのアプリケーション登録の詳細を含む
settings
を静的に構成します。 - 前の手順で指定したアプリケーション情報に基づき、
OAuthCard
を使用して、ユーザーをサインインします。 - Azure AI Bot Service API を使用してアクセス トークンを取得します。 認証されたユーザーがログイン状態を維持できる期間に時間制限を設定することをお勧めします。
詳細については、「ユーザー認証」の記事を参照してください。
Web チャット
Web チャット コントロールを使用する場合は、偽装と ID スプーフィングに関するいくつかの重要なセキュリティの考慮事項に留意する必要があります。 詳細については、「Direct Line 拡張認証」を参照してください。