环境信用服务(预览)中基于角色的访问控制

Microsoft Cloud for Sustainability 图标。 Microsoft Cloud for Sustainability - 免费试用

Microsoft Cloud for Sustainability 技术峰会 2024 年 5 月

重要提示

此功能的部分或全部属于预览版内容。 相关内容和功能可能会发生更改。 您可以访问环境信用服务(预览)沙盒环境进行 30 天的试用。 要在生产环境中使用环境信用服务(预览),请完成环境信用服务(预览)注册窗体

基于角色的访问控制允许您根据分配给组织用户的角色中存在的权限来控制应用程序中不同操作的访问权限。 它允许您授予和删除分配给组织用户的角色以进行精细控制。

每个自愿生态市场生态系统组织都扮演着特定的角色,在环境信用服务(预览)中称为市场角色。 每个组织都会让用户加入环境信用服务(预览)并分配用户角色。 生态项目或计划、模块化收益项目、索赔和代币等资源属于组织而不是用户。

分配用户角色

用户角色被定义为允许在应用程序中进行特定操作的权限集合。 您可以在特定市场角色的上下文中在组织级别或资产级别分配这些用户角色。 环境信用服务(预览)支持以下用户角色:

用户角色 权限
管理员 管理员可以对关联资源执行所有支持的数据平面操作,例如创建、更新、读取和删除。 他们还可以执行管理平面操作,例如在组织中加入用户以及为他们创建或更新角色分配。
参与者 参与者可以对关联资源执行所有支持的数据平面操作,例如创建、更新、读取和删除。 他们还在管理平面级别获得读取权限。
读者 读者可以在关联的数据平面级别和管理平面级别的资源上执行读取操作。

在市场角色的背景下管理组织级别的角色

在特定市场角色级别的上下文中,组织级别的基于角色的访问控制支持以下功能。 例如,如果一个组织作为买方运营,那么它就有一个市场角色(买方)。 在组织级别,该组织的用户可以具有买方管理员、买方参与者或买方读者用户角色。

一个组织可以具有多个市场角色。 例如,如果另一个组织既作为发行注册机构又作为市场运营,则它具有两个市场角色。 该组织的用户可能在供应商市场角色上下文中具有供应商管理员角色,在发行注册机构角色的上下文中具有发行注册机构读者角色。

在资产级别管理角色

您可以在组织内的资产级别管理用户特权。 组织级别管理员或参与者可以创建新资产。 组织级别管理员还可以将用户添加到资产并为他们分配角色。

  • 资产级别管理员:资产级别管理员被授予组织中资产特定粒度范围内的管理员用户角色。 例如,在组织的供应商市场角色中的模块化收益项目范围内,给用户分配了供应商管理员角色。 他们可以对资产执行所有支持的数据平面操作,例如读取和写入。 他们还可以执行管理平面操作,例如针对以用户作为管理员的特定资产在组织中加入用户。

  • 资产级别参与者:资产级别参与者可以对资产执行所有支持的数据平面操作,例如读取和更新资产。 他们可以读取该资产范围内其他用户或组的角色分配。

  • 资产级别读者:资产级别读者可以对资产执行读取操作。 他们可以读取该资产范围内其他用户或组的角色分配。

备注

将保持自上而下的访问层次结构。 例如,如果用户在组织范围内的供应商市场角色中具有管理员用户角色,那么他们将自动对该供应商的所有资产(例如生态项目和模块化收益项目)具有管理员级别的访问权限。 如果另一个用户拥有资产级别管理员权限(例如,在生态项目上),那么他们将有权访问其下的所有资产。

基于角色的访问控制支持的功能

将 Postman 集合用于 API 的先决条件

您可以使用组织及其管理员的环境配置来设置 Postman 集合,如下所示:

  • 在 Postman 集合的不同变量(例如:<marketRole>_admin_username)中为您要使用的不同市场角色设置用户详细信息及其各自的密码。

  • 创建新的 Postman 环境,并切换到该环境,然后再执行集合中的任何 API。

  • 针对您要使用的特定市场角色运行设置组织文件夹,以在 Postman 环境中设置组织(及其各自的管理员)的属性。

  • 运行角色定义 > 获取所有角色定义 API,以获取 Postman 环境中所有内置用户角色定义的详细信息。 来自角色定义 API 的响应可用于了解可分配给用户的可分配范围。

添加用户

您可以通过切换到左侧导航上的设置菜单来添加用户并管理他们在组织中的角色。

备注

您不能添加已添加的用户。

  1. 用户访问权限屏幕上,选择添加用户
  2. 添加用户窗格中,输入用户,选择访问级别,然后选择保存在添加用户窗格中添加用户的屏幕截图。

通过 API:

备注

