

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ドキュメントレベルのアクセスコントロール
<a name="kb-managed-ds-onedrive-acl"></a>

OneDrive データソースは、オプションでドキュメントレベルのアクセスコントロールをサポートします。有効にすると、Bedrock Managed Knowledge Base はクロールのたびに OneDrive のアクセスコントロールリスト (ACLs) を同期し、クエリ時に各ユーザーのアクセス許可を検証するため、ユーザーは OneDrive でアクセスが許可されているドキュメントの結果のみを表示できます。すべてのコネクタにおける ACL 対応の概要については、「」を参照してください[アクセスコントロールリストの認識の有効化](kb-managed-acl.md)。

**ACL 対応は認可ではありません**  
Bedrock マネージドナレッジベースは、セキュリティ境界ではなく、ACL 対応のフィルタリングを提供します。Bedrock Managed Knowledge Base はエンドユーザーを認証しません。アプリケーションはユーザーを認証し、検証済みの ID コンテキストを渡す責任があります。Bedrock Managed Knowledge Base は、指定したユーザーコンテキストの信頼性を検証できません。したがって、この機能は指定した ID に基づいて結果をフィルタリングしますが、真の認可を構成するものではありません。アップストリーム認証なしでは、この機能を唯一のアクセスコントロールメカニズムとして使用しないでください。

## 仕組み
<a name="kb-managed-ds-onedrive-acl-how"></a>

ユーザーが ACL 対応の OneDrive データソースを使用するナレッジベースにクエリを実行すると、Bedrock マネージドナレッジベースは 2 つの段階でアクセスコントロールを適用します。
+ **取得前フィルタリング** — Bedrock Managed Knowledge Base は、前回のクロール中に OneDrive から同期されたアクセスコントロールリストを適用し、ユーザー (またはそのグループ) がアクセスできる候補ドキュメントのみを返します。
+ **リアルタイム検証** — Bedrock マネージドナレッジベースは、OneDrive でのクエリユーザーの現在のアクセスを確認して、候補ドキュメントをリアルタイムで検証します。現在アクセスが許可されているドキュメントのみがレスポンスに含まれます。

この 2 段階のアプローチは、OneDrive のアクセス許可が同期間で変化しても最新の状態を維持するドキュメントレベルのアクセスコントロールを提供します。

## クロールされる内容
<a name="kb-managed-ds-onedrive-acl-crawl"></a>

ACLs を有効にすると、Bedrock Managed Knowledge Base は OneDrive からファイルレベルの共有アクセス許可とセキュリティグループの割り当てをクロールします。ネストされた (推移的な) グループメンバーシップも解決されます。

クエリ時に、ユーザーの E メールアドレス (グループではない) を渡します。Bedrock Managed Knowledge Base は、クロールしたデータからユーザーのグループメンバーシップを解決し、結果をフィルタリングするときに適用します。ID モデルの詳細については、「」を参照してください[アクセスコントロールリストの認識の有効化](kb-managed-acl.md)。

## ACL 対応のための前提条件
<a name="kb-managed-ds-onedrive-acl-prereqs"></a>

