您可以通过向用户授予 Identity and Access Management (IAM) 角色来授予对 Google Cloud Managed Lustre 操作的访问权限。
IAM 权限仅会控制对 Google Cloud Managed Lustre 操作(例如创建 Google Cloud Managed Lustre 实例)的访问权限。如需控制对实例上的文件系统操作(例如读取或写入文件)的访问权限,请使用 POSIX 文件权限。
权限和角色
Managed Lustre 使用以下权限:
| 权限 | 说明 |
|---|---|
lustre.instances.create |
创建新实例 |
lustre.instances.delete |
删除实例 |
lustre.instances.update |
更新实例。不允许删除 |
lustre.instances.get |
描述实例 |
lustre.instances.list |
列出所有实例 |
lustre.instances.exportData
|
将数据从 Managed Lustre 导出到 Cloud Storage |
lustre.instances.importData
|
将数据从 Cloud Storage 导入到 Managed Lustre |
lustre.locations.get |
获取位置信息 |
lustre.locations.list |
列出所有支持的位置 |
lustre.mirrors.create |
创建新镜像 |
lustre.mirrors.delete |
删除镜像 |
lustre.mirrors.update |
更新镜像 |
lustre.mirrors.get |
描述镜面 |
lustre.mirrors.list |
列出镜像 |
lustre.operations.list |
列出操作 |
lustre.operations.get |
获取操作 |
lustre.operations.cancel |
取消操作 |
lustre.operations.delete |
删除操作 |
Google Cloud 不支持直接授予单个权限;您必须授予包含权限的角色。Managed Lustre 的预定义角色如下:
- Managed Lustre Admin (
roles/lustre.admin) - Managed Lustre Viewer (
roles/lustre.viewer)
下表列出了 Managed Lustre 的预定义角色以及基本 Editor 角色授予的权限:
| 能力 | Editor (roles/editor) |
Managed Lustre (roles/lustre.*)
|
|
|---|---|---|---|
管理员 (roles/lustre.admin) |
Viewer (roles/lustre.viewer) |
||
| 创建实例 | |||
| 删除实例 | |||
| 更新实例 | |||
| 获取实例 | |||
| 列出实例 | |||
| 从 Cloud Storage 导入数据/将数据导出到 Cloud Storage | |||
| 配置 Cloud Storage 镜像 | |||
| 获取位置信息 | |||
| 列出支持的位置 | |||
| 列出长时间运行的操作 | |||
| 获取操作 | |||
| 取消操作 | |||
| 删除操作 | |||
自定义角色
如果可用的预定义角色不符合组织的访问权限要求,您可以创建和应用自定义 IAM 角色。
创建自定义角色时,建议将预定义角色进行组合,以确保包含正确的权限。
Managed Lustre 服务代理
Managed Lustre 使用服务代理访问其他 Google Cloud 资源并代表您执行操作。服务代理是 Google 代管式服务账号,在您首次在项目中创建 Managed Lustre 实例时自动创建。也可以手动创建。
只有在使用某些可选功能时,才需要向服务代理授予权限。对于不使用这些功能的标准实例创建和文件系统操作,无需进行服务代理配置。
需要服务代理权限的功能
以下功能需要向服务代理授予 IAM 角色:
| 功能 | 所需角色 | 目标资源 | 说明 |
|---|---|---|---|
| 客户管理的加密密钥 (CMEK) | roles/cloudkms.cryptoKeyEncrypterDecrypter |
Cloud KMS 密钥 | 允许服务代理使用您的密钥加密和解密静态数据。 |
| Cloud Storage 镜像 | 授予 storage.buckets.get、storage.buckets.update、storage.objects.get 和 storage.objects.list 权限的自定义角色 |
Cloud Storage 存储桶 | 允许服务代理创建 Pub/Sub 通知,并将对象从存储桶镜像到实例中。 |
| 从 Cloud Storage 转移数据 | roles/storage.objectViewer |
Cloud Storage 存储桶 | 允许服务代理读取存储桶中的对象并将其导入实例。 |
| 将数据转移到 Cloud Storage 以及从 Cloud Storage 转移数据 | roles/storage.objectUser |
Cloud Storage 存储桶 | 允许服务代理在导入和导出操作期间读取和写入对象。 |
如果您未使用上述任何功能,则可以跳过本部分中的其余步骤。
创建或检索服务代理身份
如需向服务代理授予权限,您必须获取其身份。服务代理使用以下格式:
service-PROJECT_NUMBER@gcp-sa-lustre.
使用以下任一选项创建或确定服务代理身份:
如果您尚未创建 Managed Lustre 实例:请运行
services identity create命令,手动创建服务代理:gcloud beta services identity create \ --service=lustre.googleapis.com \ --project=PROJECT_NUMBER_OR_ID将 PROJECT_NUMBER_OR_ID 替换为要在其中创建 Managed Lustre 实例的项目的编号或 ID。该命令会返回类似于以下内容的输出:
Service identity created: service-1234567890@gcp-sa-lustre.如果您已创建 Managed Lustre 实例:如需构建服务代理身份,请使用
gcloud projects describe命令检索项目编号:gcloud projects describe PROJECT_ID --format="value(projectNumber)"将 PROJECT_ID 替换为项目 ID。然后,替换服务代理邮箱中的 PROJECT_NUMBER:
service-PROJECT_NUMBER@gcp-sa-lustre.
向服务代理授予权限
获取服务代理身份后,请参阅以下文档,为您的功能授予所需角色:
其他必需的 Google Cloud 权限
除了 lustre 权限之外,您可能还需要其他Google Cloud 服务中的权限才能执行特定任务:
| 任务 | 权限 |
|---|---|
| 创建 VPC 网络 | 请参阅配置 VPC 网络的所需权限部分 |
| 创建 Compute Engine 虚拟机 | Compute Instance Admin (v1)。
(roles/compute.instanceAdmin.v1)
如需了解详情,请参阅 Compute Engine 文档。 |
| 创建和管理 Google Kubernetes Engine 集群 | Container Admin。
(roles/container.admin)
如需了解详情,请参阅 Google Kubernetes Engine 文档。 |