Postman 集合的加入用户文件夹支持一键执行。 但是,我们建议您使用单独的 API 来尝试加入用户并熟悉这些 API。

  • 对于任何组织文件夹,例如供应商,在 Postman 集合的加入用户文件夹中,通过调用获取组织详细信息获取管理员用户详细信息 API,来设置组织及其管理员。

  • 若要加入参与者用户,您可以验证 API 所需的授权是否对应于管理员用户。 请求的有效负载会尝试添加具有内置参与者用户角色的新用户,例如供应商参与者用户角色。 通过发送请求,可以加入参与者。

  • 同样,您可以在组织中加入具有相应读者角色(例如供应商读者用户角色)的读者用户。

更改角色分配

添加用户后,可以更改分配给他们的用户角色。

备注

您无法编辑自己的访问权限。

  1. 用户访问权限屏幕上,选择用户旁边的三个点,然后选择编辑
  2. 编辑访问权限窗格中,在访问级别下拉列表中选择新角色,然后选择保存删除用户的编辑访问权限屏幕的屏幕截图。

通过 API:

  1. 导航到集合中的角色分配文件夹。

  2. 使用在资产上创建角色分配 API。 默认情况下,会使用供应商管理员访问令牌将供应商参与者角色分配给供应商读者用户。

    备注

    此示例重点介绍角色分配的 API 如何工作。 您可以通过各自的管理员帐户为来自不同组织的用户分配不同的用户角色。 您可以将范围的资源 URI 更改为角色定义的有效资产 URI。 替换请求有效负载中的环境变量(roleDefinitionIduserId),更改 resourceUri 请求正文参数,并更改管理员访问令牌环境变量以匹配各自的管理员用户帐户。

    您可以发送具有不同的角色定义标识符 (roleDefinitionId) 值的角色分配创建 API,以分配给组织中不同范围 (resourceUri) 的不同用户 (userId)。 您可以更改授权标头以对应于各自管理员用户的访问令牌。

    组织管理员不能分配组织外的用户角色,也不能将角色分配给组织外的用户。

  3. 使用更新角色分配 API 来更新用户的访问权限。 例如,您可以将用户提升为供应商管理员。确保验证 API 参数中的 roleassignment_id

删除角色分配

管理员用户可以根据需要删除参与者的现有角色分配。

备注

您无法删除自己的访问权限。

  1. 用户访问权限屏幕上,选择用户旁边的三个点,然后选择编辑
  2. 编辑访问权限窗格中,在访问级别下拉列表中选择,然后选择保存删除用户的编辑访问权限屏幕的屏幕截图。

通过 API:

  1. 设置与需要删除其角色分配的用户组织对应的管理员角色。

  2. 导航到角色分配文件夹,并选择删除角色分配 API。

  3. API 参数中输入正确的 roleassignment_id

  4. 使用相应管理员用户的访问令牌设置授权标头来调用 DELETE /roleAssignments/{{roleassignment_id}}(来自 Postman 环境的变量可用于尝试具有来自不同组织的不同角色的用户)。

查看和更改配置文件详细信息

要查看您的配置文件详细信息,在左侧导航中选择我的帐户

要编辑您的首选项,在首选项部分选择编辑图标,然后选择要使用的主页。 此列表将指示当前登录用户有权访问的不同市场角色。

编辑首选项的屏幕截图。

通过 API:

  1. 使用 POST /organizations/{organizationId}/users/{userId}/setMyDefaultMarketRole API 切换用户的默认市场角色。 授权标头必须使用 userId URL 参数中传递的同一用户的访问令牌。 用户必须在被设置为默认值的新市场角色中具有一定的访问权限。

查看角色定义

具有任何角色的用户都可以查看不同的角色定义。

要通过 API 查看所有角色定义,请执行以下操作:

  1. 导航到角色定义文件夹,并选择获取所有角色定义 API。

  2. 使用相应用户的访问令牌设置授权标头来调用 GET /roleDefinitions(来自 Postman 环境的变量可用于尝试具有来自不同组织的不同角色的用户)。

要按 ID 查看角色定义,请执行以下操作:

  1. 导航到角色定义文件夹,并选择按 ID 获取角色定义 API。

  2. 通过在请求 URL 中设置角色定义标识符,并使用相应用户的访问令牌设置授权标头,来调用 GET /roleDefinitions/{{id}}(来自 Postman 环境的变量可用于尝试具有来自不同组织的不同角色的用户)。

查看用户和分配的角色

具有任何角色的用户都可以查看组织的用户以及为其分配的角色。

  • 导航到用户访问权限屏幕,查看具有访问权限的用户。

    显示用户及其角色的用户访问权限屏幕的屏幕截图。

通过 API:

  1. 导航到用户文件夹。
  2. 通过使用来自相应组织的用户访问令牌设置授权标头,调用获取组织中的所有用户(来自 Postman 环境的变量可用于尝试具有来自不同组织的不同角色的用户)。
  3. 导航到角色分配文件夹。
  4. 调用获取我的默认市场角色中的所有角色分配,以基于 resourceUri 查询参数获取调用方标识的默认市场角色中的角色分配。

