次の方法で共有


Web と Direct Line チャネルのセキュリティを構成する

Copilot Studio エージェントを作成すると、エージェント ID を知っているユーザーは、デモ Web サイト チャネルとカスタム Web サイト チャネルでそのボットをすぐに使用できます。 これらのチャネルは既定で使用でき、構成の必要はありません。

Microsoft Teams アプリの場合、高度な Web チャネル セキュリティ オプションを構成できます。

注意

Teams 専用ライセンスをお持ちの場合、安全なアクセスを有効にするためのシークレットを生成することはできません。 セキュア アクセス トークンは自動的に作成され、セキュア アクセスはデフォルトで有効になっています。

ユーザーは、エージェント ID を Copilot Studio 内で直接見つけたり、他のユーザーから受け取ったりできます。 しかし、エージェントの機能や感度によっては、望ましくないかもしれません。

セキュリティ ベースの Direct Line を使用して、Direct Line シークレットまたはトークンで安全なアクセスを可能にすることよって制御する場所へのアクセスのみを有効にできます。

シークレットの交換および再生成、トークンの更新が可能で、保護されたアクセスを使用したくない場合は、簡単に無効にすることができます。

注意

Copilot Studio では、Bot Framework Direct Line チャネル を使用して、Web ページまたはアプリをエージェントに接続します。

Web チャネル セキュリティの有効化または無効化

エージェントごとにシークレットとトークンの使用を強制できます。

このオプションを有効にすると、実行時に取得される シークレットを使用する か、シークレットを使用して生成されたトークンを使用する かのいずれかで、チャネルは要求を認証するクライアントが必要です。

このセキュリティ対策を提供していないエージェントにアクセスしようとしても機能しません。

  1. エージェントの [設定] ページに移動し、[ セキュリティ] を選択し、[ Web チャネルのセキュリティ] を選択します。

[設定] ポップアップで強調表示されている Web チャネル のセキュリティのスクリーンショット。

  1. [ セキュリティで保護されたアクセスを要求する] を有効にします。

警告

「保護されたアクセスの要求」が有効または無効になると、システムが設定を反映して有効になるまでに最大 2 時間かかることがあります。 それまでは、前の設定が有効になります。 この変更を有効にするためにエージェントを発行する必要はありません。

意図せずにエージェントを公開しないように事前に計画する必要があります。

Web チャネルのセキュリティ オプションを無効にする必要がある場合は、[ セキュリティで保護されたアクセスを要求する ] トグルをオフにすることで、これを行うことができます。 保護されたアクセスを無効にすると、反映されるまでに最大 2 時間かかります。

セキュリティで保護されたアクセスを無効にしたときの確認メッセージのスクリーンショット。このアクションにより、デモ Web サイトと、使用可能なシークレットまたはトークンを使用していない Direct Line チャネルがレンダリングされます。このアクションが有効になるまでに最大 2 時間かかる場合があります。

シークレットまたはトークンを使用

サービス間アプリを作成している場合、認証ヘッダー リクエストでシークレットを指定するのが最も簡単な方法です。

クライアントが Web ブラウザーまたはモバイル アプリで実行されるアプリを作成している場合、またはコードが顧客に表示される可能性がある場合、シークレットをトークンと交換する必要があります。 トークンを使用しない場合は、秘密が侵害される可能性があります。 使用しているサービスでトークンを取得するリクエストを行う場合は、認証ヘッダーでシークレットを指定します。

トークンは、単一の会話に対してのみ機能し、更新しない限り有効期限が切れます。

状況に最適なセキュリティ モデルを選択してください。

警告

ブラウザーで実行される、ネットワーク呼び出しからハード コーディングされる、または転送されるのいづれかのコードのシークレットを、公開しないことを強くお勧めします。

サービス コードのシークレットを使用してトークンを取得することは、Copilot Studio エージェントを保護する最も安全な方法です。

シークレットを入手

