本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
设置 Microsoft Entra 应用程序 ID 身份验证 OneDrive
Microsoft Entra 应用程序 ID 身份验证 (ENTRA_APP_ID) 是 OneDrive 数据源的推荐身份验证方法。连接器使用应用程序的客户端 ID 和密钥通过 OAuth 2.0 客户端凭证(仅限应用程序)流程抓取内容,不涉及用户登录。这是唯一支持文档级访问控制 (ACL) 的身份验证方法。有关与替代OAUTH2方法的比较,请参见身份验证方法。
注意
只有在启用文档级访问控制时才需要证书。对于仅限内容的抓取,客户端 ID 和密钥是连接器所需的唯一凭据。这与数据源不同,在 SharePoint 数据源中,Microsoft Entra ID App-Only 身份验证始终需要证书。
需要管理权限
此设置需要 Microsoft Entra ID 管理员(全局管理员或特权角色管理员)来注册应用程序、配置权限并授予管理员同意。下面的安装步骤和角色表列出了每个步骤所需的访问权限。
设置步骤和角色
此过程同时涉及 Microsoft Entra ID AWS 管理员和管理员。根据组织中职责的划分方式,可以由一个人或几个人来完成这些步骤。证书步骤(步骤 4—6 和 8)仅在启用文档级访问控制时适用。使用下表确定每个步骤所需的访问权限。
| 步骤 | 你做什么 | 需要访问权限 |
|---|---|---|
| 1. 注册应用程序 | 创建 Entra 应用程序注册并记录其客户端和租户 ID。 | Microsoft Entra ID 管理员(全局管理员或特权角色管理员) |
| 2. 添加权限并授予同意 | 为您的配置分配应用程序权限并授予管理员同意。 | 微软 Entra ID 管理员 |
| 3. 创建客户机密钥 | 为应用程序创建客户端密钥并记录其值。 | 微软 Entra ID 管理员 |
| 4. 生成证书(仅限 ACL) | 使用 OpenSSL 创建自签名证书和 PKCS #12 (.p12) 捆绑包。 |
任何拥有本地终端的人(需要 OpenSSL) |
| 5. 将公共证书上传到 Entra(仅限 ACL) | 将公共证书添加到应用程序注册的密钥中。 | 微软 Entra ID 管理员 |
| 6. 将证书上传到 Amazon S3(仅限 ACL) | 将.p12捆绑包存储在 Amazon S3 存储桶中。 |
AWS 管理员(亚马逊 S3) |
| 7. 创建密钥 | 将凭证存储在 AWS Secrets Manager 密钥中。 | AWS 管理员(Secrets Manager) |
| 8. 授予服务角色对证书的访问权限(仅限 ACL) | 将 Amazon S3 读取权限添加到您的知识库服务角色。 | AWS 管理员 (IAM) |
权限参考
分配与您的配置相匹配的应用程序权限。所有权限均为应用程序权限(非委托),并且每个权限都需要管理员同意。对于仅限内容的抓取,连接器仅向 Microsoft Graph 进行身份验证。启用文档级访问控制后,连接器还会向 SharePointREST API 进行身份验证,以便在查询时验证访问权限,因为 for Business 由 OneDrive 提供支持。 SharePoint
重要
在 Entra 门户中添加这些权限时,请选择应用程序权限选项卡,而不是委派权限。 Application-only 身份验证使用应用程序权限。
选择您的配置选项卡,查看要分配的确切权限。
注意
该 SharePoint Sites.FullControl.All权限授予连接器应用程序在租户中的站点上的广泛访问权限。仅将其授予此应用程序,并相应地保护该应用程序的凭证。
您在设置过程中收集的值
在完成这些步骤时,您可以创建或收集以下值。您可以在创建数据源时使用它们。有关更多信息,请参阅 Connect OneDrive 数据源。
| 值 | 创建于 | 用于 |
|---|---|---|
| 应用程序(客户端)ID | 步骤 1 | 秘密 (clientId)。 |
| 目录(租户)ID | 步骤 1 | 数据源tenantId。 |
| 客户端密钥值 | 步骤 3 | 秘密 (clientSecret)。 |
证书 — PKCS #12 捆绑包 (.p12) 及其密码(仅限 ACL) |
步骤 4 | 捆绑包(证书加私钥)已上传到 Amazon S3(步骤 6);密码存储在密钥中(certificatePassword)。 |
证书-公共证书 (.cer)(仅限 ACL) |
步骤 4 | 同一份证书的公开部分,上传到 Entra 应用程序注册(步骤 5)。 |
| Amazon S3 存储桶名称和密钥(仅限 ACL) | 步骤 6 | 数据源certificateS3Path。 |
| 密钥 ARN | 步骤 7 | 数据源secretArn。 |
第 1 步:在 Microsoft Entra ID 中注册应用程序
-
在左侧导航栏中,展开 Entra ID,然后选择应用程序注册。
-
选择 “新注册”。
-
在 “名称” 中,输入描述性名称,例如。
bedrock-onedrive-connector -
对于支持的帐户类型,请选择 “仅限此组织目录中的帐户(单租户)”。
-
将重定向 URI 留空。不需要重定向 URI,因为应用程序使用的是客户端凭证流程,而不是交互式登录流程。
-
选择注册。
-
在应用程序概述页面上,记录应用程序(客户端)ID 和目录(租户)ID。稍后你需要两个。
第 2 步:添加 API 权限并授予管理员同意
从中为您的配置添加权限权限参考。
-
在您的应用程序注册中,选择 API 权限,然后选择添加权限。
-
选择 Microsoft Graph,然后选择应用程序权限。为您的配置搜索并选择每个 Microsoft Graph 权限,然后选择添加权限。
-
如果您正在启用文档级访问控制,请再次选择 “添加权限”。选择 SharePoint(在 Microsoft API 下),然后选择 “应用程序权限”。选择
Sites.FullControl.All,然后选择添加权限。 -
在 API 权限页面上,选择 [您的组织] 授予管理员同意,然后确认。未经管理员同意,应用程序无法访问 OneDrive 数据。
步骤 3:创建客户端密钥
OneDrive 抓取使用应用程序的客户端 ID 和密钥,因此纯内容源和 ACL-enabled 数据源都需要客户端密钥。启用文档级访问控制后,连接器使用客户端密钥获取用于解析租户 OneDrive 主机的 Microsoft Graph 令牌,并使用证书(来自步骤 4)获取用于访问检查的 SharePoint 令牌。
-
在应用程序注册中,选择证书和密钥,然后选择客户端密钥,然后选择新客户机密。
-
输入描述,选择到期时间,然后选择添加。
-
立即记录秘密值 ——它只显示一次。记录值,而不是秘密 ID。
步骤 4(仅限 ACL):生成身份验证证书
注意
仅当您启用文档级访问控制时,此步骤以及步骤 5、6 和 8 才适用。要进行仅限内容的抓取,请跳至。第 7 步:创建 Secrets Manager 密钥
生成自签名证书并将其打包为 PKCS #12 (.p12) 捆绑包。该捆绑包包含证书及其受密码保护的私钥。您将公共证书上传到 Entra(步骤 5),将.p12捆绑包上传到 Amazon S3(步骤 6)。选择操作系统的选项卡以查看命令。
注意
Amazon Bedrock 从.p12捆绑包中读取私钥以签署身份验证断言,因此该捆绑包必须有密码保护。随机选择一个强度高的密码——你将其存储在秘密中,如certificatePassword步骤 7 所示。
重要
将.p12捆绑包存储在 Amazon S3 中(不是.pem或.cer文件)。该捆绑包包含私钥,Amazon Bedrock 使用该私钥进行身份验证以 SharePoint 进行访问验证,因此请将其安全存放。 Document-level 访问控制需要.p12格式。
注意
默认情况下,该证书的有效期为一年。证书过期会导致所有同步失败,因此请在证书到期之前轮换证书。要更改有效期,请调整-days选项 (openSSL) 或-NotAfter参数 (PowerShell)。有关旋转步骤,请参阅轮换证书。
步骤 5(仅限 ACL):将公共证书上传到 Entra
-
在应用程序注册中,选择 “证书和机密”,然后选择 “证书” 选项卡。
-
选择上传证书,然后选择您在步骤 4 中生成的
certificate.cer文件(仅限公共证书,切勿将.p12捆绑包或私钥上传到 Entra)。 -
选择添加。
第 6 步(仅限 ACL):将证书上传到 Amazon S3
将步骤 4 中的.p12捆绑包上传到知识库所在 AWS 区域的 Amazon S3 存储桶。记录存储桶名称和密钥——您可以将其用作数据源certificateS3Path。
aws s3api put-object \ --bucketyour-certificate-bucket\ --keycerts/certificate.p12\ --body certificate.p12 \ --server-side-encryption AES256
注意
我们建议您在证书对象上启用服务器端加密,并将存储桶限制为需要它的委托人。捆绑包包含私钥。
第 7 步:创建 Secrets Manager 密钥
将凭证存储在 AWS Secrets Manager 密钥中。对于 Microsoft Entra 应用程序 ID 身份验证,请包括以下键值对:
clientId(必填)— 步骤 1 中的应用程序(客户端)ID。clientSecret(必填)— 步骤 3 中的客户机密值。certificatePassword(仅限文档级访问控制,推荐)— 您在步骤 4 中为.p12捆绑包设置的密码。请参阅下面的注释。
仅限内容(无文档级访问控制)
{ "clientId": "your-client-id", "clientSecret": "your-client-secret" }
使用文档级访问控制
{ "clientId": "your-client-id", "clientSecret": "your-client-secret", "certificatePassword": "your-certificate-password" }
使用以下命令创建密钥 AWS Command Line Interface:
aws secretsmanager create-secret \ --namebedrock-onedrive-creds\ --secret-string file://secret.json
记录响应中的秘密 ARN。您可以将其用作数据源secretArn。
注意
启用文档级访问控制后,请设置certificatePassword为在步骤 4 中创建.p12分发包时使用的密码。如果您省略此字段,Amazon Bedrock 将使用您的应用程序的客户端 ID 作为密码打开捆绑包,因此该捆绑包必须使用客户端 ID 作为其密码创建。我们建议您始终设置明确的高熵密码。
步骤 8(仅限 ACL):授予服务角色对证书的访问权限
您的知识库服务角色必须能够从 Amazon S3 读取证书对象。将以下语句添加到角色的权限策略中,将存储桶名称和密钥替换为您的值。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3ListCertificateBucket", "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": ["arn:aws:s3:::your-certificate-bucket"], "Condition": { "StringEquals": { "aws:ResourceAccount": ["123456789012"] } } }, { "Sid": "S3GetCertificate", "Effect": "Allow", "Action": ["s3:GetObject"], "Resource": [ "arn:aws:s3:::your-certificate-bucket/certs/certificate.p12", "arn:aws:s3:::your-certificate-bucket/certs/certificate.p12.metadata.json" ], "Condition": { "StringEquals": { "aws:ResourceAccount": ["123456789012"] } } } ] }
注意
该策略还允许对证书旁边的可选.metadata.json文件进行读取权限。Amazon Bedrock 不需要此文件;包括权限可以防止出现访问错误(如果存在)。
如果证书对象使用 AWS KMS 密钥加密
中的上传命令第 6 步(仅限 ACL):将证书上传到 Amazon S3使用 Amazon S3-managed 加密 (AES256),无需额外权限。相反,如果您使用客户托管的 KMS 密钥 (SSE-KMS) 使用 Amazon S3 服务器端加密对证书对象进行加密,则服务角色还需要对该密钥的kms:Decrypt权限,并且密钥的策略必须允许该角色使用该密钥。使用 AWS 托管aws/s3密钥加密的对象不需要此额外授权。
{ "Sid": "KmsDecryptCertificate", "Effect": "Allow", "Action": ["kms:Decrypt"], "Resource": ["arn:aws:kms:us-west-2:123456789012:key/your-key-id"] }
有关知识库服务角色权限的完整集合,请参阅访问数据来源的权限。
后续步骤
现在,您拥有了创建数据源所需的凭证:秘密 ARN、您的租户 ID 以及(用于文档级访问控制)证书的 Amazon S3 位置。要使用 AWS 管理控制台 或 API 创建 OneDrive 数据源,请参阅Connect OneDrive 数据源。