管理资产的跨组织访问控制

管理员用户可以管理跨组织的资产访问。 这可以用于多种情况,例如,如果供应商已经预先向买方承诺信用额度并且他们不希望其他买方查看信用额度。 另一个示例是要在同一价值链中使用的插入操作。

为了支持这些方案,环境信用服务(预览)具有以下功能:

  • 管理员可以管理他们是否希望资产对所有市场角色可见。 例如,想要将信用额度用于插入操作的供应商可以决定对所有买方隐藏信用额度的可见性。 默认情况下,资产将对管理员可以切换的所有市场角色可见。

  • 管理员可以管理他们是否希望资产对市场角色的所有组织可见。 例如,供应商可能已预先向买方承诺信用额度。 管理员可以管理可见性,以便除预期买方之外的任何其他买方都看不到信用额度。

默认情况下,生态项目、模块化收益项目和信用额度等资产对所有组织可见,管理员可以切换可见性。 管理员可以为此设置从最低到最高优先级的不同级别的跨组织访问策略,如下所示:

  • 组织:组织级别的跨组织策略意味着跨组织访问控制应用于组织中的所有资产。

  • 生态项目:生态项目级别的跨组织策略比前一层具有更高的优先级。 它表示对特定生态项目及其中的所有资产的跨组织访问控制。 如果在此级别设置了跨组织策略,它优先于在组织级别设置的任何策略。 这可以由在生态项目范围内具有管理员访问权限的用户进行设置。

  • 模块化收益项目:模块化收益项目级别的跨组织策略比前面的层具有更高的优先级。 它表示对特定模块化收益项目及其中的所有资产的跨组织访问控制。 如果在此级别设置了跨组织策略,它优先于在上述层中的一层设置的任何策略。 这可以由在模块化收益项目范围内具有管理员访问权限的用户进行设置。

  • 信用额度:信用额度级别的跨组织策略比前面的层具有更高的优先级。 它表示对特定信用额度的跨组织访问控制。 如果在此级别设置了跨组织策略,它优先于在上述层中的一层设置的任何策略。 这可以由在模块化收益项目范围内具有管理员访问权限的用户进行设置。

备注

管理员可以为他们负责的资产设置跨组织策略。 供应商买方是可以设置跨组织策略的两个市场角色。 供应商可以在生态项目、模块化收益项目和信用额度上设置策略。 买方可以在所负责的信用额度上设置。 调用 API 时,x-ms-marketRole 标头指示有关管理员用户调用 API 的市场角色上下文的服务。

通过 UX:

目前,从 UX,组织级别管理员可以在组织级设置跨组织策略。

  1. 在左侧导航中选择组织访问权限

  2. 根据需要,为要更改和更新的组织选择编辑

    显示跨组织访问权限更改的组织访问权限屏幕的屏幕截图。

通过 API:

  1. 导航到 Postman 中的组织文件夹,使用 API 在组织级别设置跨组织访问策略在组织级别在默认市场角色下设置策略。
  2. 导航到 Postman 中的生态项目创建文件夹,使用 API 在生态项目上设置跨组织访问策略在特定生态项目级别设置策略。
  3. 导航到 Postman 中的生态项目创建文件夹,使用 API 在 MBP 上设置跨组织访问策略在特定模块化收益项目级别设置策略。
  4. 导航到 Postman 中的信用额度文件夹,使用 API 在信用额度上设置跨组织访问策略在特定信用额度级别设置策略。

利用组管理访问权限

管理员可以创建组、管理组中的用户以及分配具有角色的组。 目前仅通过 API 支持此功能。

  • 创建用户组并向其中添加用户:

    POST /organizations/{{organization_id}}/groups  
    
  • 获取组织中的所有用户组:

    GET /organizations/{{organization_id}}/groups
    
  • 按 ID 获取用户组:

    GET /organizations/{{organization_id}}/groups/{{group_id}} 
    
  • 获取用户组中的用户:

    GET /organizations/{{organization_id}}/groups/{{group_id}}/users  
    
  • 将用户添加到用户组中:

    POST /organizations/{{organization_id}}/groups/{{group_id}}/addUsers  
    
  • 从用户组中删除用户:

    DELETE /organizations/{{organization_id}}/groups/{{group_id}}/users/{{user_id}}  
    
  • 将用户加入用户组:

    POST /organizations/{{organization_id}}/groups/{{group_id}}/addNewUsers  
    
  • 为用户组创建角色分配:

    POST /roleAssignments  
    
  • 删除用户组角色分配:

    DELETE /roleAssignments/{{roleAssignmentId}}  
    

另请参见

环境信用服务(预览)概述
环境信用服务(预览)术语表
环境信用服务(预览)API 参考概述

Microsoft Cloud for Sustainability 图标。产品页面注册图标。免费试用社区图标。社区