アプリの認証ヘッダー リクエストなどで指定できるように、シークレットが必要になります。

  1. ナビゲーション メニューの 設定セキュリティ を選択します。 次に、Web チャネル セキュリティ タイルを選択します。

  2. シークレット 1 またはシークレット 2 のいづれかでコピーを選び、クリップボードにコピーします。 シークレットを表示するには、表示アイコン を選択します。 表示する前に、警告プロンプトが表示されます。

シークレットを交換する

エージェントで使用されているシークレットを変更する必要がある場合は、ダウンタイムや中断なしで変更できます。

Copilot Studio は、同時に機能する 2 つのシークレットを提供します。 使用しているシークレットを他のシークレットと交換できます。 シークレットが交換され、すべてのユーザーが新しいシークレットを使用し接続されたら、シークレットを再生成しても安全です。

シークレットの再生成

シークレットを再生成するには、シークレットのとなりにある再生するを選択します。

警告

元のシークレットを使用して接続されたユーザー プロファイル、またはそのシークレットから取得したトークンは切断されます。

トークンを生成

単一つのエージェントの会話を開始するときに使用できるトークンを生成できます。 詳細については、モバイル アプリまたはカスタム アプリへのエージェントを発行するDirect Line トークンの取得のセクションを参照してください。

  1. シークレットを取得する

  2. サービス コードで次のリクエストを発行し、シークレットをトークンに交換します。 <SECRET> を手順 1 で取得したシークレットの値に置き換えます。

    POST https://directline.botframework.com/v3/directline/tokens/generate
    Authorization: Bearer <SECRET>
    

次のスニペットは、生成されたトークン リクエストとその応答の例を示しています。

トークン生成リクエストのサンプル

POST https://directline.botframework.com/v3/directline/tokens/generate
Authorization: Bearer RCurR_XV9ZA.cwA.BKA.iaJrC8xpy8qbOF5xnR2vtCX7CZj0LdjAPGfiCpg4Fv0

トークン生成応答のサンプル

HTTP/1.1 200 OK
[other headers]
{
  "conversationId": "abc123",
  "token": "RCurR_XV9ZA.cwA.BKA.iaJrC8xpy8qbOF5xnR2vtCX7CZj0LdjAPGfiCpg4Fv0y8qbOF5xPGfiCpg4Fv0y8qqbOF5x8qbOF5xn",
  "expires_in": 1800
}

リクエストが成功した場合、応答には 1 つの会話に有効なトークンと、トークンの有効期限が切れるまでの秒数を示す expires_in 値が含まれます。

トークンを使い続けるには、期限切れになる前に、トークンを更新する 必要があります。

トークンを最新の情報に更新

トークンは、有効期限が切れていない限り、無制限に更新できます。

期限切れのトークンは更新できません。

トークンを更新するには、次のリクエストを発行して、<TOKEN TO BE REFRESHED> を更新するトークンに置き換えます。

POST https://directline.botframework.com/v3/directline/tokens/refresh
Authorization: Bearer <TOKEN TO BE REFRESHED>

次のスニペットは、トークン更新リクエストおよび応答の例を示しています。

更新リクエストのサンプル

POST https://directline.botframework.com/v3/directline/tokens/refresh
Authorization: Bearer CurR_XV9ZA.cwA.BKA.iaJrC8xpy8qbOF5xnR2vtCX7CZj0LdjAPGfiCpg4Fv0y8qbOF5xPGfiCpg4Fv0y8qqbOF5x8qbOF5xn

更新応答のサンプル

リクエストが成功した場合、応答には以前のトークンと同じ会話に有効な新しいトークンと、新しいトークンの有効期限が切れるまでの秒数を示す expires_in 値が含まれます。

新しいトークンを使い続けるには、期限切れになる前に、再度トークンを更新する必要があります。

HTTP/1.1 200 OK
[other headers]
{
  "conversationId": "abc123",
  "token": "RCurR_XV9ZA.cwA.BKA.y8qbOF5xPGfiCpg4Fv0y8qqbOF5x8qbOF5xniaJrC8xpy8qbOF5xnR2vtCX7CZj0LdjAPGfiCpg4Fv0",
  "expires_in": 1800
}

トークンの更新の詳細については、Direct Line API - 認証のセクション Direct Line トークンの更新を参照してください。