View a markdown version of this page

设置 Microsoft Entra 应用程序 ID 身份验证 OneDrive - Amazon Bedrock

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

设置 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 身份验证使用应用程序权限。

选择您的配置选项卡,查看要分配的确切权限。

Content only (no ACLs)
仅限内容
API 权限 用途
Microsoft Graph Files.Read.All 读取用户云端硬盘中的文件。
Microsoft Graph Sites.Read.All 阅读支持用户 OneDrive 云端硬盘的网站。
Microsoft Graph User.Read.All 列举您抓取其驱动器的用户。
With ACLs
使用 ACL
API 权限 用途
Microsoft Graph Files.Read.All 读取用户云端硬盘中的文件。
Microsoft Graph Sites.Read.All 阅读支持用户 OneDrive 云端硬盘的网站。
Microsoft Graph User.Read.All 枚举用户并将其解析为文档级 ACL。
Microsoft Graph GroupMember.Read.All 解决文档级 ACL 的群组成员资格问题。
SharePoint Sites.FullControl.All 在查询时验证每个用户对文档的访问权限。 Sites.Read.All不足以进行此项检查。
注意

该 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 中注册应用程序

  1. 登录 Microsoft Entra 管理中心

  2. 在左侧导航栏中,展开 Entra ID,然后选择应用程序注册

  3. 选择 “新注册”。

  4. 在 “名称” 中,输入描述性名称,例如。bedrock-onedrive-connector

  5. 对于支持的帐户类型,请选择 “仅限此组织目录中的帐户(单租户)”。

  6. 将重定向 URI 留空。不需要重定向 URI,因为应用程序使用的是客户端凭证流程,而不是交互式登录流程。

  7. 选择注册

  8. 在应用程序概述页面上,记录应用程序(客户端)ID目录(租户)ID。稍后你需要两个。

第 2 步:添加 API 权限并授予管理员同意

从中为您的配置添加权限权限参考

  1. 在您的应用程序注册中,选择 API 权限,然后选择添加权限

  2. 选择 Microsoft Graph,然后选择应用程序权限。为您的配置搜索并选择每个 Microsoft Graph 权限,然后选择添加权限

  3. 如果您正在启用文档级访问控制,请再次选择 “添加权限”。选择 SharePoint(在 Microsoft API 下),然后选择 “应用程序权限”。选择Sites.FullControl.All,然后选择添加权限

  4. API 权限页面上,选择 [您的组织] 授予管理员同意,然后确认。未经管理员同意,应用程序无法访问 OneDrive 数据。

步骤 3:创建客户端密钥

OneDrive 抓取使用应用程序的客户端 ID 和密钥,因此纯内容源和 ACL-enabled 数据源都需要客户端密钥。启用文档级访问控制后,连接器使用客户端密钥获取用于解析租户 OneDrive 主机的 Microsoft Graph 令牌,并使用证书(来自步骤 4)获取用于访问检查的 SharePoint 令牌。

  1. 在应用程序注册中,选择证书和密钥,然后选择客户端密钥,然后选择新客户机密

  2. 输入描述,选择到期时间,然后选择添加

  3. 立即记录秘密 ——它只显示一次。记录,而不是秘密 ID

步骤 4(仅限 ACL):生成身份验证证书

注意

仅当您启用文档级访问控制时,此步骤以及步骤 5、6 和 8 才适用。要进行仅限内容的抓取,请跳至。第 7 步:创建 Secrets Manager 密钥

生成自签名证书并将其打包为 PKCS #12 (.p12) 捆绑包。该捆绑包包含证书及其受密码保护的私钥。您将公共证书上传到 Entra(步骤 5),将.p12捆绑包上传到 Amazon S3(步骤 6)。选择操作系统的选项卡以查看命令。

注意

Amazon Bedrock 从.p12捆绑包中读取私钥以签署身份验证断言,因此该捆绑包必须有密码保护。随机选择一个强度高的密码——你将其存储在秘密中,如certificatePassword步骤 7 所示。

Linux or macOS (OpenSSL)

生成私钥和自签名证书

openssl req -x509 -newkey rsa:2048 -keyout private_key.pem -out certificate.cer \ -days 365 -nodes \ -subj "/CN=bedrock-onedrive-connector"

Package 将证书和密钥打包为 PKCS #12 (.p12) 捆绑包

出现提示时,请输入强导出密码。为步骤 7 录制下来。

openssl pkcs12 -export -out certificate.p12 \ -inkey private_key.pem -in certificate.cer

您现在有三个文件:私钥 (private_key.pem)、公共证书 (certificate.cer) 和捆绑包 (certificate.p12)。您在步骤 5 中将公共证书上传到 Entra,在步骤 6 中将.p12捆绑包上传到 Amazon S3。

Windows (PowerShell)

生成自签名证书

以下 PowerShell 命令生成有效期为一年 2048 位 RSA 自签名证书,并将其存储在当前用户的证书存储中。your-password替换为一个强的随机密码——你可以将其存储在秘密中,如certificatePassword步骤 7 所示。

$cert = New-SelfSignedCertificate ` -Subject "CN=bedrock-onedrive-connector" ` -CertStoreLocation "Cert:\CurrentUser\My" ` -KeyAlgorithm RSA ` -KeyLength 2048 ` -KeyExportPolicy Exportable ` -NotAfter (Get-Date).AddYears(1)

导出公共证书

Export-Certificate -Cert $cert -FilePath certificate.cer -Type CERT

导出 PKCS #12 (.p12) 捆绑包

$password = ConvertTo-SecureString -String "your-password" -Force -AsPlainText Export-PfxCertificate -Cert $cert -FilePath certificate.p12 -Password $password

您现在有两个文件:公共证书 (certificate.cer) 和捆绑包 (certificate.p12)。您在步骤 5 中将公共证书上传到 Entra,在步骤 6 中将.p12捆绑包上传到 Amazon S3。

重要

.p12捆绑包存储在 Amazon S3 中(不是.pem.cer文件)。该捆绑包包含私钥,Amazon Bedrock 使用该私钥进行身份验证以 SharePoint 进行访问验证,因此请将其安全存放。 Document-level 访问控制需要.p12格式。

注意

默认情况下,该证书的有效期为一年。证书过期会导致所有同步失败,因此请在证书到期之前轮换证书。要更改有效期,请调整-days选项 (openSSL) 或-NotAfter参数 (PowerShell)。有关旋转步骤,请参阅轮换证书

步骤 5(仅限 ACL):将公共证书上传到 Entra

  1. 在应用程序注册中,选择 “证书和机密”,然后选择 “证书” 选项卡。

  2. 选择上传证书,然后选择您在步骤 4 中生成的certificate.cer文件(仅限公共证书,切勿将.p12捆绑包或私钥上传到 Entra)。

  3. 选择添加

第 6 步(仅限 ACL):将证书上传到 Amazon S3

将步骤 4 中的.p12捆绑包上传到知识库所在 AWS 区域的 Amazon S3 存储桶。记录存储桶名称和密钥——您可以将其用作数据源certificateS3Path

aws s3api put-object \ --bucket your-certificate-bucket \ --key certs/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 \ --name bedrock-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 数据源