描述授权与信任管理(XSUAA)

学习目标

  • 描述 SAP Authorization and Trust Management 服务

业务案例

你的公司正在 SAP Business Technology Platform 的 Cloud Foundry 环境中开发一组应用程序。由于这些应用程序运行在云中,你希望保护它们免遭未经授权的访问。SAP Authorization and Trust Management 服务与 Extended Services - User Account and Authentication(XSUAA)服务相结合,可提供所有必需的功能。

管理用户授权

SAP Authorization and Trust Management 服务可让你管理用户授权以及对身份提供者的信任。身份提供者是应用程序的用户来源。你可以使用身份验证租户、SAP 本地系统或自定义的企业身份提供者。用户授权通过应用程序级别的技术角色进行管理,在大规模云场景中,这些角色可以聚合为业务级别的组和角色集合。

平台用户与业务用户

平台用户

平台用户通常是开发人员、管理员或操作员,他们在 SAP BTP 上部署、管理和排查应用程序与服务的问题。

对于平台用户,默认身份提供者是 SAP ID service。

业务用户

业务用户使用部署到 SAP BTP 的应用程序。例如,你部署的应用程序的最终用户,或已订阅应用或服务(如 SAP Business Application Studio 或 SAP Web IDE)的用户,都是业务用户。

Extended Services - User Account and Authentication(XSUAA)服务

Extended Services - User Account and Authentication(XSUAA)服务是在 Cloud Foundry 上开发自己的应用程序时需要处理的最重要组件之一。它对你的用户进行身份验证和授权,并为用户会话分配正确的权限,以便你的应用程序能够执行以下操作:

  • 通过 Email、UserId、First 和 Lastname 识别用户。

  • 检查其角色(scope),以决定是否允许用户执行某项操作或禁止其操作。

XSUAA 是 SAP 的内部开发成果。SAP 以开源 Cloud Foundry UAA OAuth2 Provider 为基础,并扩展了 SAP 特有的功能,以便在 SAP 应用程序中使用。有一点很重要:XSUAA 并不存储"真实"用户。这就是 XSUAA 需要信任外部身份提供者(IdP)的原因。

注意

此图仅适用于 SAP Business Technology Platform 云管理工具的 Feature Set B。请查看 SAP Help Portal 页面中的用户与成员管理以更好地理解 Feature Set A 与 Feature Set B 在用户管理方面的差异。

在 Feature Set B 中,你的 SAP BTP 全局账户拥有自己的 XSUAA 租户。该 XSUAA 租户默认与 SAP ID service 存在信任关系。SAP ID service 管理着大量已创建 SAP 用户账户的用户。你可以将 SAP ID service 中存在的用户作为成员添加到全局账户和子账户。要使这些用户能够执行管理任务,需要为他们分配相应的角色集合。有一组默认的平台角色集合,如 Global Account AdministratorGlobal Account ViewerSubaccount AdministratorCloud Connector Administrator,可用于分配 SAP BTP 账户管理授权。有关账户管理默认角色集合的更多信息,请参阅此 SAP Help Portal 页面

与来自 SAP ID service 的平台用户不同,你的业务用户也可以通过你自己的企业身份提供者提供。这些就是你希望授予业务应用程序访问权限的用户。这些应用程序可能是 SAP 提供的 SaaS 应用程序,如 SAP Business Application Studio 或 SAP Workflow Management,也可能是你在 SAP BTP 上开发的自己的应用程序。业务应用程序有自己的角色集合,例如 Business_Application_Studio_DeveloperWorkflowManagementAdmin,或你为应用程序创建的任何自定义角色集合。

以下各节将进一步说明角色集合、角色和 scope 这几个术语及其相互关系。

角色集合、角色和 Scope

下图"角色集合、角色和 Scope"展示了角色集合、角色和 scope 之间的关系。

Scope

Scope 是表示应用程序或服务中授权/访问权限的任意值。Scope 需要以 xsappname 作为前缀,以便可唯一识别。

角色

角色是持有若干 scope 的实体。Scope 可以放入多个角色,因此你不必将 scope 局限于某一个角色中。

角色集合

角色集合包含一个或多个角色。一个角色可以被多次使用。但是,例如拥有一个名为 Admin 且只包含 admin 角色的角色集合是完全可以的。

角色集合作为分配存储在 XSUAA 中,并且是可以分配给特定业务用户的唯一实体。

实践中如何运作?

以下部分是对官方帮助页面的简要总结。

观看此视频以了解更多关于 scope、角色集合和角色的信息。在视频中你可以看到三个不同的角色。一个是项目和工作空间中工作的开发人员。另一个是作为安全管理员负责 CF 账户的管理员。

视频:本节含 SAP 官方视频(视频 ID 1_iv8b0yr5),需在 learning.sap.com 在线观看。

什么是 xs-security.json?

为简化说明,我们姑且将 xs-security.json 称为"应用程序安全性的声明"。以下 xs-security.jsonincident-management 应用程序的示例:

{
"xsappname": "incident-management",
"tenant-mode": "dedicated",
"scopes": [
{
"name": "$XSAPPNAME.IncidentViewer",
"description": "IncidentViewer"
},
{
"name": "$XSAPPNAME.IncidentManager",
"description": "IncidentManager"
}
],
"attributes": [],
"role-templates": [
{
"name": "IncidentViewer",
"description": "generated",
"scope-references": [
"$XSAPPNAME.IncidentViewer"
],
"attribute-references": []
},
{
"name": "IncidentManager",
"description": "generated",
"scope-references": [
"$XSAPPNAME.IncidentManager"
],
"attribute-references": []
}
]
}

你必须告知 XSUAA 服务如何调用你的应用程序(xsappname),并进一步定义你的 scope 和角色模板。这也可以在 mta.yaml 文件中定义。这些 scope 在应用程序内部用于在用户尝试执行某项操作时检查具体权限。

摘要

你现在已经对 SAP Authorization and Trust Management 服务、Extended Services - User Account and Authentication(XSUAA)服务的重要性,以及用户管理和分配的基本概念有了总体了解。你知道了 xs-security.json 应用程序安全描述符文件的用途,以及它与 scope、角色和 XSUAA 服务的关系。你也知道了在哪里查找更多信息。

延伸阅读

  • 部分文字和图形取自博文 Demystifying XSUAA in SAP Cloud Foundry 。如需了解更多信息,请查看该博文。博文中关于用户管理的说明针对的是 SAP BTP 云管理工具 Feature Set A。

  • 应用程序安全描述符