ACL 対応 OneDrive は 2 つの異なる Microsoft APIs を使用します。それぞれに Microsoft Entra アプリケーションに独自のアプリケーションアクセス許可が設定されています。クロールは Microsoft Graph API を使用し、リアルタイム検証は SharePoint REST API を使用します (OneDrive for Business は SharePoint によってサポートされています）。ACL 対応を有効にする前に、管理者の同意を得て両方の APIs のアクセス許可を設定します。
+ `User.Read.All` Microsoft Graph `GroupMember.Read.All`の および (ID クロール用）。
+ `Sites.FullControl.All` SharePoint (ドキュメントアクセス検証用) 上の 。 `Sites.Read.All` では不十分です。読み取り専用アクセスでは、リアルタイム検証に必要な有効なアクセス許可チェックを実行できません。

**重要**  
クロールは Microsoft Graph API を使用し、リアルタイム検証は SharePoint REST API を使用します。これは、アプリケーションアクセス許可が異なるさまざまなリソースです。Microsoft Graph のアイデンティティクロールアクセス許可は必要ですが、十分ではありません。リアルタイム検証には、管理者の同意を得た SharePoint アクセス`Sites.FullControl.All`許可も必要です。Microsoft Graph のアクセス許可のみを付与することは、ACL が有効な OneDrive データソースが、ユーザーがアクセス権を持っていても結果を返さない最も一般的な原因です。

証明書を含む完全なセットアップ手順については、「」を参照してください[OneDrive の Microsoft Entra App ID 認証を設定する](kb-managed-onedrive-entra-setup.md)。

## ACL 対応を有効にする
<a name="kb-managed-ds-onedrive-acl-enable"></a>

OneDrive データソースの ACL 対応を有効にするには、 `true` で `ENTRA_APP_ID` `aclEnabled`を に設定`connectorParameters`し、認証タイプを使用します。この認証タイプは、Bedrock Managed Knowledge Base が ID 情報をクロールし、クエリ時にドキュメントアクセスを検証できるようにするアプリケーションアクセス許可を使用します。

**重要**  
ACL 設定は永続的です。ACLs サポートなしで作成されたデータソースで ACL を有効にすることはできません。また、一度有効にすると ACLs を無効にすることはできません。

OneDrive で ACLsは、Amazon S3 `certificateS3Path`の PKCS\#12 (`.p12`) 証明書ファイル`connectionConfiguration`を指す に を含める必要があります。この証明書は、SharePoint REST API に対するリアルタイムの ACL 検証に使用されます。ACLsになっている場合、 `certificateS3Path`は必要ありません。

```
"connectorParameters": {
    "type": "ONEDRIVE",
    "version": "1",
    "aclEnabled": true,
    "connectionConfiguration": {
        "tenantId": "{{your-tenant-id}}",
        "authType": "ENTRA_APP_ID",
        "secretArn": "{{arn:aws:secretsmanager:region:account-id:secret:secret-name}}",
        "certificateS3Path": {
            "s3BucketName": "{{your-certificate-bucket}}",
            "s3KeyName": "{{certs/certificate.p12}}"
        }
    },
    "dataEntityConfiguration": {
        "crawlPersonalDrives": true
    }
}
```

**注記**  
シークレットの `certificatePassword`フィールドはオプションです。これを省略すると、Bedrock Managed Knowledge Base はアプリケーションのクライアント ID をパスワードとして使用して PKCS\#12 (`.p12`) ファイルを開くため、証明書はそのパスワードで作成されている必要があります。保管中の証明書のプライベートキー`certificatePassword`を保護するために、常に明示的な高エントロピーを設定することをお勧めします。

**注記**  
`OAUTH2` 認証タイプは、ACL 対応の OneDrive データソースではサポートされていません。`ENTRA_APP_ID` を使用する必要があります。

## リアルタイムアクセス検証
<a name="kb-managed-ds-onedrive-acl-realtime"></a>

Bedrock Managed Knowledge Base は、アプリケーション認証情報を使用して、各候補ドキュメントをサーバー側全体でリアルタイムで検証します。エンドユーザーのサインインや委任された同意はありません。OneDrive for Business は SharePoint によってバックアップされているため、Bedrock マネージドナレッジベースは、テナントの OneDrive ホストの SharePoint REST API に対してクエリユーザーの有効なアクセス許可をチェックします。

OneDrive のリアルタイム検証では、2 つの認証情報モデルが使用され、両方の認証情報が必要です。
+  AWS Secrets Manager シークレット内のクライアント ID とクライアントシークレットは、テナントの OneDrive ホスト (`-my.sharepoint.com`ホスト) の解決に使用される Microsoft Graph トークンをミントします。
+ の証明書は、アクセス許可チェック自体に使用される SharePoint REST トークンを`certificateS3Path`ミントします。証明書は、リアルタイム検証の信頼できる認証情報です。クライアントシークレットトークンだけではチェックを実行できません。

**重要**  
アプリケーションは管理者の同意を得て SharePoint アクセス`Sites.FullControl.All`許可を保持する必要があります。有効なアクセス許可チェックには管理/フルコントロール権限が必要なため、 では不十分`Sites.Read.All`です。正しいアクセス許可がないと、リアルタイム検証は有効なアクセス許可を評価できず、クローズに失敗し、ユーザーがアクセスでき、クロールと取得前のフィルタリングが成功した場合でも、すべてのクエリのすべてのドキュメントを拒否します。[「ACL 対応のための前提条件](#kb-managed-ds-onedrive-acl-prereqs)」を参照してください。

**注記**  
SharePoint アプリケーションのアクセス許可を付与または同意した後、アプリケーションアクセス認証情報がキャッシュされるため、変更前にチェックされたユーザーが変更を有効にするまでに最大 1 時間かかります。変更をより早く確認するには、まだクエリされていない別のユーザーでテストします。

## 設定を確認する
<a name="kb-managed-ds-onedrive-acl-verify"></a>

Entra アプリケーションのアクセス許可は、取得リクエストとは無関係に検証できます。次の各チェックを実行します。

1. **Microsoft Graph (クロール)**:
   + スコープ でアプリケーショントークンを取得します`https://graph.microsoft.com/.default`。
   + トークンをデコードし、`roles`クレームに必要な Microsoft Graph アクセス許可 (`User.Read.All`、`GroupMember.Read.All`、および ) が含まれていることを確認します`Files.Read.All`。
   + を呼び出し`GET https://graph.microsoft.com/v1.0/users/{user}/drive/root/children`て、ユーザーのドライブ項目が一覧表示されていることを確認します。

1. **SharePoint REST (リアルタイム検証)**:
   + スコープ の証明書クライアントアサーションを使用してトークンを取得します`https://{tenant}-my.sharepoint.com/.default`。
   + トークンの`roles`クレームに SharePoint アクセス`Sites.FullControl.All`許可が含まれていることを確認します。`roles: null` 値は、アクセス許可または管理者の同意がないことを意味します。
   + を呼び出し`GET https://{tenant}-my.sharepoint.com/_api/web`て成功することを確認します (HTTP 200)。失敗または不正な応答は、SharePoint アクセス許可または管理者の同意が欠落していることを意味します。これにより、すべてのドキュメントが拒否されます。

**注記**  
アクセス許可を修正した後、SharePoint 呼び出しはトークンレベルですぐに成功しますが、テスト済みのユーザーのend-to-endの取得は、[リアルタイムアクセス検証](#kb-managed-ds-onedrive-acl-realtime)で説明されているキャッシュ TTL によって遅延する可能性があります。キャッシュされたユーザーに基づいて修正が失敗したと結論付けないでください。

## トラブルシューティング
<a name="kb-managed-ds-onedrive-acl-troubleshooting"></a>

**注記**  
ACL の設定ミスは、取得中に明示的なエラーを生成しません。取得が失敗して閉じられる: 影響を受けるドキュメントはサイレントに省略されるため、クエリはエラーではなく少数またはゼロの結果を返します。上記の検証チェックを使用して、これらの問題を診断します。


**ACL 対応の OneDrive の症状、原因、修正**  

| 症状 | 考えられる原因 | Fix | 
| --- | --- | --- | 
| 取得は 0 の結果を返しますが、ユーザーは OneDrive にアクセスできます。 | Microsoft Graph のアクセス許可は存在しますが、SharePoint アプリケーションのアクセス許可または管理者の同意がないため、SharePoint REST 呼び出しは拒否され、すべてのドキュメントが拒否されます。 | 管理者の同意を得て SharePoint アクセスSites.FullControl.All許可を付与します。これらのアプリケーション認証情報はキャッシュされるため、変更が有効になるまで最大 1 時間かかります。または、not-yet-queriedユーザーでテストして、より早く確認します。 | 
| ユーザーのアクセスは OneDrive で変更されましたが、新しい結果はすぐには反映されません。 | ユーザーごとのアクセス結果は、データソースと Bedrock Managed Knowledge Base の間で結果整合性が保たれるため (通常は約 2 分以内）、最近のアクセス変更がすぐに反映されない場合があります。 | データソースに変更が反映されたら、約 2 分待ってから再試行してください。 | 
| すべてのユーザーは、以前に作業した後に拒否されます。 | 証明書の有効期限が切れているか、管理者の同意が取り消されました。 | Entra アプリ登録と Amazon S3 で証明書を更新し、管理者の同意を再付与します。 | 
| 設定が正しいように見えても、クロールまたは同期は失敗します。 | 必要な Microsoft Graph アプリケーションのアクセス許可がありません。 | Files.Read.All、Sites.Read.All、User.Read.All、および を付与しますGroupMember.Read.All。 | 
| 証明書パスワードまたはトークンマイニングエラー。 | .p12 パスワードが と一致しませんcertificatePassword。 | .p12 ファイルの作成に使用するパスワードcertificatePasswordに を設定します。 | 