

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

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

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

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

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

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

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

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

ACLsを有効にすると、Bedrock Managed Knowledge Base は SharePoint から次のアクセス許可構造をクロールします。
+ サイトレベルのメンバーシップとロールの割り当て
+ ドキュメントライブラリレベルのアクセス許可
+ 継承を破る一意のアクセス許可を含む、項目レベルの (ファイルとページ) アクセス許可
+ Microsoft Entra ID (Azure AD) セキュリティグループ、メール対応セキュリティグループ、ディストリビューショングループなどのセキュリティグループメンバーシップ。ネストされた (推移的な) グループメンバーシップも解決されます。

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

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

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

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

Entra ID アプリの登録には、次のアプリケーションアクセス許可が必要です。
+ `User.Read.All` Microsoft Graph `GroupMember.Read.All`の および (ID クロール用)
+ `Sites.FullControl.All` SharePoint の場合、またはサイトごとのアクセス許可が付与`Sites.Selected`されている場合 (ドキュメントアクセス検証の場合)

には、Amazon S3 の PKCS\#12 (.p12) 証明書ファイル`certificateS3Path`を指す が含まれている`connectionConfiguration`必要があります。

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

```
"connectorParameters": {
    "type": "SHAREPOINT",
    "version": "1",
    "aclEnabled": true,
    "connectionConfiguration": {
        "tenantId": "{{your-tenant-id}}",
        "authType": "ENTRA_ID_APP_ONLY",
        "secretArn": "{{arn:aws:secretsmanager:region:account-id:secret:secret-name}}",
        "certificateS3Path": {
            "s3BucketName": "{{your-certificate-bucket}}",
            "s3KeyName": "{{certs/certificate.p12}}"
        }
    },
    "dataEntityConfiguration": {
        "siteUrls": [
            "{{https://contoso.sharepoint.com/sites/engineering}}"
        ],
        "crawlFiles": true,
        "crawlPages": true
    }
}
```

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

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

Bedrock Managed Knowledge Base は、アプリケーションの証明書ベースのアクセス許可 (クロール用に設定された`ENTRA_ID_APP_ONLY`アプリ登録) を使用して、クエリ時に各候補ドキュメントを SharePoint と照合します。委任ユーザーサインインフローとは異なり、ユーザーごとのインタラクティブなサインインや同意は必要ありません。検証では、 `Sites.FullControl.All` または アクセス`Sites.Selected`許可を通じて同じアプリ登録と証明書を使用して、クエリを実行するユーザーが引き続き各ドキュメントにアクセスできることを確認します。

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

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

1. **Microsoft Graph (クロール)**:
   + スコープでアプリケーショントークンを取得し`https://graph.microsoft.com/.default`、`roles`クレームに `User.Read.All`と が含まれていることを確認します`GroupMember.Read.All`。
   + Microsoft Graph サイトエンドポイント ( など`GET https://graph.microsoft.com/v1.0/sites/{site}`) を呼び出し、サイトが返されることを確認します。

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

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

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


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

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