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 チャネル セキュリティの有効化または無効化
エージェントごとにシークレットとトークンの使用を強制できます。
このオプションを有効にすると、実行時に取得される シークレットを使用する か、シークレットを使用して生成されたトークンを使用する かのいずれかで、チャネルは要求を認証するクライアントが必要です。
このセキュリティ対策を提供しない エージェント へのアクセスは機能しません。
エージェント の 設定、選択 セキュリティ にあります。 次に、Web チャネル セキュリティ タイルを選択します。
安全なアクセスが必要のスイッチを有効に切り替えます。
警告
「保護されたアクセスの要求」が有効または無効になると、システムが設定を反映して有効になるまでに最大 2 時間かかることがあります。 それまでは、以前の設定が有効になります。 この変更を有効にするために エージェント を公開する必要はありません。
意図せずに エージェント を公開することのないよう、事前に計画を立てておく必要があります。
Web チャネル セキュリティのオプションを無効にする必要がある場合は、安全なアクセスの要求を無効に切り替えます。 保護されたアクセスを無効にすると、反映されるまでに最大 2 時間かかります。
シークレットまたはトークンを使用
サービス間アプリを作成している場合、認証ヘッダー リクエストでシークレットを指定するのが最も簡単な方法です。
クライアントが Web ブラウザーまたはモバイル アプリで実行されるアプリを作成している場合、またはコードが顧客に表示される可能性がある場合、シークレットをトークンと交換する必要があります。 トークンを使用しない場合は、秘密が侵害される可能性があります。 使用しているサービスでトークンを取得するリクエストを行う場合は、認証ヘッダーでシークレットを指定します。
トークンは、単一の会話に対してのみ機能し、更新しない限り有効期限が切れます。
状況に最適なセキュリティ モデルを選択してください。
警告
ブラウザーで実行される、ネットワーク呼び出しからハード コーディングされる、または転送されるのいづれかのコードのシークレットを、公開しないことを強くお勧めします。
サービス コード内のシークレットを使用してトークンを取得するのが、 Copilot Studio エージェント を 保護 する最も安全な方法です。
シークレットを入手
アプリの認証ヘッダー リクエストなどで指定できるように、シークレットが必要になります。
ナビゲーション メニューの 設定 で セキュリティ を選択します。 次に、Web チャネル セキュリティ タイルを選択します。
シークレット 1 またはシークレット 2 のいづれかでコピーを選び、クリップボードにコピーします。 可視性アイコン を選択し、シークレットを明らかにします。 表示する前に、警告プロンプトが表示されます。
シークレットを交換する
エージェント で使用されているシークレットを変更する必要がある場合は、ダウンタイムや中断なしで変更できます。
Copilot Studio 同時に機能する2つの秘密を提供します。 使用しているシークレットを他のシークレットと交換できます。 シークレットが交換され、すべてのユーザーが新しいシークレットを使用し接続されたら、シークレットを再生成しても安全です。
シークレットの再生成
シークレットを再生成するには、シークレットのとなりにある再生するを選択します。
警告
元のシークレットまたはそのシークレットから取得したトークンを使用して接続されているユーザーは、すべて切断されます。
トークンを生成
単一の エージェント 会話を開始するときに使用できるトークンを生成できます。 詳細については、「 エージェント をモバイル アプリまたはカスタム アプリに公開する Direct Line 」の「 トークンを取得する」セクションを参照してください。
サービス コードで次のリクエストを発行し、シークレットをトークンに交換します。
<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 トークンの更新を参照してください。