> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tryprofound.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 権限とセキュリティ

> OAuth スコープ、Profound が Drive でアクセスできるものとできないもの、トークンとファイルの保存・同期・削除の方法について説明します

Profound は、[Knowledge Bases](https://help.tryprofound.com/articles/5775538586-knowledge-bases-overview) と [Agents](https://help.tryprofound.com/articles/9762251986-agents-overview) で Google Drive の接続を使用します。すべてのリクエストは接続したユーザーのトークンで実行され、各リクエストではまず、その接続がリクエスト元ユーザーの組織およびそのユーザー本人に属していることが確認されます。

## 接続モデル

* **各ユーザーが自分の Google アカウントを接続します。** 接続は Google の標準的な [OAuth 同意画面](https://developers.google.com/workspace/guides/configure-oauth-consent)を経由して行われ、接続を開始したユーザー専用となります。Profound の組織内の他のユーザーが同じ接続を使用することはできません。
* **サービスアカウント、ドメイン全体の委任、管理者の同意は不要です。** Profound は[サービスアカウント](https://cloud.google.com/iam/docs/service-account-overview)や[ドメイン全体の委任](https://support.google.com/a/answer/162106)を使用しません。また、ユーザーが接続するために Workspace の管理者が権限を付与する必要もありません。Profound が接続したユーザー以外の ID で Drive にアクセスすることはなく、そのユーザーが開けないものにアクセスすることもできません。
* **アクセス範囲はユーザー自身のアクセス権よりも狭くなります。** Profound は `drive.file` スコープをリクエストするため、読み取れるのは、ユーザーが [Google Picker](https://developers.google.com/workspace/drive/picker/guides/overview) で選択したファイルと、Profound がユーザーに代わって作成したファイルのみです。ユーザーが開けるファイルであっても、それ以外のユーザーの Drive 内のファイルを Profound が一覧表示、検索、読み取りすることはできません。

## OAuth スコープ

<Note>
  Profound の Google Drive インテグレーションは、[制限付き](https://developers.google.com/identity/protocols/oauth2/production-readiness/restricted-scope-verification#understand-restricted-scopes)の Drive スコープを一切リクエストしません。各 Drive スコープに対する Google の分類については、[Google Drive API スコープの選択](https://developers.google.com/workspace/drive/api/guides/api-specific-auth)を参照してください。
</Note>

ユーザーが Google Drive を接続すると、Profound は次のスコープをリクエストします。

| スコープ | [Google の分類](https://developers.google.com/workspace/drive/api/guides/api-specific-auth#drive-scopes) | Profound がリクエストする理由 |
| - | - | - |
| `openid` | 機密性なし | 検証済みの [ID トークン](https://developers.google.com/identity/openid-connect/openid-connect#obtainuserinfo)を返します。これにより、Profound は接続を 1 つの Google アカウントに紐付け、ユーザーが同じアカウントを再接続した場合に重複を作成せずに検出できます。Profound はトークンを使用する前に[トークンを検証](https://developers.google.com/identity/openid-connect/openid-connect#validatinganidtoken)します (署名、オーディエンス、有効期限、発行者)。 |
| `https://www.googleapis.com/auth/userinfo.email` | 機密性なし | 接続したアカウントのメールアドレスを Profound に表示し、Knowledge Base のインポートや Agent の実行でどの Google アカウントが使用されているかを確認できるようにします。詳細は Google の [OAuth 2.0 スコープのドキュメント](https://developers.google.com/identity/protocols/oauth2/scopes)を参照してください。 |
| `https://www.googleapis.com/auth/drive.file` | 機密性なし | ユーザーがブラウザ上の [Google Picker](https://developers.google.com/workspace/drive/picker/guides/overview) で選択したファイルと、Profound が作成したファイルに対して、ファイル単位のアクセス権を付与します。Profound はこのダイアログを制御せず、ユーザーがどのファイルを選択したかのみを把握します。詳細は Google の [Drive API スコープのドキュメント](https://developers.google.com/workspace/drive/api/guides/api-specific-auth#nonsensitive-scopes)を参照してください。 |

## ユーザーフロー

### Knowledge Base のインポート

* [Knowledge Base](https://help.tryprofound.com/articles/5775538586-knowledge-bases-overview) の編集権限を持つユーザーが、Google Picker でファイルを選択します。Profound は、選択された各ファイルの ID、名前、ファイル形式を受け取ります。
* Profound は、選択された各ファイルのメタデータを読み取り、コンテンツをダウンロードします。Google ドキュメントは `.docx`、Google スプレッドシートは `.xlsx`、Google スライドと Google 図形描画は PDF としてエクスポートされます。PDF、Word、Excel、プレーンテキスト、Markdown、CSV ファイルはそのままダウンロードされます。100 MB を超えるファイルはインポートされません。
* Profound は、選択されたファイルの親フォルダ名を解決し、Knowledge Base 内でフォルダ構造を再現します。

Google Picker を開くために、Profound の Web アプリは Profound のバックエンドから接続済みアカウントのアクセストークンをリクエストし、ユーザーのブラウザ上で Google の [Picker ライブラリ](https://developers.google.com/workspace/drive/picker/guides/overview)に渡します。トークンを含むレスポンスには `Cache-Control: no-store` が指定されています。

#### 自動同期

インポートした Google Drive フォルダに対してユーザーが[自動同期](https://help.tryprofound.com/articles/5775538586-knowledge-bases-overview#content-auto-sync)を有効にすると、Profound は Google の [Changes API](https://developers.google.com/workspace/drive/api/guides/manage-changes) を使用して、選択された頻度で変更を確認します。各実行時に Profound は次の処理を行います。

* コンテンツが変更されたインポート済みファイルを再ダウンロードし、コンテンツに変更のないファイルはスキップします
* Drive から削除されたファイル、または Profound がアクセスやダウンロードできなくなったファイルについて、Knowledge Base 内のコピーを削除します

Profound はこれらの処理を、自動同期を有効にしたユーザーとして、そのユーザーの接続を使用して実行します。自動同期で追跡されるのはインポートされたファイルのみです。ユーザーが選択していないファイルを参照することはできません。

### Agent ノード

[Agents](https://help.tryprofound.com/articles/9762251986-agents-overview) の Google Docs、Google Sheets、Google Slides ノードは、同じ Google Drive 接続と同じ `drive.file` の許可を使用します。読み取りノードは、ユーザーが選択したファイルのみを読み取ります。作成ノードと書き込みノード (例: Google ドキュメントの作成や Google スプレッドシートへの行の書き込み) は、接続したユーザーの Drive に新しいファイルを作成するか、ユーザーが選択したファイルを変更します。

ファイル名でファイルを受け付けるノードは、`drive.file` の許可の対象となるファイルの中でのみ検索し、名前が複数のファイルに一致する場合はファイル ID または URL の入力を求めます。

## Profound が Drive API で実行する操作

| 操作 | Drive API | 用途 |
| - | - | - |
| 名前でファイルを検索 (必要に応じて形式でフィルタ) | [`files.list`](https://developers.google.com/workspace/drive/api/reference/rest/v3/files/list) | Agent ノード設定でのファイル選択、ファイル名の解決 |
| ファイルのメタデータを個別またはバッチで読み取る | [`files.get`](https://developers.google.com/workspace/drive/api/reference/rest/v3/files/get) | インポート、同期、フォルダパスの再構築 |
| フォルダの子要素を一覧表示する | [`files.list`](https://developers.google.com/workspace/drive/api/reference/rest/v3/files/list) | Profound の Drive サービスで利用可能。現在、Knowledge Bases や Agent ノードでは使用されていません |
| ファイルのコンテンツをダウンロードまたはエクスポートする | [`files.get`](https://developers.google.com/workspace/drive/api/reference/rest/v3/files/get) (media)、[`files.export`](https://developers.google.com/workspace/drive/api/reference/rest/v3/files/export)、エクスポートリンク | インポート、同期、読み取りノード |
| 前回の同期以降の変更を一覧表示する | [`changes.getStartPageToken`](https://developers.google.com/workspace/drive/api/reference/rest/v3/changes/getStartPageToken)、[`changes.list`](https://developers.google.com/workspace/drive/api/reference/rest/v3/changes/list) | 自動同期 |

Google Drive 接続が実行する Drive API の操作は、これらのみです。Drive への書き込みは、Google Docs と Google Sheets の Agent ノードを通じてのみ行われます。

## インポートしたコンテンツの保存場所

Profound が保存するのは、ユーザーが Knowledge Base にインポートしたファイルのみです。Agent の読み取りノードも、読み取るファイルのコンテンツをダウンロードしますが、それはその実行のためだけです。コンテンツはノードの出力となり、Profound は他のすべてのノードの出力と同様に、Agent の実行履歴に保持します。インポートされた各ファイルについて、Profound は次のものを保存します。

* ファイルのコンテンツ: Profound の AWS アカウント内で論理的に分離された Amazon S3 バケットに保存
* 解析済みのテキスト: 同じ S3 バケットに保存。また、Knowledge Base の検索で見つけられるよう、その検索用埋め込みをマネージドのベクトル検索サービスに保存
* ファイルの名前、パス、サイズ、形式、ソースリンク、コンテンツハッシュ: Profound のデータベースに保存

Profound は、インポートしたコンテンツを、[Knowledge Base](https://help.tryprofound.com/articles/5775538586-knowledge-bases-overview) の検索、[Agents](https://help.tryprofound.com/articles/9762251986-agents-overview)、[FactCheck](https://help.tryprofound.com/articles/5793584301-about-factcheck) など、ユーザーが利用する機能の情報源としてのみ使用します。Profound がお客様のファイルをモデルのトレーニングに使用することはありません。

## 削除と保持

Profound は、次のいずれかが発生するまで、インポートしたコンテンツを保持します。

* ユーザーが Profound でドキュメント、フォルダ、または Knowledge Base を削除した
* 自動同期によって、ファイルが Drive から削除された、またはアクセスできなくなったことが検出された

ドキュメントを削除すると、保存されたファイル、その解析済みテキスト、検索用埋め込みが削除されます。Google Drive の接続を取り消しても、すでにインポートされたファイルは削除されません。削除が必要な場合は、Knowledge Base から削除してください。

## トークンの保存と取り扱い

* **暗号化:** Profound は、顧客データ専用の [AWS Key Management Service (KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) キーを使用して OAuth のアクセストークンとリフレッシュトークンをエンベロープ暗号化し、暗号文を Amazon DynamoDB に保存します。暗号化コンテキストにより各レコードは 1 つの組織、1 つのプロバイダー、1 人のユーザーに紐付けられるため、別の組織やユーザーの ID でレコードを復号することはできません。Profound のメインデータベースには、暗号化されたレコードへの参照のみが保持され、トークン自体が保持されることはありません。
* **スコープ設定:** 認証情報の読み取りのたびに、その接続がリクエスト元ユーザーの組織に属していること、また Google Drive のような個人用の接続の場合はリクエスト元ユーザー本人に属していることが確認されます。Profound は、すべての認証情報の読み取りを、インテグレーション、リクエスト元のエンドポイント、読み取りの対象となったユーザー、タイムスタンプとともに内部の監査テーブルに記録します。この記録はプラットフォーム上には表示されません。
* **更新:** Profound は Google に[オフラインアクセス](https://developers.google.com/identity/protocols/oauth2/web-server#offline)をリクエストするため、リフレッシュトークンを受け取り、ユーザーに再度サインインを求めることなく Knowledge Base の自動同期を継続できます。アクセストークンの有効期限が切れると、Profound のバックエンドがリフレッシュトークンを新しいアクセストークンと交換します。複数のリクエストが同時にトークンを必要とする場合、Google に問い合わせるのはそのうち 1 つのみです。他のリクエストはその更新の完了を待ち、結果を再利用します。
* **アカウントについて保存される情報:** Profound は、Google アカウントのメールアドレスとサブジェクト識別子 ([ID トークンのペイロード](https://developers.google.com/identity/openid-connect/openid-connect#an-id-tokens-payload)内の `sub` キー) を接続とともに保存します。サブジェクト識別子は、アカウントのメールアドレスが変わっても変化しないため、Profound はこれを使用して、ユーザーが同じアカウントを再接続したことを認識します。

## アクセス権の取り消し

ユーザーは、Profound の **Settings** > **Integrations** > **Google Drive** で、接続済みアカウントの **...** アクションメニューから **Revoke** を選択して接続を取り消します。ユーザーが取り消すと、次のようになります。

* Profound は暗号化されたトークンのレコードを削除し、接続を取り消し済みとしてマークします。この削除は元に戻せません。
* これが組織内でそのアカウントに残っている最後の Google 接続である場合、Profound はアクセストークンとリフレッシュトークンについて、Google の[トークン取り消しエンドポイント](https://developers.google.com/identity/protocols/oauth2/web-server#tokenrevoke)も呼び出します。それ以外の場合は、以下で説明するように、この呼び出しを保留します。
* その接続を使用している Knowledge Base の自動同期と Agent ノードは、ユーザーが再接続するまで動作しなくなります。

Google Drive、Gmail、Google Search Console、Google Ads の各インテグレーションは、同じ OAuth クライアントで Google に対して自身を識別します (Google Analytics は別のクライアントを使用します)。Google は、ある Google アカウントがそのクライアントに付与したすべての権限を 1 つの許可として扱い、いずれかのトークンを取り消すと、Google がそのアカウントに対して Profound 向けに発行したすべてのトークンが無効になります。このため、1 つの接続を取り消すと Profound に保存されているそのトークンは直ちに削除されますが、Profound が Google に許可の取り消しを依頼するのは、そのアカウントに残っている最後の接続が取り消されたときのみです。他の Google アカウントで作成された接続は影響を受けません。

<Note>
  ユーザーは、Google アカウントの[サードパーティアクセスのページ](https://support.google.com/accounts/answer/13533235)から Profound のアクセス権を取り消すこともできます。その場合、Profound に保存されているリフレッシュトークンは機能しなくなり、ユーザーはインテグレーションを再び使用する前に、Profound でアカウントを再接続する必要があります。
</Note>

## Google Workspace 管理者向けの制御

* **アプリとして Profound を許可またはブロックする。** Google の「[Google Workspace のデータにアクセスできるサードパーティ製アプリと社内アプリを管理する](https://knowledge.workspace.google.com/admin/apps/control-which-apps-access-google-workspace-data)」に記載されている方法で、Profound のアクセスを管理します。この設定には Profound の OAuth クライアント ID が必要になる場合があります。Profound のアカウントチームが提供できます。
* **Google Drive インテグレーションには「制限付きアクセス」で十分です。** Google の[制限付きアクセス](https://knowledge.workspace.google.com/admin/apps/control-which-apps-access-google-workspace-data#trustorlimit)の設定では、アプリは[制限のないスコープ](https://developers.google.com/workspace/drive/api/guides/api-specific-auth#nonsensitive-scopes)のみを使用できます。`drive.file`、`openid`、`userinfo.email` はいずれも制限のないスコープであるため、Google Drive インテグレーションは **Limited** の設定でも動作します。
* **1 つのクライアントで Profound の Google インテグレーションをカバーします。** Profound の Google Drive、Gmail、Google Search Console、Google Ads の各インテグレーションは 1 つの OAuth クライアントを共有しているため (Google Analytics は独自のクライアントを使用)、許可リストやブロックはそれらすべてに適用されます。
