使用 IAM 进行访问权限控制

您可以通过向用户授予 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 文档。