

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

# 为 Google 云端硬盘设置服务帐号身份验证
<a name="kb-managed-googledrive-service-account-setup"></a>

对于 Google 云端硬盘数据源，推荐使用服务帐号身份验证 (`SERVICE_ACCOUNT`)。Google Cloud 服务帐号使用私钥进行身份验证，然后冒充 Google Workspace 管理员用户抓取您网域中任何用户的云端硬盘内容。这是唯一支持文档级访问控制 (ACL) 的方法。

**需要管理权限**  
此设置要求 Google Workspace 管理员启用 API、创建服务帐号、配置全网域委托以及创建委派管理员用户。该 AWS 方需要管理员访问 AWS Secrets Manager 和 IAM。

## 第 1 步：创建谷歌云项目
<a name="kb-managed-googledrive-sa-step1"></a>

1. 打开[谷歌云控制台](https://console.cloud.google.com/)。

1. 从页面顶部的项目选择器中选择 “**新建项目**”。

1. 输入项目名称，然后选择 “**创建**”。

1. 创建项目后，从项目选择器切换到该项目。

## 步骤 2：启用所需的 API
<a name="kb-managed-googledrive-sa-step2"></a>

1. 在 Google Cloud 控制台的导航菜单中，选择 **API 和服务**，然后选择**资源库**。

1. 搜索并启用以下每个 API：
   + **谷歌云硬盘 API**
   + **谷歌云端硬盘活动 API**
   + **管理员 SDK API**

## 步骤 3：创建服务帐号
<a name="kb-managed-googledrive-sa-step3"></a>

1. 在导航菜单中，选择 **API 和服务**，然后选择 “**凭据**”。

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>

Domain-wide 委托允许服务帐号代表您的 Google Workspace 中的用户行事。

1. 以 [Google 工作空间管理员的身份登录 Google Workspace 管理员控制台](https://admin.google.com/)。

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. 选择**授权**。

## 步骤 6：创建委派管理员用户
<a name="kb-managed-googledrive-sa-step6"></a>

该服务帐号在抓取内容时会冒充 Google Workspace 管理员用户。我们建议为此目的创建一个专门的管理员用户，其所需角色最少。

1. 在 Google Workspace 管理员控制台**中，选择目录**，然后选择**用户**。

1. 选择 “**添加新用户**”，输入名字、姓氏和主电子邮件地址，然后选择 “**添加新用户**”。

1. 在用户列表中，打开您创建的用户。

1. 展开 “**管理员角色和权限**” 部分，然后分配以下角色：
   + **群组阅读器**
   + **用户管理管理员**
   + **存储管理员**

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 云端硬盘数据源](kb-managed-ds-googledrive-connect.md)。要按用户权限筛选查询结果，请参阅[Document-level 访问控制](kb-managed-ds-googledrive-acl.md)。