控制对资源的访问权限

您可以在项目级层与其他 Earth Engine 用户共享已启用 Earth Engine 的项目的资产或计算配额。您可以与其他用户或用户群组共享 Earth Engine 资产或计算资源。如果您想与一组用户共享,请创建新的 Google 群组,并记下其电子邮件地址(可从群组页面上的“关于”链接中获取)。本页介绍了如何为个人或群组提供资源访问权限,以及不同活动所需的角色和权限

设置 Earth Engine 服务使用情况

如需在 Cloud 项目中使用 Earth Engine API,必须在该项目中启用该 API,并且用户必须至少拥有 Earth Engine Resource Viewer 角色中的权限(详细了解预定义的 Earth Engine IAM 角色)。此外,用户必须至少拥有项目的 serviceusage.services.use 权限。可以通过项目所有者编辑者角色,或者通过特定的服务使用方角色来提供该权限。如果用户对所选项目没有所需的 Earth Engine 权限和服务使用权限,系统会抛出错误。

设置资产权限

设置素材资源级权限

您可以通过多种方式在资产级层更新权限。

  • 使用代码编辑器中的“资源管理器”。
  • 使用 Earth Engine 命令行。
  • 使用客户端库,例如 ee.data.setAssetAcl()
  • 或者直接调用 REST API

设置项目级素材资源权限

在项目级层进行共享可一次性设置启用了 Earth Engine 的 Cloud 项目中所有资源的权限。

您可以在项目的 IAM 管理员页面上分配适当的 Identity and Access Management (IAM) 角色,从而在项目级层共享资源。您可以使用预定义的 Earth Engine IAM 角色来共享 Earth Engine 资产和资源。如需更全面地了解 IAM 角色,请参阅了解角色

当其他用户尝试访问您的某项资产时,系统会先检查该资产级别的权限。如果未在资源级设置权限或检查失败(即无访问权限),系统将检查项目级权限。

设置项目级权限

如需在项目级层设置权限,请向用户或用户群组分配项目 IAM 角色:

  1. 在 Google Cloud 控制台中打开 IAM 页面
    打开 IAM 页面
    或者,将指针悬停在代码编辑器的资源标签页中的项目名称上,然后点击 图标。
  2. 点击选择项目,然后选择您的项目(如果您是从代码编辑器打开 IAM 页面的,则应该已经位于该页面中)。
  3. 点击顶部的添加,然后添加个人或群组电子邮件地址作为新成员,或者点击项目中的现有成员旁边的 图标。
  4. 角色下拉菜单中,搜索要授予的 Earth Engine 资源角色。如需了解详情,请参阅预定义的 Earth Engine IAM 角色
  5. 点击保存按钮。

VPC Service Controls

Earth Engine 支持 VPC Service Controls,这是一项 Google Cloud 安全功能,可帮助用户保护其资源并降低数据渗漏风险。将资源添加到 VPC 服务边界后,您可以更好地控制数据读取和写入操作。

详细了解 VPC-SC 功能和配置

限制

为资源启用 VPC Service Controls 会带来一些限制,我们针对这些限制提供了解决方法示例:

限制 替代方案示例
代码编辑器不受支持,VPC Service Controls 不允许在服务边界内使用该编辑器访问资源或客户端。 Earth Engine Python API geemap搭配使用。
VPC Service Controls 不会保护 旧版资产 使用 存储在云项目中的素材资源
VPC Service Controls 不支持将内容 导出到 Google 云端硬盘
服务边界内的资源和客户端不支持 Earth Engine 应用 没有可用的临时解决方法。

将 Earth Engine 与受保护的 VPC 服务边界内的资源搭配使用仅适用于专业版和高级版价格方案。如果尝试将 Earth Engine API 与关联到基本版价格方案的受 VPC-SC 保护的项目搭配使用,将会导致错误。如需详细了解 Earth Engine 价格,请参阅官方文档

如需详细了解 VPC Service Controls 及其限制,请参阅支持的产品和限制

角色与权限

以下部分介绍了执行活动和访问 Earth Engine 资源所需的权限和角色。如需详细了解 Cloud 项目权限角色,请参阅 Google Cloud 文档。

预定义的 Earth Engine IAM 角色

Earth Engine 提供预定义角色,可用于控制项目内 Earth Engine 资源的访问权限。这些角色包括:

角色 职位 说明
roles/earthengine.viewer Earth Engine Resource Viewer 提供查看和列出资源及任务的权限。
roles/earthengine.writer Earth Engine Resource Writer 提供以下权限:读取、创建、修改和删除资源,导入图片和表格,读取和更新任务,执行交互式计算,以及创建长时间运行的导出任务。
roles/earthengine.admin Earth Engine 管理员 提供对所有 Earth Engine 资源的权限,包括更改 Earth Engine 资产的访问权限控制。
roles/earthengine.appsPublisher Earth Engine Apps Publisher 提供创建服务账号以用于 Earth Engine 应用的权限。还授予在 Cloud 项目下修改和删除项目自有应用的权限。

请注意,如果预定义的 Earth Engine 角色无法满足您的需求,您可以设置原初自定义角色。您可以在 IAM 角色页面中查看与每个角色相关联的权限组合,方法是过滤到特定角色,然后点击该角色。

拥有对 Earth Engine API 的完全访问权限

为了让用户能够通过 REST API 直接访问 Earth Engine 服务,或者通过代码编辑器或客户端库访问 Earth Engine 服务,用户需要获得执行以下操作的权限:

  • 执行 Earth Engine 表达式
  • 运行批量计算(导出)
  • 获取互动式结果(在线地图、缩略图、图表等)
  • 创建/删除 Earth Engine 资产
  • 使用客户端库通过 OAuth 身份验证连接到 Earth Engine
需要权限
  • clientauthconfig.clients.listWithSecrets
  • earthengine.assets.get
  • earthengine.assets.getIamPolicy
  • earthengine.assets.list
  • earthengine.computations.create
  • earthengine.operations.get
  • earthengine.operations.list
  • monitoring.timeSeries.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • serviceusage.operations.get
  • serviceusage.operations.list
  • serviceusage.quotas.get
  • serviceusage.services.get
  • serviceusage.services.list
  • serviceusage.services.use
建议的角色
  • Service Usage Consumer (roles/serviceusage.serviceUsageConsumer) 以及以下任一角色:
    • Earth Engine Resource Viewer (roles/earthengine.viewer) 或
    • Earth Engine Resource Writer (roles/earthengine.writer) 或
    • Earth Engine Resource Admin (roles/earthengine.admin)
  • 此外,如果用户通过笔记本环境访问 Earth Engine 并使用笔记本验证器,则还需要 OAuth Config Editor (roles/oauthconfig.editor)。如需了解详情,请参阅 Colab 或 JupyterLab 笔记本身份验证
备注 Google Cloud 要求在调用 API 时使用项目作为有效项目,因此需要 Service Usage Consumer 角色,否则在项目 X 上没有此权限的情况下,ee.Initialize(project=X) 将失败。此外,您还可以在 Cloud 控制台中选择此项目,以显示资源使用情况。

仅限素材资源共享

向用户授予具有最低权限的预定义 Earth Engine IAM 角色,以便用户执行所需活动。请注意,如果没有必要的 serviceusage 权限,用户将无法使用项目资源。

项目管理

列出并显示可用项目

当使用代码编辑器浏览可用项目时,会发生这种情况。

需要权限
  • resourcemanager.projects.get
  • resourcemanager.folders.list
  • resourcemanager.folders.get
  • resourcemanager.organizations.get(不常见)
建议的角色
  • 相关项目的查看者 (roles/viewer) 或
    Earth Engine Resource Viewer (roles/earthengine.viewer) 或
    浏览器 (roles/browser,建议用于高级组织案例)
  • 相关文件夹的 Folder Viewer (roles/resourcemanager.folderViewer)

选择要在代码编辑器中使用的项目

需要权限
  • resourcemanager.projects.get
  • serviceusage.services.get
如果项目之前未设置过

首次通过代码编辑器选择项目时,系统会初始化该项目以供 Earth Engine 使用。如果之前未执行此操作,您将需要这些角色才能成功完成设置。

  • resourcemanager.projects.update
  • serviceusage.services.enable
建议的角色
  • Viewer (roles/viewer) 或
  • Earth Engine Resource Viewer (roles/earthengine.viewer) AND
    Service Usage Consumer (roles/serviceusage.serviceUsageConsumer)
其他角色(如果项目之前未设置)
  • Editor (roles/editor) 或
  • Project Mover (roles/resourcemanager.projectMover) AND
    Project IAM Admin (roles/resourcemanager.projectIamAdmin) AND
    Service Usage Admin (roles/serviceusage.serviceUsageAdmin)

