Azure AI Foundry ポータルのプレイグラウンドでデータを安全に使用する
この記事では、自分のデータで Azure AI Foundry のプレイグラウンド チャットを安全に使用する方法について説明します。 以下のセクションでは、Microsoft Entra ID のロールベースのアクセス制御、マネージド ネットワーク、プライベート エンドポイントを使用してデータとリソースを保護するための推奨構成について説明します。 Azure OpenAI リソース、Azure AI 検索リソース、ストレージ アカウントのパブリック ネットワーク アクセスを無効にすることをお勧めします。 このサービスの IP アドレスは動的であるため、選択されたネットワークと IP ルールの使用はサポートされません。
Note
Azure AI Foundry のマネージド仮想ネットワーク設定は、Azure AI Foundry のマネージド コンピューティング リソースにのみ適用され、Azure OpenAI や Azure AI Search などのサービスとしてのプラットフォーム (PaaS) サービスには適用されません。 PaaS サービスを使用する場合、サービスは Microsoft によって管理されるため、データ流出リスクがなくなります。
次の表は、この記事内で行う変更をまとめたものです。
構成 | 既定値 | セキュリティで保護 | メモ |
---|---|---|---|
サービス間で送信されるデータ | パブリック ネットワーク経由で送信 | プライベート ネットワーク経由で送信 | パブリック ネットワークを経由する場合でも、データは HTTPS を使用して暗号化されて送信されます。 |
サービス認証 | API キー | Microsoft Entra ID | API キーを持つ人は誰でもサービスに対して認証できます。 Microsoft Entra ID は、より粒度が細かく堅牢な認証を提供します。 |
サービスの権限 | API キー | ロールベースのアクセス制御 | API キーは、サービスへのフル アクセスを提供します。 ロールベースのアクセス制御は、サービスに対する粒度の細かいアクセスを提供します。 |
ネットワーク アクセス | パブリック | プライベート | プライベート ネットワークを使用すると、そのプライベート ネットワークの外部のエンティティが、それによってセキュリティ保護されたリソースにアクセスできなくなります。 |
前提条件
ストレージ アカウントの ID ベースのアクセスの設定で、Azure AI Foundry ハブがデプロイされていることを確認します。 この構成は、Azure AI Foundry ハブの適切なアクセス制御とセキュリティのために必要です。 この構成は、以下のいずれかの方法を使用して確認できます。
- Azure portal で、ハブを選択した後、[設定]、[プロパティ]、[オプション] を選択します。 ページの下部で、[ストレージ アカウントのアクセスの種類] が [ID ベース アクセス] に設定されていることを確認します。
- Azure Resource Manager または Bicep テンプレートを使用してデプロイする場合は、デプロイ テンプレートに
systemDatastoresAuthMode: 'identity'
プロパティを含めます。 - Microsoft Entra ID ロールベースのアクセス制御を使用してリソースとユーザーにロールを割り当てる方法、を理解している必要があります。 詳細については、ロールベースのアクセス制御に関する記事を参照してください。
ネットワーク分離された Azure AI Foundry ハブを構成する
新しい Azure AI Foundry ハブを作成する場合は、次のドキュメントのいずれかを使用して、ネットワークの分離を備えたハブを作成します。
- Azure portal で安全な Azure AI Foundry ハブを作成する
- Python SDK または Azure CLI を使用して安全な Azure AI Foundry ハブを作成する
マネージド ネットワークを使用するように構成されていない既存の Azure AI Foundry ハブがある場合は、以下の手順に従って、使用するように構成します。
Azure portal から、ハブを選択した後、[設定]、[ネットワーク]、[パブリック アクセス] を選択します。
ハブのパブリック ネットワーク アクセスを無効にするには、[パブリック ネットワーク アクセス] を [無効] に設定します。 [保存] をクリックして変更を適用します。
[ワークスペース マネージド アウトバウンド アクセス] を選択した後、[インターネット アウトバウンドを許可する] または [承認されたアウトバウンドだけを許可する] ネットワーク分離モードを選択します。 [保存] をクリックして変更を適用します。
Azure AI サービス リソースを構成する
構成によっては、Azure OpenAI またはスタンドアロン Azure OpenAI リソースも含む Azure AI サービス リソースを使用できます。 このセクションの手順では、AI サービス リソースを構成します。 Azure OpenAI リソースにも同じ手順が適用されます。
Azure AI Foundry ハブ用の既存の Azure AI サービス リソースがない場合は、作成します。
Azure portal から、AI サービス リソースを選択した後、__リソース管理、[ID]、[システム割り当て] を選択します。
AI サービス リソースのマネージド ID を作成するには、[状態] を [オン] に設定します。 [保存] をクリックして変更を適用します。
パブリック ネットワーク アクセスを無効にするには、[ネットワーク]、[ファイアウォールと仮想ネットワーク] を選択した後、[からのアクセスを許可する] を [無効] に設定します。 [例外] で、[信頼されたサービスの一覧上の Azure サービスを許可する] が有効になっていることを確認します。 [保存] をクリックして変更を適用します。
AI サービス リソースのプライベート エンドポイントを作成するには、[ネットワーク]、[プライベート エンドポイント接続] を選択した後、[+ プライベート エンドポイント] を選択します。 このプライベート エンドポイントは、Azure Virtual Network 内のクライアントが AI サービス リソースと安全に通信できるようにするために使用されます。 Azure AI サービスでプライベート エンドポイントを使用する方法の詳細については、「プライベート エンドポイントの使用」の記事を参照してください。
- [基本] タブから、プライベート エンドポイントの一意の名前、ネットワーク インターフェイスを入力し、プライベート エンドポイントを作成するリージョンを選択します。
- [リソース] タブで、[アカウント] のターゲット サブリソースをそのまま受け入れます。
- [仮想ネットワーク] タブから、プライベート エンドポイントが接続する "Azure 仮想ネットワーク" を選択します。 このネットワークは、クライアントが接続し、Azure AI Foundry ハブがプライベート エンドポイント接続を持つネットワークと同じである必要があります。
- [DNS] タブで、DNS 設定の既定値を選択します。
- [確認と作成] タブに進んだ後、[作成] を選択してプライベート エンドポイントを作成します。
現時点では、Azure portal を通して Azure AI サービスに対するローカル (共有キー) 認証を無効にすることはできません。 代わりに、次の Azure PowerShell コマンドレットを使用することができます。
Set-AzCognitiveServicesAccount -resourceGroupName "resourceGroupName" -name "AIServicesAccountName" -disableLocalAuth $true
詳細については、「Azure AI サービスでのローカル認証の無効化」の記事を参照してください。
Azure AI 検索の構成
次のいずれかの操作を行う場合は、Azure AI Search インデックスの使用を検討することをお勧めします。
- インデックス作成プロセスをカスタマイズします。
- 他のデータ ソースからデータを取り込むことで、以前に作成したインデックスを再利用します。
既存のインデックスを使用するには、少なくとも 1 つの検索可能なフィールドが必要です。 ベクトル検索を使用する場合は、少なくとも 1 つの有効なベクトル列がマップされていることを確認します。
重要
このセクションの情報は、Azure AI Foundry で使用するために Azure AI 検索リソースを保護する場合にのみ適用されます。 他の目的で Azure AI 検索を使用している場合は、追加の設定を構成することが必要な場合があります。 Azure AI 検索の構成についての関連情報については、以下の記事を参照してください。
Azure AI Foundry ハブ用の既存の Azure AI 検索リソースがない場合は、作成します。
Azure portal から、AI 検索リソースを選択した後、[設定]、[ID]、[システム割り当て] を選択します。
AI 検索リソースのマネージド ID を作成するには、[状態] を [オン] に設定します。 [保存] をクリックして変更を適用します。
パブリック ネットワーク アクセスを無効にするには、[設定]、[ネットワーク]、[ファイアウォールと仮想ネットワーク] を選択します。 [パブリック ネットワーク アクセス] を [無効] に設定します。 [例外] で、[信頼されたサービスの一覧上の Azure サービスを許可する] が有効になっていることを確認します。 [保存] をクリックして変更を適用します。
AI 検索リソースのプライベート エンドポイントを作成するには、[ネットワーク]、[プライベート エンドポイント接続] を選択した後、[+ プライベート エンドポイントの作成] を選択します。
- [基本] タブから、プライベート エンドポイントの一意の名前、ネットワーク インターフェイスを入力し、プライベート エンドポイントを作成するリージョンを選択します。
- [リソース] タブから、リソースを含むサブスクリプションを選択し、[リソースの種類] を [Microsoft.Search/searchServices] に設定して、Azure AI 検索リソースを選択します。 利用可能なサブリソースは searchService のみです。
- [仮想ネットワーク] タブから、プライベート エンドポイントが接続する "Azure 仮想ネットワーク" を選択します。 このネットワークは、クライアントが接続し、Azure AI Foundry ハブがプライベート エンドポイント接続を持つネットワークと同じである必要があります。
- [DNS] タブで、DNS 設定の既定値を選択します。
- [確認と作成] タブに進んだ後、[作成] を選択してプライベート エンドポイントを作成します。
ロールベースのアクセス制御に基づいて API アクセスを有効にするには、[設定]、[キー]を選択した後、[API アクセス制御] を [ロールベースのアクセス制御] または [両方] に設定します。 _[はい] を選択して変更を適用します。
Note
キーを使用して Azure AI 検索にアクセスする他のサービスがある場合は、[両方] を選択します。 キーベース アクセスを無効にするには [ロールベースのアクセス制御] を選択します。
Azure Storage を構成する (インジェストのみ)
Azure AI Foundry ポータルのプレイグラウンドでインジェスト シナリオに Azure Storage を使用している場合は、Azure Storage アカウントを構成する必要があります。
ストレージ アカウント リソースを作成する
Azure portal から、ストレージ アカウント リソースを選択した後、[セキュリティとネットワーク]、[ネットワーク]、[ファイアウォールと仮想ネットワーク] を選択します。
パブリック ネットワーク アクセスを無効にし、信頼されたサービスからのアクセスを許可するには、[パブリック ネットワーク アクセス] を [選択した仮想ネットワークと IP アドレスから有効] に設定します。。 [例外] で、[信頼されたサービスの一覧上の Azure サービスを許可する] が有効になっていることを確認します。
[パブリック ネットワーク アクセス] を [無効] に設定した後、[保存] を選択して変更を適用します。 信頼されたサービスからのアクセスを許可する構成は引き続き有効です。
Azure Storage 用のプライベート エンドポイントを作成するには、[ネットワーク]、[プライベート エンドポイント接続] を選択した後、[+ プライベート エンドポイント] を選択します。
- [基本] タブから、プライベート エンドポイントの一意の名前、ネットワーク インターフェイスを入力し、プライベート エンドポイントを作成するリージョンを選択します。
- [リソース] タブから、[ターゲット サブリソース] を [BLOB] に設定します。
- [仮想ネットワーク] タブから、プライベート エンドポイントが接続する "Azure 仮想ネットワーク" を選択します。 このネットワークは、クライアントが接続し、Azure AI Foundry ハブがプライベート エンドポイント接続を持つネットワークと同じである必要があります。
- [DNS] タブで、DNS 設定の既定値を選択します。
- [確認と作成] タブに進んだ後、[作成] を選択してプライベート エンドポイントを作成します。
前の手順を繰り返してプライベート エンドポイントを作成しますが、今回は [ターゲット サブリソース] を [ファイル] に設定します。 先ほどのプライベート エンドポイントは BLOB ストレージへの安全な通信を実現しますが、このプライベート エンドポイントはファイル ストレージへの安全な通信を実現します。
ストレージに対するローカル (共有キー) 認証を無効にするには、[設定] で [構成] を選択します。 [ストレージ アカウント キー アクセスを許可する] を [無効] に設定した後、[保存] を選択して変更を適用します。 詳細については、「共有キーを使用する認可の防止」の記事を参照してください。
Azure Key Vault を構成する
Azure AI Foundry は、Azure Key Vault を使用してシークレットを安全に格納および管理します。 信頼されたサービスからキー コンテナーに対するアクセスを許可するには、以下の手順を使用します。
Note
これらの手順は、Azure AI Foundry Hub の作成時に、キー コンテナーが既にネットワークの分離用に構成されていることを前提としています。
- Azure portal から、Key Vault リソースを選択した後、[設定]、[ネットワーク]、[ファイアウォールと仮想ネットワーク] を選択します。
- ページの [例外] セクションで、[信頼された Microsoft サービスがファイアウォールをバイパスすることを許可する] が [有効] であることを確認します。
Microsoft Entra ID を使用するように接続を構成する
Azure AI Foundry から Azure AI サービスおよび Azure AI 検索への接続では、安全なアクセスのために Microsoft Entra ID を使用する必要があります。 接続は、Azure portal ではなく Azure AI Foundry から作成されます。
重要
Azure AI 検索での Microsoft Entra ID の使用は、現在プレビュー機能です。 接続の詳細については、「接続の追加」の記事を参照してください。
- Azure AI Foundry から、[接続] を選択します。 リソースへの既存の接続がある場合は、その接続を選択した後、[アクセスの詳細] セクションの [鉛筆アイコン] を選択することで、接続を更新できます。 [認証] フィールドを [Microsoft Entra ID] に設定した後、[更新] を選択します。
- 新しい接続を作成するには、[+ 新しい接続] を選択した後、リソースの種類を選択します。 リソースを参照するか、必要な情報を入力した後、[認証] を [Microsoft Entra ID] に設定します。 [接続の追加] を選択して接続を作成します。
Microsoft Entra ID を使用して接続を行いたい各リソースでこれらの手順を繰り返します。
リソースとユーザーにロールを割り当てる
サービスは、接続されているリソースにアクセスするためにお互いを承認する必要があります。 構成を実行する管理者は、ロールの割り当てを追加するために、これらのリソースに対する所有者ロールを持っている必要があります。 各リソースに必要なロールの割り当てを次の表に示します。 「割り当て先」列は、一覧に示されているリソースのシステム割り当てマネージド ID を指します。 リソース列は、割り当て先がアクセスする必要があるリソースを指します。 たとえば、Azure AI 検索には、Azure Storage アカウントに対するストレージ BLOB データ共同作成者ロールを割り当てる必要があるシステム割り当てマネージド ID があります。
ロールの割り当て方法の詳細については、チュートリアル: リソースへのアクセス権をユーザーに付与に関するページを参照してください。
リソース | ロール | 割当先 | 説明 |
---|---|---|---|
Azure AI Search | 検索インデックス データ共同作成者 | Azure AI サービス/OpenAI | インデックス内のコンテンツに対する読み取り/書き込みアクセス。 インデックスのドキュメント コレクションに対してインポート、更新、またはクエリを行います。 インジェストと推論のシナリオにのみ使用されます。 |
Azure AI Search | 検索インデックス データ閲覧者 | Azure AI サービス/OpenAI | 推論サービスにより、インデックスからデータのクエリが実行されます。 推論シナリオにのみ使用されます。 |
Azure AI Search | Search Service Contributor | Azure AI サービス/OpenAI | オブジェクト定義 (インデックス、別名、同意語マップ、インデクサー、データソース、スキルセット) に対する読み取り/書き込みアクセス。 推論サービスにより、インデックス スキーマに対して自動フィールド マッピングのクエリが実行されます。 データ インジェスト サービスは、インデックス、データ ソース、スキル セット、インデクサーを作成し、インデクサーの状態についてクエリを実行します。 |
Azure AI サービス/OpenAI | Cognitive Services 共同作成者 | Azure AI Search | 検索による AI サービス リソースの作成、読み取り、更新を許可します。 |
Azure AI サービス/OpenAI | Cognitive Services OpenAI 共同作成者 | Azure AI Search | 検索によるテキストのファインチューニング、デプロイ、生成を許可します |
Azure Storage アカウント | ストレージ BLOB データ共同作成者 | Azure AI Search | BLOB を読み取り、ナレッジ ストアに書き込みます。 |
Azure Storage アカウント | ストレージ BLOB データ共同作成者 | Azure AI サービス/OpenAI | 入力コンテナーから読み取り、前処理結果を出力コンテナーに書き込みます。 |
Azure Blob Storage プライベート エンドポイント | Reader | Azure AI Foundry プロジェクト | ネットワークが制限された環境で Blob Storage にアクセスする、マネージド ネットワークが有効な Azure AI Foundry プロジェクトの場合 |
チャット モデル用の Azure OpenAI リソース | Cognitive Services OpenAI ユーザー | 埋め込みモデル用の Azure OpenAI リソース | [オプション] 2 つの Azure OpenAI リソースを使用して通信する場合にのみ必要です。 |
Note
Cognitive Services OpenAI ユーザー ロールが必要になるのは、チャット モデル用と埋め込みモデル用の 2 つの Azure OpenAI リソースを使用する場合だけです。 これに該当する場合は、信頼されたサービスを有効にし、埋め込みモデルの Azure OpenAI リソースの接続で EntraID が有効であることを確認します。
開発者にロールを割り当てる
開発者がこれらのリソースを使用してアプリケーションを構築できるようにするには、Microsoft Entra ID で開発者の ID に次のロールを割り当てます。 たとえば、Azure AI 検索リソースに対する、開発者の Microsoft Entra ID に、検索サービス共同作成者ロールを、割り当てます。
ロールの割り当て方法の詳細については、チュートリアル: リソースへのアクセス権をユーザーに付与に関するページを参照してください。
リソース | ロール | 割当先 | 説明 |
---|---|---|---|
Azure AI Search | 検索サービス共同作成者 | 開発者の Microsoft Entra ID | Azure OpenAI Studio からインデックスを一覧表示するための API キーを一覧表示します。 |
Azure AI Search | 検索インデックス データ共同作成者 | 開発者の Microsoft Entra ID | インデックス作成シナリオで必要です。 |
Azure AI サービス/OpenAI | Cognitive Services OpenAI 共同作成者 | 開発者の Microsoft Entra ID | Azure OpenAI Studio からパブリック インジェスト API を呼び出します。 |
Azure AI サービス/OpenAI | Cognitive Services 共同作成者 | 開発者の Microsoft Entra ID | Azure OpenAI Studio から API キーを一覧表示します。 |
Azure AI サービス/OpenAI | Contributor | 開発者の Microsoft Entra ID | コントロール プレーンへの呼び出しを許可します。 |
Azure Storage アカウント | Contributor | 開発者の Microsoft Entra ID | Azure OpenAI Studio からファイルをアップロードするアカウント SAS を一覧表示します。 |
Azure Storage アカウント | ストレージ BLOB データ共同作成者 | 開発者の Microsoft Entra ID | 開発者が BLOB ストレージへの読み書きを行うために必要です。 |
Azure Storage アカウント | ストレージ ファイル データ権限付き共同作成者 | 開発者の Microsoft Entra ID | Promptflow データのストレージ内のファイル共有にアクセスするために必要です。 |
開発者が Web アプリをデプロイする必要があるリソース グループまたは Azure サブスクリプション | Contributor | 開発者の Microsoft Entra ID | 開発者の Azure サブスクリプションに Web アプリをデプロイします。 |
Azure AI Foundry ポータルでデータを使用する
これで、Azure AI Foundry に追加するデータが、Azure AI Foundry ハブとプロジェクトによって提供される分離されたネットワークでセキュリティ保護されるようになりました。 データの使用方法の例については、「質問と回答コパイロットの構築」チュートリアルを参照してください。
Web アプリのデプロイ
Web アプリ デプロイの構成については、「データ上での Azure OpenAI の安全な使用」の記事を参照してください。
制限事項
Azure AI Foundry ポータルのチャット プレイグラウンドを使用する場合は、Studio 内の別のタブに移動しないでください。 別のタブに移動する場合、[チャット] タブに戻った際に、データを削除してから追加し直す必要があります。