概要
ワークスペース管理者は、SharePoint のコントロールを使用して、承認済みサイトコレクションの許可、選択したサイトコレクションのブロック、指定した Microsoft Purview 秘密度ラベルが付いた対応ファイルの除外を行えます。
SharePoint サイトコレクションは SPSite とも呼ばれ、複数のサイトを含むことができます。コレクションのルールは、各ユーザーの既存の Microsoft 権限の範囲内で、コレクション全体に適用されます。Microsoft 365 でアクセスできないコンテンツへのアクセス権を、ユーザーに付与するものではありません。
サイト制限は、対応する SharePoint の検索、閲覧、ファイル取得、読み取り/書き込み操作に適用されます。OneDrive へのアクセスは別途管理されます。
ポリシーに合ったアクセスモードを選択してください。
許可されたサイト:許可リストに項目がある場合、ユーザーがアプリ経由でアクセスできるのは、リストに記載されたサイトコレクションのみです。
ブロックされたサイト:ユーザーは、自身の Microsoft 権限の範囲内で、拒否リストにないサイトコレクションにアクセスできます。
一度に項目を登録できるのは、どちらか一方のリストのみです。許可リストが空でも、すべてのサイトがブロックされるわけではありません。両方のリストが空の場合、SharePoint サイトの制限は解除されます。ただし、Microsoft の権限と、設定済みのその他のコントロールは引き続き適用されます。
利用条件
コントロールとワークスペース Admin API を使用するには、ワークスペースでの有効化が必要です。利用可能なコントロールには、サイトコレクションの許可リストと拒否リスト、CSV によるサイトのインポート、秘密度ラベルによる除外があります。
ルールはサイトコレクション全体に適用されます。これらのサイトコレクション用コントロールには、対象範囲を個別のサイト、フォルダー、ファイルに限定する機能や、Microsoft Sites.Selected の適用機能は含まれていません。
開始前の準備
組織で許可またはブロックするサイトコレクションを特定します。
各コレクションの GUID を取得します。完全な Microsoft Graph サイト ID では、中央の値がコレクションの GUID です。管理者 API ではコレクションの GUID を使用します。UI の CSV インポート機能では、Graph のサイト ID の 3 要素の組から GUID を抽出することもできます。
ChatGPT の権限設定と Microsoft Entra の両方で、
Sites.Read.AllやFiles.Read.Allなど、SharePoint アプリに必要な Microsoft 権限を有効にします。これらの管理機能は OpenAI 側でアクセスをフィルタリングするもので、Microsoft の委任されたアクセス許可に代わるものではありません。秘密度ラベルによる除外を設定する場合は、Microsoft 365 または Purview の管理者に、除外する各ラベルの不変の GUID を確認してください。暗号化を適用するラベルも含めてください。
API で管理する場合は、ワークスペースの UUID と ChatGPT ワークスペースの管理者キーを取得します。SharePoint の URL から対応する識別子を取得する必要がある場合は、Microsoft Graph トークンも取得します。この 2 つの認証情報は、用途が異なります。
OpenAI Cookbook について
OpenAI Cookbook は、OpenAI が公開しているサンプルコードとガイドの集成です。この記事では、Cookbook のSharePoint サイトアクセスガイドとPython 管理スクリプトを使用します。どちらも GitHub で公開されています。ブラウザーでこれらのリンクを開くと、ファイルの内容を確認できます。スクリプトを実行するには、ダウンロードしたうえで、ガイドのセットアップ手順とコマンドの説明に従ってください。
この記事では、「Cookbook」は上記の SharePoint ガイドを、「Cookbook ユーティリティ」はリンク先の Python スクリプトを指します。コマンドの例や API による許可リストの管理については、これらの資料を参照してください。
API 管理用の認証情報の設定
注:管理者キーを作成するには、ワークスペース管理者である必要があります。詳細はこちら
ChatGPT ワークスペース管理者キーの作成
ChatGPT 管理コンソールを開き、対象のワークスペースを選択します。
認証情報に移動し、管理者キーを選択します。
権限を制限付きにしてキーを作成し、アプリを書き込みに設定します。
キーを安全に保管してください。このキーは、ワークスペースの SharePoint ポリシーの読み取りと変更を許可します。
必要な権限は chatgpt.enterprise.apps.write です。API プラットフォームのキーや Microsoft Graph トークンは、ChatGPT ワークスペース管理者キーの代わりにはなりません。
詳しくは、認証情報タブでの管理者キーの管理を参照してください。スクリプトの認証情報用環境変数と安全な入力例については、Cookbook の認証情報に関する手順を参照してください。
Microsoft Graph トークンの取得
組織で承認された Microsoft 認証プロセスを使用してください。組織で Graph Explorer の利用が許可されている場合は、次の手順で対話的に検索できます。
Microsoft Graph Explorer を開き、SharePoint サイトがあるテナントの職場アカウントでサインインします。
アクセス許可の変更またはアクセス許可への同意で、サイトの読み取りに必要な権限(通常は
Sites.Read.All)を選択します。組織で承認が必要な場合は、Microsoft 管理者にアクセスの承認を依頼してください。アクセストークンタブを開き、Microsoft Graph で使用するトークンをコピーします。
Microsoft の手順については、Graph Explorer の操作を参照してください。
Graph トークンは、SharePoint URL を識別子に解決するために使用します。ChatGPT 管理者キーは、ChatGPT ポリシーの読み取りや更新に使用します。Cookbook ユーティリティで Graph トークンが必要なのは、URL を解決するコマンドのみです。既存の許可リストの読み取りやクリアには、ChatGPT 管理者キーのみが必要です。
どちらの認証情報も、ソース管理、共有ドキュメント、スクリーンショット、ログに含めないでください。
サイトコレクションの GUID の確認
SharePoint サイト URL の使用
サイトにアクセスできるアカウントで Microsoft にサインインした状態で、SharePoint サイトを開きます。
サイト URL の末尾に
/_api/site/idを追加します。たとえば、https://contoso.sharepoint.com/sites/Finance/_api/site/idを使用します。レスポンスで返された GUID をコピーします。
注:この記事の例に使用しているドメインと識別子はプレースホルダーです。
Microsoft Graph の使用
Microsoft Graph は、ホスト名、サイトコレクションの GUID、サイトの GUID という 3 つの要素をカンマで区切ったサイト ID を返します。サイトコレクションのルールには、中央の値を使用します。異なるサイト URL が、同じコレクション GUID に解決される場合があります。
検索方法と識別子の例については、SharePoint サイト識別子についてを参照してください。ChatGPT のポリシーを変更せずに複数の URL を解決するには、Cookbook の検査手順とPython 管理スクリプトを使用してください。
Microsoft の検索要件については、パスによる SharePoint サイトの取得を参照してください。
許可・ブロックするサイトコレクションの管理
ワークスペースの管理機能の使用
ワークスペースで SharePoint アプリの安全性とセキュリティの管理を開きます。
アクセスモードで、許可するサイトまたはブロックするサイトを選択します。
選択したリストにサイトコレクションを追加します。以下で説明する CSV アップロードも使用できます。
変更内容を確認し、保存を選択します。
保存されたポリシーを確認し、設定をテストします。
管理者 API で追加したサイトは、ワークスペースの管理画面に表示されます。UI で追加したサイトも、API で扱えます。どちらからでも項目を追加・削除できます。サイトの追加に使った方法に、その後の操作が制限されることはありません。
許可するサイトとブロックするサイトの切り替え
同時に項目を登録できるのは、どちらか一方のリストだけです。もう一方のモードで項目を追加する前に、既存のリストを空にして、その変更を保存します。その後、もう一方のモードを選択し、対象のコレクションを追加して、再度保存します。
使用中のリストを空にすると、保存した時点でアクセス制御が直ちに変わります。許可リストを空にすると、そのリストによるサイトへのアクセス制限が解除されます。拒否リストを空にすると、そのリストによるブロックが解除されます。一方のリストを空にしてから、もう一方を保存するまでの間は、最終的なポリシーで制限するはずのアクセスが許可される可能性があります。他の管理者と連携して切り替えを計画してください。
CSV からのサイトコレクションのアップロード
CSV アップロードは、サイトコレクションのみをサポートしています。秘密度ラベルに基づいてファイルを除外するには、秘密度ラベルの除外リストにラベルの GUID を追加します。
安全性とセキュリティの管理を開き、目的のアクセスモードを選択します。
サイトコレクションの GUID、または Microsoft Graph のサイト ID の 3 要素の組を記載した CSV を用意します。ファイル全体で識別子の形式を統一します。
CSV ファイルをアップロードを選択し、ファイルを選びます。
インポート結果と、選択したリストを確認します。続行する前に、行のエラーや警告をすべて解消します。
保存を選択して変更を適用し、保存されたリストを確認します。
CSV の要件と動作:
最大ファイルサイズ:1 MB
ヘッダーは任意です。
各行にコレクションの GUID を 1 つ、または Graph のサイト ID の 3 要素の組を記載します。3 要素の組は、引用符で囲んで 1 つのフィールドに記載するか、3 列に分けて記載できます。
Graph の 3 要素の組は、コレクションの GUID に変換されます。3 要素の組をインポートしても、特定のサイトだけを対象とするルールは作成されません。
インポートでは、既存の項目を保持したまま、選択したリストに項目を追加します。コレクションの重複は除去されます。インポート件数には、新たに追加されたコレクションの数が表示されます。
形式の混在や、形式が不正な行は受け付けられません。サイトの URL のみを含むファイルをアップロードすると、警告が表示され、サイトは追加されません。まず URL から対応するコレクションの GUID を取得してください。
アップロードで変更されるのは、保存前のリストのみです。保存を選択するまで、ワークスペースのアクセス制御は更新されません。
ここで説明する CSV アップロードは、サイトコレクションを管理するためのものです。秘密度ラベルによる除外は別途設定してください。
SharePoint の URL を記載した CSV がある場合は、Cookbook ユーティリティの CSV ワークフローを使って対応する識別子を取得し、API 経由で許可リストを管理できます。このユーティリティの site_url または url 入力は、UI での識別子アップロードとは形式もワークフローも異なります。
ポリシーとリクエストの上限
ポリシーのデフォルトの上限は、サイトコレクション 10,000 件です。ワークスペースのポリシー上限を引き上げるには、OpenAI による有効化が必要です。最大でサイトコレクション 120,000 件まで対応できます。大規模な導入を計画する前に、OpenAI の担当チームにご連絡ください。
個々の API 変更操作と現在の Cookbook スクリプトでは、リクエストごとに最大 10,000 件のコレクション GUIDを指定できます。ワークスペースのポリシー上限を引き上げても、このリクエストごとの上限は変わりません。元の URL の数ではなく、重複を除いたサイトコレクションの数を数えてください。複数の URL が同じコレクションを指す場合があります。
ワークスペース管理者 API の使用
https://api.chatgpt.com で、ワークスペースの UUID と ChatGPT ワークスペースの管理者キーを使用します。
継続的に更新されている許可リスト用コマンドとリクエスト例については、Cookbook をご覧ください。
サイトコレクションのプレビューと追加追加操作では、既存の許可済みコレクションは保持されます。
変更前に現在のポリシーを確認し、変更後に再度読み取って、実際のアクセスをテストします。最後の許可済みコレクションを削除するか、許可リストを空にすると、そのリストによるサイトへのアクセス制限が解除されます。許可リストによる制限を解除する意図がない限り、空の追加リクエストを送信しないでください。
公開されている Cookbook ユーティリティで現在管理できるのは、許可リストのみです。拒否リストや秘密度ラベルによる除外は管理できません。これらの操作には、前述のワークスペースの管理機能を使用してください。
秘密度ラベルによるファイルの除外
ラベル GUID の確認
対象ラベルの不変の GUID を、Microsoft 365 または Purview の管理者に確認してください。表示名ではなく GUID を使用してください。
管理者は Microsoft Graph でラベルの一覧を取得できます。トークンには、該当する SensitivityLabel.Read または SensitivityLabels.Read.All の権限が必要です。対象ラベルの名前と ID を照合し、保護設定を確認します。
要件と例については、秘密度ラベルの一覧取得と秘密度ラベルのプロパティを参照してください。これらのラベル用権限は、SharePoint URL の解決に使用するサイト読み取り権限とは別のものです。
除外するラベルの追加
SharePoint アプリの安全性とセキュリティの管理を開きます。
秘密度ラベルの除外リストに、除外する各ラベルの GUID を入力します。暗号化を適用するラベルも含めてください。
設定を保存し、除外対象のラベルが付いたサポート対象のファイルでテストします。
指定したラベルに一致するサポート対象のラベルが付いたファイルは、SharePoint アプリの結果から除外されます。暗号化されたファイルの内容は、デフォルトで除外されます。サポート対象の暗号化ファイルへのアクセスには、以下の FAQ で説明するように、高度なファイルアクセス(fetch_advanced)と Microsoft Entra の管理者同意の両方が必要です。ラベルによる除外設定と、接続しているユーザーの Microsoft 権限は引き続き適用されます。
設定のテスト
組織が承認したテスト用ファイルとアカウントを使用してください。テスト前に、テストに使う Microsoft アカウントで、SharePoint 上の各ファイルに直接アクセスできることを確認してください。
リストに項目がある許可されたサイトモードで、許可されたコレクション内のファイルと、リストにないコレクション内のファイルを確認します。アプリ経由でアクセスできるのは、許可されたコレクションのみであることを確認してください。
ブロックされたサイトモードで、ブロックされたコレクション内のファイルと、ブロックされていないコレクション内のファイルを確認します。ブロックされたコレクションは利用できないことを確認してください。ブロックされていないコレクションには、引き続き Microsoft の権限とその他のコントロールが適用されます。
除外対象の秘密度ラベルが付いた、対応形式のテスト用ファイルを確認します。そのファイルがアプリの結果に表示されないことを確認してください。
API で変更した後は、UI に保存されたリストと API が返すポリシーを比較してください。
CSV アップロード後は変更を保存し、コントロールを開き直して、意図したコレクションが保持されていることを確認してください。
結果が意図したポリシーと異なる場合は、ワークスペース、選択したアクセスモード、保存済みリスト、コレクション GUID、ラベル GUID、対応ファイル形式、ユーザーの Microsoft 権限を確認してください。リストを空にするとアクセス範囲が変わります。その変更を意図していない限り、トラブルシューティングの一環としてリストを空にしないでください。
コントロールが見つからない場合や、想定外のアクセスが発生した場合は、OpenAI サポートへのお問い合わせを参照してください。サポートへのお問い合わせに、管理者キーや Microsoft Graph トークンを含めないでください。
制限事項
コレクションのルールは、サイトコレクション全体に適用されます。アクセス範囲を特定のサブサイト、フォルダー、ファイルに限定することはできません。
SharePoint サイトの制限によって、OneDrive へのアクセスが自動的に制限されることはありません。
秘密度ラベルによるフィルタリングは、Microsoft Graph が対応するラベルメタデータを公開している場合にのみ適用されます。対象には、対応する Office ドキュメント、PDF、MP4 ファイルが含まれます。
TXT や CSV など、秘密度ラベルに対応していないファイル形式は、ラベルなしとして扱われます。これらのファイルは、他の条件で許可されていれば引き続きアクセスできます。このファイル形式の制限は、サイトアクセスを設定するための CSV アップロードとは別のものです。
CSV アップロードと公開されているサンプルユーティリティでは、秘密度ラベルによる除外は設定できません。この記事では、ラベルを一括管理する API については説明していません。
ポリシーの保存や API レスポンスの成功だけでは、対象のアカウントを使ったアクセステストの代わりにはなりません。
Python 管理ユーティリティの使用
サンプルコードとコマンドの完全版は、OpenAI Cookbook で管理されています。
Python 3.10 以降を使用してください。このユーティリティは Python 標準ライブラリを使用します。実行前にガイドを読み、ドライランで変更内容を確認してください。
現在のユーティリティは環境変数から認証情報を読み取ります。ガイドに記載された安全な入力手順に従ってください。許可リストを空にするには、明示的な確認が必要です。個別の削除はその確認なしで実行できるため、まずドライランで削除内容を確認してください。
再試行時の動作と任意の冪等性キーについては、ポリシー更新の安全な再試行を参照してください。冪等性キーはワークスペースが対応している場合にのみ使用し、結果が不明確なエラーが発生した場合は、現在のポリシーを確認してください。
このユーティリティは、ワークスペース機能の有効化や、制限が実際に適用されているかの検証は行いません。オフラインテストでは、Microsoft Graph と ChatGPT Admin API の呼び出しをモック化して使用します。
複数のリクエストにまたがる変更には、原子性がありません。複数のコレクションの削除が途中で失敗した場合、それ以前の削除はすでに成功している可能性があります。再試行する前に、現在のポリシーを読み取ってください。
よくある質問
暗号化を適用する秘密度ラベルも除外リストに追加すべきですか?
はい。ChatGPT から除外したいファイルに付いている Microsoft Purview の秘密度ラベルを追加してください。暗号化を適用するラベルも含めてください。
暗号化されたファイルの内容は、デフォルトで除外されます。サポート対象の暗号化ファイルへのアクセスを有効にするには、ワークスペース管理者が高度なファイルアクセス(fetch_advanced)を有効にし、Microsoft Entra の管理者が必要な Microsoft 権限に同意する必要があります。管理者同意を完了せずにアクションを有効にするだけでは不十分です。
設定後も、ChatGPT が暗号化された内容を取得できるのは、接続しているユーザーにそのファイルへのアクセス権限と復号権限がある場合のみです。除外リストに登録されたラベルが付いたファイルは、引き続き除外されます。高度なファイルアクセスの有効化や管理者同意によって、ラベルによる除外設定やユーザーの Microsoft 権限が上書きされることはありません。
サイトの管理機能は Microsoft 権限に代わるものですか?
いいえ。アプリは引き続き、各ユーザーの Microsoft 権限を使用します。OpenAI は、ユーザーとモデルに応答を提示する前に、設定されたサイトフィルタリングを適用します。
許可リストが空の場合、すべてのサイトがブロックされますか?
いいえ。許可リストが空でも、「すべてブロック」を意味するわけではありません。拒否リストに項目がある場合、それらのコレクションは引き続きブロックされます。どちらのリストにも項目がない場合は、ユーザーの Microsoft 権限と、設定済みの他の管理機能によってアクセスが決まります。
管理者 API による変更はログに記録されますか?
管理者 API によるポリシーの変更は、ワークスペースの監査およびコンプライアンスのログ機能で記録されます。