通过代码编辑器创建项目

需要权限
  • resourcemanager.projects.get
  • resourcemanager.projects.create
  • resourcemanager.projects.update
  • serviceusage.services.get
  • serviceusage.services.enable
建议的角色
  • Editor (roles/editor) 或
  • Project Mover (roles/resourcemanager.projectMover) AND
    Project Creator (roles/resourcemanager.projectCreator) AND
    Service Usage Admin (roles/serviceusage.serviceUsageAdmin)
备注 您的组织可能不会授予您编辑者角色,因此可能需要更精细的角色。需要 Project Mover 来涵盖 projects.update 权限。

非商业层级选择

以下权限和建议的角色与非商业层级配置相关。

层级选择
需要权限
  • earthengine.config.update
建议的角色
  • Earth Engine Resource Writer (roles/earthengine.writer)
添加结算账号

Contributor 层级要求项目具有有效的结算账号。

需要权限
  • billing.accounts.get
建议的角色
  • Billing Account Viewer (roles/billing.viewer)

商业项目注册

以下权限与注册项目以供付费使用有关。

需要权限
结算账号
  • billing.subscriptions.list
此外:
  • billing.accounts.get(用于创建新的 Limited 方案)
  • billing.subscriptions.create(用于创建新的基本版或专业版方案)
Cloud 项目
  • earthengine.computations.create
  • earthengine.config.update
  • serviceusage.services.get
  • serviceusage.services.enable
建议的角色
结算账号
  • Billing Account Viewer (roles/billing.viewer),用于创建新的 Limited 方案
  • Billing Account Administrator (roles/billing.admin),用于创建新的 Basic 或 Professional 方案
Cloud 项目
  • Earth Engine Resource Writer (roles/earthengine.writer)
  • Service Usage Admin (roles/serviceusage.serviceUsageAdmin)

商业 Earth Engine 方案管理

以下权限与管理 Earth Engine 价格方案有关。

结算账号所需的权限
  • billing.subscriptions.create(用于更改 Earth Engine 方案)
  • billing.subscriptions.list(查看当前的 Earth Engine 方案)
结算账号的建议角色
  • Billing Account Viewer (roles/billing.viewer),以查看当前的 Earth Engine 方案
  • Billing Account Administrator (roles/billing.admin),以更改 Earth Engine 方案

批量任务管理

以下权限与针对批处理任务并发性的项目级限制的配置有关。 此功能仅适用于 Earth Engine 的商业用户。

查看项目级批量任务限制

Cloud 账号所需的权限
earthengine.config.get

设置项目级批量任务限制

Cloud 账号所需的权限
earthengine.config.update
注意:此权限还包括查看结算账号中配置的方案级限额。
结算账号所需的权限
billing.subscriptions.list

应用管理

显示应用信息

所需权限
  • iam.serviceAccounts.get
  • iam.serviceAccounts.getIamPolicy,如果应用受到限制(不太常见)
建议的角色 查看器 (roles/viewer) 或
Earth Engine Apps Publisher (roles/earthengine.appsPublisher)

发布/更新应用

需要权限
  • iam.serviceAccounts.get
  • iam.serviceAccounts.create
  • iam.serviceAccounts.enable
  • iam.serviceAccounts.getIamPolicy
  • iam.serviceAccounts.setIamPolicy
  • iam.serviceAccounts.disable(如果应用从一个项目移至另一个项目,这种情况并不常见)
建议的角色 Earth Engine Apps Publisher (roles/earthengine.appsPublisher) 或
Service Account Admin (roles/iam.serviceAccountAdmin)
备注
  • 此外,Earth Engine 应用服务账号通过提供 OAuth 访问令牌向 Earth Engine 服务器标识自己。 因此,在创建应用期间,某些身份会作为服务账号的 Service Account Token Creator (roles/iam.serviceAccountTokenCreator) 添加。
  • 对于公开的 Earth Engine 应用,获得该角色的身份是 earth-engine-public-apps@appspot.gserviceaccount.com;对于受限应用,该身份是应用创建者配置的访问权限限制 Google 群组。

删除应用

需要权限 iam.serviceAccounts.disable
建议的角色 Earth Engine Apps Publisher (roles/earthengine.appsPublisher) 或
Service Account Admin (roles/iam.serviceAccountAdmin)