

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

# 設定 Google Drive 的服務帳戶身分驗證
<a name="kb-managed-googledrive-service-account-setup"></a>

服務帳戶身分驗證 (`SERVICE_ACCOUNT`) 是 Google Drive 資料來源的建議方法。Google Cloud 服務帳戶會使用私有金鑰進行身分驗證，然後模擬 Google Workspace 管理員使用者為您網域中的任何使用者爬取磁碟機內容。這是唯一支援文件層級存取控制 (ACLs的方法。

**需要管理存取權**  
此設定需要 Google Workspace 管理員才能啟用 APIs、建立服務帳戶、設定全網域委派，以及建立委派的管理員使用者。 AWS 端需要管理員存取 AWS Secrets Manager 和 IAM。

## 步驟 1：建立 Google Cloud 專案
<a name="kb-managed-googledrive-sa-step1"></a>

1. 開啟 [Google Cloud 主控台](https://console.cloud.google.com/)。

1. 從頁面頂端的專案選擇器中，選擇**新專案**。

1. 輸入專案名稱，然後選擇**建立**。

1. 建立專案之後，請從專案選擇器切換到專案。

## 步驟 2：啟用所需的 APIs
<a name="kb-managed-googledrive-sa-step2"></a>

1. 在 Google Cloud 主控台導覽功能表中，選擇 **APIs Services**，然後選擇**程式庫**。

1. 搜尋並啟用下列每個 APIs：
   + **Google Drive API**
   + **Google Drive 活動 API**
   + **管理員 SDK API**

## 步驟 3：建立服務帳戶
<a name="kb-managed-googledrive-sa-step3"></a>

1. 在導覽功能表中，選擇 **APIs & Services**，然後選擇**登入資料**。

1. 選擇**建立登入**資料，然後選擇**服務帳戶**。

1. 輸入名稱 （例如 `bedrock-google-drive-connector`) 和選用描述，然後選擇**完成**。

1. 在**登入**資料頁面上，選擇您剛建立的服務帳戶。

1. 在**詳細資訊**索引標籤上，複製**唯一 ID**。您可以在步驟 5 中使用此選項來授予整個網域的委派。

## 步驟 4：產生私有金鑰
<a name="kb-managed-googledrive-sa-step4"></a>

1. 在服務帳戶詳細資訊頁面上，選擇**金鑰**索引標籤。

1. 選擇**新增金鑰**，然後選擇**建立新金鑰**。

1. 選取 **JSON**，然後選擇**建立**。您的瀏覽器會下載包含服務帳戶 `client_email`和 的 JSON 檔案`private_key`。安全地存放檔案。

**注意**  
如果您收到錯誤，指出組織政策已停用服務帳戶金鑰建立，您必須覆寫專案`iam.disableServiceAccountKeyCreation`的限制。如需詳細資訊，請參閱 Google Cloud 文件中的[限制服務帳戶用量](https://cloud.google.com/resource-manager/docs/organization-policy/restricting-service-accounts)。

## 步驟 5：設定全網域委派
<a name="kb-managed-googledrive-sa-step5"></a>

全網域委派可讓服務帳戶代表您 Google Workspace 中的使用者。

1. 以 [Google Workspace 管理員](https://admin.google.com/)身分登入 Google Workspace Admin Console。

1. 在導覽窗格中，選擇**安全性**、**存取和資料控制**、**API 控制**。

1. 選擇**管理全網域委派**，然後選擇**新增**。

1. 針對**用戶端 ID**，從步驟 3 輸入服務帳戶的唯一 ID。

1. 針對 **OAuth 範圍**，輸入下列逗號分隔值：

   ```
   https://www.googleapis.com/auth/drive.readonly,
   https://www.googleapis.com/auth/drive.metadata.readonly,
   https://www.googleapis.com/auth/admin.directory.user.readonly,
   https://www.googleapis.com/auth/admin.directory.group.readonly,
   https://www.googleapis.com/auth/cloud-platform,
   https://www.googleapis.com/auth/forms.body.readonly
   ```

1. 選擇 **Authorize** (授權)。

## 步驟 6：建立委派的管理員使用者
<a name="kb-managed-googledrive-sa-step6"></a>

服務帳戶會在爬取內容時模擬 Google Workspace 管理員使用者。我們建議您為此目的建立具有最低必要角色的專用管理員使用者。

1. 在 Google Workspace Admin Console 中，選擇**目錄**，然後選擇**使用者**。

1. 選擇**新增使用者**，輸入名字、姓氏和主要電子郵件地址，然後選擇**新增使用者**。

1. 從使用者清單中，開啟您建立的使用者。

1. 展開**管理員角色和權限**區段，並指派下列角色：
   + **Groups Reader**
   + **使用者管理管理員**
   + **儲存管理員**

1. 選擇**儲存**。記錄此使用者的電子郵件地址；您可以將其存放在秘密中，做為 `adminAccountEmail`。

## 步驟 7：建立 Secrets Manager 秘密
<a name="kb-managed-googledrive-sa-step7"></a>

使用下列鍵值對將登入資料存放在 AWS Secrets Manager 秘密中。`privateKey` 從您在步驟 4 中下載的 JSON 金鑰檔案複製 `clientEmail`和 （使用 `client_email`和 `private_key`值）。

```
{
    "adminAccountEmail": "{{admin@your-domain.com}}",
    "clientEmail": "{{your-service-account@your-project.iam.gserviceaccount.com}}",
    "privateKey": "{{your-private-key-from-the-json-key-file}}"
}
```

使用 建立秘密 AWS Command Line Interface：

```
aws secretsmanager create-secret \
  --name {{bedrock-google-drive-sa-creds}} \
  --secret-string file://secret.json
```

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

**注意**  
此`privateKey`值包含 JSON 金鑰檔案中的文字`\n`逸出序列。將值複製到秘密時，請保持原狀。

## 後續步驟
<a name="kb-managed-googledrive-sa-next"></a>

存放秘密之後，請建立將 `authType` 設為 的資料來源`SERVICE_ACCOUNT`。請參閱 [連接 Google Drive 資料來源](kb-managed-ds-googledrive-connect.md)。若要依使用者許可篩選查詢結果，請參閱 [文件層級存取控制](kb-managed-ds-googledrive-acl.md)。