View a markdown version of this page

設定 SharePoint 的 Microsoft Entra ID 僅限應用程式身分驗證 - Amazon Bedrock

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

設定 SharePoint 的 Microsoft Entra ID 僅限應用程式身分驗證

Microsoft Entra ID 僅限應用程式身分驗證 (ENTRA_ID_APP_ONLY) 是 SharePoint 資料來源的建議身分驗證方法。它使用 OAuth 2.0 client-credentials (僅限應用程式) 流程:Microsoft Entra 應用程式使用憑證進行驗證,因此在網路爬取時間或查詢時間不會涉及使用者登入。這是唯一支援文件層級存取控制 (ACLs身分驗證方法。如需與替代OAUTH2_APP方法的比較,請參閱 身分驗證方法

此設定跨越兩個系統:Microsoft Entra ID 和 AWS 您的帳戶,而憑證是將這些系統連結在一起的憑證。連接器會將憑證 (包含私有金鑰) 儲存為 Amazon S3 中的 PKCS#12 (.p12) 檔案,並使用它來簽署身分驗證聲明給 Microsoft;相符的公有憑證會上傳至 Entra 應用程式註冊,以便 Microsoft 驗證這些聲明。

需要管理存取權

此設定需要 Microsoft Entra ID 管理員 (全球管理員或特殊權限角色管理員) 來註冊應用程式、設定許可,以及授予管理員同意。如果您使用Sites.Selected許可範圍,您也需要 SharePoint 管理員來授予每個站台的存取權。下面的設定步驟和角色資料表會識別每個步驟所需的存取權。

設定步驟和角色

此程序同時涉及 Microsoft Entra ID 管理員和 AWS 管理員。視責任在組織中的分配方式而定,可能會有一個人或多人完成這些步驟。使用下表來識別每個步驟所需的存取權。

設定步驟和每個步驟都需要的存取權
步驟 您執行的動作 需要存取
1. 註冊應用程式 建立 Entra 應用程式註冊並記錄其用戶端和租用戶 IDs。 Microsoft Entra ID 管理員 (全球管理員或特殊權限角色管理員)
2. 新增許可並授予同意 為您的組態指派應用程式許可,並授予管理員同意。 Microsoft Entra ID 管理員
3. 產生憑證 使用 OpenSSL 建立自我簽署憑證和 PKCS#12 (.p12) 套件。 具有本機終端機的任何人 (需要 OpenSSL)
4. 將公有憑證上傳至 Entra 將公有憑證新增至應用程式註冊的金鑰。 Microsoft Entra ID 管理員
5. 授予每個站台存取權 (Sites.Selected僅限 ) 透過 Microsoft Graph API 授予應用程式存取每個 SharePoint 網站的權限。 Microsoft Entra ID 管理員
6. 將憑證上傳至 Amazon S3 .p12套件存放在 Amazon S3 儲存貯體中。 AWS 管理員 (Amazon S3)
7. 建立秘密 將登入資料存放在 AWS Secrets Manager 秘密中。 AWS 管理員 (Secrets Manager)
8. 授予服務角色對憑證的存取權 將 Amazon S3 讀取許可新增至您的知識庫服務角色。 AWS 管理員 (IAM)

選擇您的組態

開始之前,請做出兩個決策。它們決定您在步驟 2 中指派的許可,以及如何授予網站存取權。

  • 文件層級存取控制 (ACLs) — 決定資料來源是否依每個使用者的 SharePoint 許可篩選查詢結果。ACL 爬取需要額外的 Microsoft Graph 和 SharePoint 許可。您無法在建立資料來源後變更此設定。如需詳細資訊,請參閱文件層級存取控制

  • 許可範圍 — 決定應用程式是否可以讀取租用戶中的所有 SharePoint 網站 (所有網站,最簡單的選項) 或僅您明確授予的網站 (Sites.Selected最低權限選項)。透過Sites.Selected您在步驟 5 中完成每個網站的額外授予,之後新增的任何網站都需要自己的授予。

這兩個選項的組合會在下一節中選取其中一個許可集。

許可參考

指派符合您組態的應用程式許可。所有許可都是應用程式許可 (未委派),而且每個許可都需要管理員同意。連接器會驗證兩個 Microsoft 資源:Microsoft Graph (列舉網站,以及針對 ACLs 解析使用者和群組) 和 SharePoint REST API (讀取網站內容,以及針對 ACLs 的項目層級許可)。

重要

當您在 Entra 入口網站中新增這些許可時,請選擇應用程式許可索引標籤,而非委派許可。僅應用程式身分驗證使用應用程式許可。

選取組態的索引標籤,以查看要指派的確切 Microsoft Graph 和 SharePoint 許可。

All sites, no ACLs
所有網站,僅限內容
API 權限 用途
Microsoft Graph Sites.Read.All 列舉和讀取所有 SharePoint 網站。
SharePoint Sites.Read.All 透過 SharePoint REST API 讀取網站內容。
All sites, with ACLs
具有 ACLs 的所有網站
API 權限 用途
Microsoft Graph Sites.Read.All 列舉和讀取所有 SharePoint 網站。
Microsoft Graph User.Read.All 解決文件層級 ACLs的使用者。
Microsoft Graph GroupMember.Read.All 解決文件層級 ACLs群組成員資格。
SharePoint Sites.FullControl.All 讀取 ACL 爬取的項目層級許可,並在查詢時驗證存取權。 Sites.Read.All 不足以進行此檢查。
Sites.Selected, no ACLs
Sites.Selected,僅限內容
API 權限 用途
Microsoft Graph Sites.Selected 僅存取您明確授予的網站 (Microsoft Graph)。
SharePoint Sites.Selected 僅存取您明確授予的網站 (SharePoint REST)。在步驟 5 中授予每個站台read的角色。
Sites.Selected, with ACLs
Sites.Selected,具有 ACLs
API 權限 用途
Microsoft Graph Sites.Selected 僅存取您明確授予的網站 (Microsoft Graph)。
Microsoft Graph User.Read.All 解決文件層級 ACLs的使用者。
Microsoft Graph GroupMember.Read.All 解決文件層級 ACLs群組成員資格。
SharePoint Sites.Selected 僅存取您明確授予的網站。在步驟 5 中授予每個站台fullcontrol的角色 (讀取 ACLs的項目層級許可時需要)。
注意

Sites.FullControl.All 授予租用戶中每個網站的廣泛存取權。如果您的組織需要最低權限,請在步驟 5 中使用Sites.Selected並授予每個站台的存取權。

您在設定期間收集的值

您在執行這些步驟時建立或收集下列值。您可以在建立資料來源時使用它們。如需詳細資訊,請參閱連接 SharePoint 資料來源

值參考
Value 在 中建立 用於
應用程式 (用戶端) ID 步驟 1 秘密 (clientId)。
目錄 (租戶) ID 步驟 1 資料來源 tenantId
憑證 — PKCS#12 套件 (.p12) 及其密碼 步驟 3 套件 (憑證加上私有金鑰) 會上傳至 Amazon S3 (步驟 6);密碼會存放在秘密中 (certificatePassword)。
憑證 — 公有憑證 (.cer) 步驟 3 相同憑證的公有一半,上傳至 Entra 應用程式註冊 (步驟 4)。
Amazon S3 儲存貯體名稱和金鑰 步驟 6 資料來源 certificateS3Path
秘密 ARN 步驟 7 資料來源 secretArn

步驟 1:在 Microsoft Entra ID 中註冊應用程式

  1. 登入 Microsoft Entra 管理中心

  2. 在左側導覽中,展開 Entra ID,然後選擇應用程式註冊

  3. 選擇新增註冊

  4. 針對名稱,輸入描述性名稱,例如 bedrock-sharepoint-connector

  5. 對於支援的 帳戶類型僅選取此組織目錄中的帳戶 (單一租戶)

  6. 重新導向 URI 保留空白。不需要重新導向 URI,因為應用程式使用用戶端憑證流程,而不是互動式登入流程。

  7. 選擇註冊

  8. 在應用程式概觀頁面上,記錄應用程式 (用戶端) ID目錄 (租戶) ID。您稍後需要兩者。

步驟 2:新增 API 許可並授予管理員同意

從 新增組態的許可許可參考

  1. 在您的應用程式註冊中,選擇 API 許可,然後選擇新增許可

  2. 選擇 Microsoft Graph,然後選擇應用程式許可。搜尋並選取組態的每個 Microsoft Graph 許可,然後選擇新增許可

  3. 再次選擇新增許可。選擇 SharePoint (在 Microsoft APIs下),然後選擇應用程式許可。為您的組態選取每個 SharePoint 許可,然後選擇新增許可

  4. API 許可頁面上,選擇授予 【您的組織】 的管理員同意並確認。未經管理員同意,應用程式無法存取 SharePoint 資料。

注意

Microsoft Entra ID 僅應用程式身分驗證使用憑證 (來自步驟 3) 做為登入資料,因此您不會為此應用程式建立用戶端秘密。

步驟 3:產生身分驗證憑證

產生自我簽署憑證並將其封裝為 PKCS#12 (.p12) 套件。套件同時包含憑證及其私有金鑰,並受密碼保護。您可以將公有憑證上傳到 Entra (步驟 4),並將.p12套件上傳到 Amazon S3 (步驟 6)。選取作業系統的索引標籤以查看命令。

注意

Amazon Bedrock 會從.p12套件讀取私有金鑰以簽署身分驗證聲明,因此套件必須受到密碼保護並安全地存放。選擇強式隨機密碼 — 您會將它存放在秘密中,如步驟 7 certificatePassword所示。

Linux or macOS (OpenSSL)

產生私有金鑰和自我簽署憑證

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

將憑證和金鑰封裝為 PKCS#12 (.p12) 套件

出現提示時,輸入強式匯出密碼。記錄步驟 7。

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

您現在有三個檔案:私有金鑰 (private_key.pem)、公有憑證 (certificate.cer) 和套件 ()certificate.p12。您可以在步驟 4 中將公有憑證上傳到 Entra,並在步驟 6 中將.p12套件上傳到 Amazon S3。

Windows (PowerShell)

產生自我簽署憑證

下列 PowerShell 命令會產生具有一年有效期間的 2048 位元 RSA 自我簽署憑證,並將其存放在目前使用者的憑證存放區中。使用強式隨機密碼取代您的密碼 - 您可以將密碼存放在秘密中,如步驟 7 certificatePassword所示。

$cert = New-SelfSignedCertificate ` -Subject "CN=bedrock-sharepoint-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)。您可以在步驟 4 中將公有憑證上傳到 Entra,並在步驟 6 中將.p12套件上傳到 Amazon S3。

重要

.p12套件存放在 Amazon S3 中 (而非 .pem.cer 檔案)。套件包含 Amazon Bedrock 用來驗證的私有金鑰。文件層級存取控制 ACLs) 需要 .p12 格式。對於沒有 ACLs 的純內容爬取,您可以改為存放 PEM 編碼的憑證;因為 .p12適用於每個組態,本指南.p12會全面使用 。

注意

根據預設,憑證有效期為一年。過期的憑證會導致所有同步失敗,因此請在憑證過期之前輪換憑證。若要變更有效期間,請調整 -days 選項 (OpenSSL) 或 -NotAfter引數 (PowerShell)。如需輪換步驟,請參閱 輪換憑證

步驟 4:將公有憑證上傳至 Entra

  1. 在您的應用程式註冊中,選擇憑證和秘密,然後選擇憑證索引標籤。

  2. 選擇上傳憑證,然後選取您在步驟 3 中產生的certificate.cer檔案 (僅限公有憑證 - 絕不可將.p12套件或私有金鑰上傳至 Entra)。

  3. 選擇新增

步驟 5 (僅限 Sites.Selected):授予每個站台的存取權

注意

只有在您在步驟 2 中選擇Sites.Selected許可範圍時才適用此步驟。如果您使用所有網站範圍 (Sites.Read.AllSites.FullControl.All),請跳至 步驟 6:將憑證上傳至 Amazon S3

使用 Sites.Selected,您可以透過 Microsoft Graph API 個別授予連接器應用程式存取每個 SharePoint 網站的權限。這需要一個單獨的臨時應用程式,該應用程式保留 Sites.FullControl.All並僅用於執行授予。Amazon Bedrock 永遠不會看到此暫時應用程式或其登入資料。

  1. 建立暫時授予者應用程式。在 Entra 管理中心,將第二個應用程式 (例如 bedrock-sharepoint-granter) 註冊為沒有重新導向 URI 的單一租用戶。新增 Microsoft Graph Sites.FullControl.All 應用程式許可、授予管理員同意,以及建立用戶端秘密。記錄其用戶端 ID 和秘密值。

  2. 取得授予者應用程式的存取權杖。將預留位置取代為授予者應用程式的用戶端 ID 和秘密,以及您的租戶 ID。

    curl -s -X POST \ "https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/token" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=client_credentials" \ -d "client_id=GRANTER_CLIENT_ID" \ -d "client_secret=GRANTER_CLIENT_SECRET" \ -d "scope=https://graph.microsoft.com/.default"

    回應包含 access_token。在下一個命令中使用它做為承載字符。

  3. 將每個網站 URL 解析為網站 ID。使用網站的主機名稱和伺服器相對路徑。

    curl -s \ "https://graph.microsoft.com/v1.0/sites/contoso.sharepoint.com:/sites/engineering" \ -H "Authorization: Bearer ACCESS_TOKEN"

    回應中的 id 欄位是網站 ID。

  4. 授予連接器應用程式對網站的存取權。read用於僅限內容的爬取,或將 fullcontrol用於 ACL 爬取。將 CONNECTOR_CLIENT_ID 取代為步驟 1 中的應用程式 (用戶端) ID。

    curl -s -X POST \ "https://graph.microsoft.com/v1.0/sites/SITE_ID/permissions" \ -H "Authorization: Bearer ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "roles": ["fullcontrol"], "grantedToIdentities": [{ "application": { "id": "CONNECTOR_CLIENT_ID", "displayName": "bedrock-sharepoint-connector" } }] }'
  5. 對資料來源中包含的每個網站重複resolve-and-grant命令。完成後,您可以刪除暫時授予者應用程式;每個站台的授予仍然有效。

重要

每個網站授予不會追溯。如果您稍後將網站新增至資料來源,請在下一次同步之前授予連接器應用程式對該網站的存取權,否則不會編目其內容。

步驟 6:將憑證上傳至 Amazon S3

從步驟 3 上傳.p12套件到與知識庫位於相同區域中的 Amazon S3 儲存貯 AWS 體。記錄儲存貯體名稱和金鑰 — 您可以使用它們做為資料來源 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 秘密中。對於 Entra ID 僅限應用程式身分驗證,請包含下列鍵值對:

  • clientId (必要) — 步驟 1 中的應用程式 (用戶端) ID。

  • certificatePassword (建議) — 您在步驟 3 中於.p12套件上設定的密碼。請參閱以下備註。

{ "clientId": "your-client-id", "certificatePassword": "your-certificate-password" }

使用 建立秘密 AWS Command Line Interface:

aws secretsmanager create-secret \ --name bedrock-sharepoint-creds \ --secret-string file://secret.json

從回應記錄秘密 ARN。您可以使用它做為資料來源 secretArn

注意

certificatePassword設定為您在步驟 3 中建立.p12套件時所使用的密碼。如果您省略此欄位,Amazon Bedrock 會使用應用程式的用戶端 ID 做為密碼來開啟套件,因此套件必須使用用戶端 ID 做為其密碼來建立。我們建議您一律改為設定明確、高熵的密碼,並安全地存放私有金鑰。

注意

請改用 PEM 憑證。本指南使用.p12套件,適用於每個組態。如果您僅編目內容 (無文件層級存取控制),則可以改用 PEM 憑證。在這種情況下,請僅將有憑證上傳至 Amazon S3 (而非.p12套件),並將私有金鑰以 privateKey(未加密的 base64 編碼 PKCS#8,不含標頭行) 的形式存放在秘密中,以取代 certificatePassword

{ "clientId": "your-client-id", "privateKey": "your-base64-pkcs8-private-key" }

步驟 8:授予服務角色對憑證的存取權

您的知識庫服務角色必須能夠從 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:將憑證上傳至 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"] }

讀取存取只需要 kms:Decrypt。如需詳細資訊,請參閱搭配使用伺服器端加密與 AWS KMS 金鑰 (SSE-KMS)

如需完整的知識庫服務角色許可,請參閱 存取您的資料來源的許可

後續步驟

您現在擁有建立資料來源所需的一切:秘密 ARN、租用戶 ID 和憑證的 Amazon S3 位置。若要使用 AWS 管理主控台 或 API 建立 SharePoint 資料來源,請參閱 連接 SharePoint 資料來源

重要

針對ENTRA_ID_APP_ONLY身分驗證,您必須在建立資料來源certificateS3Path時提供 ,即使 ACLs已停用也一樣。使用此身分驗證類型建立且沒有憑證的 SharePoint 資料來源失敗。