全文约8,800字,建议收藏阅读
设想在车辆中部署了一套联网的娱乐系统,该系统的应用需访问互联网。若娱乐系统被黑客入侵,攻击者可能会试图控制关键功能,如刹车。为了防止这种情况,通过有效的身份和访问管理(IAM),可以实时监控和隔离娱乐系统的行为,确保车辆在任何情况下保持安全与可靠。
身份和访问管理(IAM)在AUTOSAR Adaptive平台中扮演着至关重要的角色,其核心任务是确保只有经过授权的身份能够访问适当的资源。
在AUTOSAR Adaptive的环境中,身份通常指的是自适应应用程序或其宿主,而资源则涵盖了自适应平台中功能集群API所支持和开放的所有功能。
IAM的定义与功能
开发者可以利用IAM为Adaptive Application创建模型,对资源访问请求提供访问控制决策(Access Control Decisions)功能,进行访问控制。
访问控制决策以布尔值代表请求的操作是否被允许,判断依据则与调用者以及访问控制策略(Access Control Policy)有关。而这个策略,也即一些约束条件。
对于CPU或者RAM的系统资源请求的控制,并不属于IAM模块的职责范围。
运行时,只有当请求被拒绝而且调用通知函数时,IAM和应用有交互,其他时间,IAM对于应用都是透明的。
为了IAM理解框架如何工作的,必须提前理解一些重要的概念。
本词汇表列出了与身份和访问管理有关的一些术语和缩写,这些术语和缩写不在AUTOSAR词汇表中。
Identity and Access Management (IAM)
身份和访问管理 (IAM) 是关于管理自适应应用程序对自适应平台基础和服务的接口和资源的访问权限。
策略决策点(PDP)
PDP是指制定访问控制决策的逻辑部分。它判断应用程序是否有权限执行所请求的任务。AUTOSAR没有规定PDP的具体实现和配置方式。
策略执行点(PEP)
PEP是指执行访问控制决策的逻辑部分。它直接与相应的PDP交互,获取访问控制决策。
访问控制策略Access control Policy
访问控制策略是针对调用的目标(如服务接口)制定的,用于说明访问这些接口需要具备哪些身份信息。为了访问特定的对象(比如服务接口),这个值是用来定义必须满足的约束。
访问控制决策Access Control Decision
访问控制决策是一个布尔值来,表明操作请求是否被允许。它基于调用者的身份和访问控制策略来确定。
身份 Identity
身份是指自适应应用程序的一些属性,访问控制是根据这些属性来进行的。在远程IAM的情况下,身份也可以指远程ECU的一些属性,访问控制也是根据这些属性来进行的。
AUTOSAR资源
AUTOSAR资源是指属于IAM(身份和访问管理)范围的接口(如服务接口,加密密钥槽,加密证书)。
Intent 意图
intent 是指自适应应用程序的一种属性。如果请求的应用程序具有所有被认可的、对于特定资源必要的意图,那么就可以访问一个AUTOSAR资源(如CryptoKeySlot,ServiceInterface及其成员Method,Event和Field)。
意图也可以指应用程序请求的访问类型(如对CryptoCertificate的读或写访问)。意图是通过AUTOSAR资源特定的建模(如ComFieldGrant-Design)在应用程序清单中分配给自适应应用程序的。
授权Grant
在Adaptive应用程序部署期间,设计阶段要求的每项能力都应得到确认。Grant元素在元模型中可用。授权将支持集成商审查功能,但不允许接受部分功能。
Grant是指集成商在部署阶段将GrantDesigns转换为Grant,从而确认自适应应用程序的意图。Grant元素可以被转换为PDP实现所需的访问控制列表。
Application ID
应用程序ID是指自适应应用程序的唯一标识符。在元模型中,自适应应用程序由一个Process表示。
Intermediate Identifier (IntID)
一种标识符,它支持标识正在运行的posix进程并将其映射到已建模的AUTOSAR进程。
Adaptive Application Identity (AAID)
Adaptive应用程序的建模标识由AUTOSAR进程标识。
Adaptive Application Identifier
一个指向AAID的引用程序,即AUTOSAR进程,仅指向一个AAID。
Capability
capability是Adaptive应用程序身份的一个属性。对AUTOSAR资源(例如,服务接口)的访问仅在请求AA拥有该特定资源必须具备的所有功能的情况下才被授予。在定义Application Manifest时,开发者为每个应用分配对应的Capability。拥有对此资源所必须的所有功能时,才被允许访问(granted)。
身份和访问管理(IAM)的作用是确保只有合法授权的身份能够访问适当的资源。在AUTOSAR AP的场景下,身份指的是自适应应用程序或它们所在的主机,资源指的是AP内部的功能集群API所提供和开放的任何功能。更广义地说,IAM应该提供一个涵盖了流程、策略和技术的框架,通过身份验证和访问控制来管理身份和资源。
IAM的职责不仅限于访问控制,还包括身份验证、授权、安全性、合规性以及审计和报告等方面。通过管理身份和访问权限,IAM有助于提高AUTOSAR Adaptive平台的整体安全性,防止未经授权的访问,并在整个系统中执行安全策略。同时,IAM还可以帮助满足法规和合规要求,确保系统的服务和资源得到安全管理。
在 AUTOSAR Adaptive 标准中,身份和访问管理(IAM)解决了几个关键问题:
1. 身份验证:IAM 确保只有经过身份验证的用户或系统才能访问某些服务和资源。它在授予对 AUTOSAR Adaptive 平台资源的访问权限之前验证用户或服务的身份。
2. 授权:在身份验证之后,IAM 通过执行策略和检查权限来管理经过身份验证的用户或服务的操作权限。它根据用户角色和预定义规则控制对系统不同部分的访问。
3. 安全性:通过管理身份和访问权限,IAM 有助于提高 AUTOSAR Adaptive 平台的整体安全性。它有助于防止未经授权的访问,并可以在整个系统中执行安全策略。
4. 合规性:IAM 还可以通过确保对系统组件和服务的访问得到适当控制和监控,帮助满足法规和合规要求。
5. IAM 授权:IAM 使用授权来定义哪些用户或用户组可以访问 AUTOSAR Adaptive 平台内的某些资源,以及他们可以对这些资源执行哪些操作。
6. 审计和报告:IAM 解决方案通常提供审计访问和系统更改的功能,这对于安全审计和了解系统在任何给定时间的状态至关重要。
在 AUTOSAR Adaptive 的具体背景下,IAM 对于确保系统的服务和资源得到安全管理至关重要,尤其是在车辆变得更加互联和依赖软件的情况下。它对于应对现代汽车系统日益复杂的连接性要求和挑战至关重要。
IAM 就是做了一个访问权限的管理。一个客户端去访问一个服务,会先判别这个客户端是否有权限去访问这个服务在熟悉访问控制的流程之前,我们先重点了解这样几个核心概念:
策略决策点 (Policy Decision Point PDP):
策略决策点 (PDP) 是一个逻辑组件,它根据访问控制策略来决定应用是否被允许执行请求的操作。PDP 会根据请求者的身份信息、意图信息以及资源的访问控制策略,返回一个访问控制决策给策略执行点 (PEP)。
PDP 可以通过多种方式定义和实现访问控制策略,例如:
1.基于角色的访问控制 (RBAC)
2.基于属性的访问控制 (ABAC)
3.基于代码的访问控制
PDP 可以作为一个独立的服务存在,也可以作为一个边车与应用程序组件一起运行。
策略执行点 (Policy Enforcement Point PEP):
策略执行点 (PEP) 在应用提出请求时,会中断控制流,向 PDP 请求访问控制决策,并根据 PDP 返回的决策进行相应操作。PEP 的作用是在应用程序中拦截访问请求,并将请求的身份信息和意图信息发送给 PDP,以获取访问控制决策。
如果决策是允许,PEP 将请求转发给目标对象。
如果决策是拒绝,PEP 将返回一个错误信息给请求者。
PEP 可以存在于应用程序的任何地方,例如 API 网关、微服务、前端等,只要需要保护数据和资源,或者应用授权逻辑的地方。
Capability :
它是应用身份信息的一个属性。在定义 Application Manifest 时,开发者为每个应用分配对应的 Capability 。只有当发出请求的应用,拥有对此资源所必须的所有功能时,才被允许访问 (granted) 。
IAM处理流程如下:
IAM的核心组件包括策略执行点(PEP)和策略决策点(PDP)。PEP负责拦截并判断访问请求,而PDP则负责根据访问控制策略做出决策。当自适应应用程序(如Application “X”)提出资源访问请求时,PEP会中断控制流,并通过EM获取请求者的身份信息。然后,PEP将请求者的身份信息和请求参数传递给PDP。PDP根据应用的Capabilities(能力)是否充分来检查请求,并返回一个访问控制决策给PEP。PEP根据这个决策来执行访问控制,即允许或拒绝请求。
在IAM的处理流程中,获取应用的身份信息是一个关键步骤。这通常涉及进程间通信(IPC)机制,以及现代操作系统和平台软件提供的身份识别支持。EM模块根据模型信息创建自适应应用的运行实例,并负责追踪运行进程的属性,包括应用的进程标识符(PID)等。然后,EM将这些身份信息提供给PEP,以便PEP能够向PDP请求访问控制决策。
此过程涉及以下几个关键方面:
1. 进程间通信(IPC)
应用程序使用进程间通信机制发起请求,因此,相应的中间件(应用程序平台,AP)必须能够识别请求来源的应用。
2. 身份识别支持
现代操作系统及平台软件通常具备识别通信双方身份的能力,例如在Linux中可以使用`SO_PEERCRED`或`getpeerid()`,以及在QNX中的消息传递机制。
3. 执行管理(EM)模块
EM模块根据模型信息创建自适应应用的运行实例,并负责追踪运行进程的属性,包括应用的进程标识符(PID)。此外,这些身份属性还可以是分配的用户标识(UID)、密钥或UUID。
4. 身份信息提供
EM需要将请求资源的应用身份信息提供给PEP(如自适应应用标识AAID)。PEP作为自适应基础架构的一部分,必须与应用程序隔离,以确保安全。
5. 主体与对象
主体(Subject):是请求访问资源的对象,通常是系统中运行的进程或其一部分。
对象(Object):是主体希望控制或访问的资源,这可以是另一个进程(如服务A)或具体资源。
6. 能力(Capability)
在系统中,能力通过清单文件(manifest)定义。这个能力明确了哪些应用或服务可以访问特定资源,部署到系统时提供所需的权限配置。
Manifest文件编写思路
编写Manifest文件时,有两种常见策略:
1. 为每个服务或应用定义能力:直接指定哪些能力与哪些应用或服务相关联。
2. 为每项资源定义可访问的服务:明确哪些服务拥有访问特定资源的权利。
AUTOSAR AP中身份和访问管理(IAM)的主要目的是防止一个出错或被入侵的自适应应用程序访问那些不是由应用程序的设计者和集成者预期访问的服务或资源。
在自适应应用程序的设计阶段,预期的访问权限(称为意图Intent)被建模,并在部署阶段由集成者验证。这种访问权限可以通过访问矩阵表示,矩阵显示了主体对对象的访问权限:
主体(Subject):请求访问的实体,通常是系统中运行的进程(或进程的一部分)。
对象(Object):应被允许访问的实体(be granted),可以是另一个进程(或进程的一部分)或资源。
横向蓝色框所示,就是上文提到的Capability。需要通过manifest文件的方式部署到系统上。
编写这样的Application manifest文件,有两种方法:
为每一个服务或应用指定capabilities;
为每一个服务或资源,指定能够访问它们的服务。
IAM 为自适应应用引入了权限分离,并在发生攻击时防止权限提升。此外,IAM 使集成商能够在部署期间提前验证自适应应用请求的资源的访问权限。
访问权限的部署
关于访问权限的信息必须通过清单文件部署到系统中。有两种选择:
1. 为每个应用程序提供对象列表:即该应用程序作为主体的访问权限(意图)。
2. 为每个服务或资源提供访问列表:即所有有权访问该资源的主体列表。
在AUTOSAR自适应平台中,意图与自适应应用程序一起部署。主体的可访问对象列表通常是静态的,而对象的访问列表可能会随着新应用程序的部署而更新。
访问权限的执行
在运行的平台实例上,访问权限需要被执行。以下是执行过程的关键点(如图4.2):
应用程序B被允许访问服务A,因为B具备访问A的意图。
应用程序C没有访问服务A的意图,因此PEP必须阻止C对服务A的访问。
信息关于意图的存在由策略决策点(PDP)提供。PDP需要了解主体和对象的身份,以及它们之间的交互细节。
访问控制的逻辑结构
PDP:决定自适应应用程序是否被允许访问资源的实体。
PEP:执行PDP提供的访问控制决策的实体。为了限制对应用程序接口的访问,PEP需要被实现,以便在自适应应用程序请求访问时与PDP进行通信。
访问控制决策基于请求和应用程序的意图返回给PEP。所需的信息来自自适应应用程序的清单文件,其中定义了意图和策略。策略代表了适用于接口的规则,自适应应用程序必须满足这些条件才能获得访问权限。
安全性考虑
为了防止攻击者滥用访问模型,必须注意以下几点:
清单中的意图必须经过验证,攻击者在入侵后不应能更改应用程序的意图以获得更高的访问权限。
策略执行必须在主体之外进行,确保被攻击的应用程序无法绕过PEP。PEP不应在请求应用程序的进程上下文中执行。
当访问主体和资源位于不同的平台上时,每个平台都需维护自己的访问清单(manifest),这就导致了配置上的冗余。具体来说,当应用程序B试图访问应用程序A时,两个不同平台的PEP都需要对访问请求进行评估。然而,在以下情况下,这种冗余配置就显得必要:
应用B访问A:若B所在的平台允许其访问A,且A所在的平台也允许B,则访问成功。
应用C访问A:如果C在第一个平台的PEP已经拒绝其访问请求,但该平台可能缺乏IAM保障,这时第二个平台的PEP仍可以阻止C的访问。在此情况下,跨平台访问确保了对服务的安全控制。
因此,每个平台不仅需维护自身的manifest,还需有一个额外的manifest,包含有关跨平台访问和权限控制的信息。
通信管理的访问控制允许限制本地应用程序或远程主体(例如,远程ECU)请求访问的服务实例和元素。实施访问控制可以减少被入侵应用程序(在本地IAM情况下)或被入侵ECU(在远程IAM情况下)可能造成的潜在损害。
所有通信管理的访问权限都是通过ComGrant模型元素进行建模的。ComGrant可用于建模适用于机器本地进程或远程主体的访问权限。
访问控制的类型:本地访问控制和远程访问控制。
在配置IAM框架时,需要经历设计阶段、配置阶段和运行阶段。在设计阶段,主要目的是定义IAM的策略和结构,包括确定身份类型、资源分类、能力定义以及访问控制策略等。在配置阶段,需要实际设置IAM所需的控制和策略,包括配置显式IPC、部署配置文件以及确定环境变量等。在运行阶段,系统根据预先配置的IAM策略和权限来控制对资源的访问,包括验证身份、处理访问请求、执行决策以及监控和审计等活动。
在身份和访问管理(IAM)的设计阶段,主要目的是定义IAM的策略和结构,包括确定身份类型、资源分类、能力定义以及访问控制策略等。这个阶段包含以下几个关键步骤:
1) 定义身份
确定系统中使用的身份类型,例如自适应应用、宿主和用户等。这有助于明确哪个实体在访问哪些资源。
2) 资源分类
对需要受到保护的资源进行识别与分类,比如服务接口、API 及其功能。这为后续的访问控制提供了基础。
3) 授权设计的建模
在授权设计的建模过程中,涉及两个层次:
1. GrantDesign:在设计阶段预先定义授权的结构。每个授权都是针对特定进程的,这意味着即使是从同一可执行文件生成的进程,也可以拥有不同的授权。GrantDesign元类是设计层授权的基础,能够构建供特定进程使用的授权集合,从而确保系统中每个特定功能的获取与提供都建立在明确的安全性和设计意图之上。
2. Grant:在平台级别对授权的最终和实际规格的定义。Grant确保在执行时能够准确地实施预先设计的授权策略。
子类如ComOfferServiceGrantDesign进一步细化了授权的定义,确保在AUTOSAR自适应平台的通信过程中,特定服务的提供权限得到清晰的规定和管理。
4) 定义访问控制策略
在应用程序的manifest文件中定义访问控制策略和明确不同身份对资源的访问权限。这些策略将决定哪些应用程序可以访问哪些资源。
5) 设计访问控制模型:
选择适合的访问控制模型(如基于角色的访问控制RBAC或基于属性的访问控制ABAC)来实施策略。
在IAM的处理流程中,策略执行点(PEP)需要了解应用程序的身份,以便向策略决策点(PDP)请求访问决策。应用程序的资源请求通常通过进程间通信(IPC)来实现,因此中间件必须具备识别请求来源的能力。
为验证身份,现代操作系统和平台软件能够支持识别通信双方的ID。例如,Linux可以使用 `SO_PEERCRED`、`getpeerid()`,而QNX支持消息传递。
在授权设计的建模过程中,涉及两个层次:首先是GrantDesign,它在设计阶段预先定义授权的结构。每个授权都是针对特定进程的,这意味着即使是从同一可执行文件生成的进程,也可以拥有不同的授权。其次是Grant,它是在平台级别对授权的最终和实际规格的定义。
GrantDesign元类是设计层授权的基础,具有构建可供特定进程使用的授权集合的能力。在设计层次,授权结构得以明确定义,确保系统中每个特定功能的获取与提供都建立在明确的安全性和设计意图之上。
配置阶段涉及实际设置IAM所需的控制和策略,具体步骤包括:
配置显式IPC:
定义进程间通信(IPC),以确保本地或远程访问控制能够正常工作。
为了防止未经授权的实体访问通信服务,实施了本地IAM。本地IAM允许对特定资源进行特定的访问控制,使用以下ComGrants:
ComEventGrant:允许进程订阅服务接口的事件。
ComFieldGrant:允许进程获取/设置/通知服务接口的字段。
ComFindServiceGrant:允许进程查找服务。
ComMethodGrant:允许进程执行服务接口的方法。
ComOfferServiceGrant:允许进程请求提供服务实例。
部署配置文件
要使用本地IAM,第一步是配置显式IPC。然后为客户端/服务器实例配置ComGrants并启用本地IAM(参见第4.11.5节)。最后,部署配置的.bin文件和运行参数给arapipcd,如下所示:
"--use-iam"选项
iam__
参数“--use-iam”直接传递给正在运行的arapipcd守护进程。
rb-exmd负责传递此选项。iam__
确定环境变量:
设置环境变量(如`ECUCFG_ENV_VAR_ROOTFOLDER`),以便能够正确定位IAM配置文件。
Grants示例:
一个服务接口有两个事件,一个服务器实例和一个客户端实例。
interface CM_Event namespace etas.com {
event ev1 of uint_8
event ev2 of uint_8
}
在运行阶段,系统根据预先配置的IAM策略和权限来控制对资源的访问,包括验证身份、处理访问请求、执行决策以及监控和审计等活动。
验证身份:确保请求访问的应用程序或用户是经认证的。
访问请求:当应用程序尝试访问资源时,PEP(策略执行点)向PDP(策略决策点)发出请求,询问访问权限。
决策执行:PDP根据配置的策略和能力检查访问请求的合法性,并返回允许或拒绝访问的决策。
资源访问:根据PDP的决策,PEP执行相应的操作,允许或拒绝访问请求的资源。
监控和审计:监控访问活动,确保能够记录和审查操作,以识别潜在的安全问题或访问异常。
在上述的IAM处理流程中,为了向PDP策略决策点请求决策返回值,PEP策略执行点需要知道应用的身份,是谁在请求资源。应用作出请求都是通过进程间通信(Inter Process Communication)完成的,所以AP中间件需要支持能够识别出是哪个应用的请求的功能。
一般地,识别身份这个功能,和操作系统以及平台软件非常相关,大多数现代操作系统都支持识别通信双方的ID(例如SO_PEERCRED in Linux, getpeerid(),或者Message Passing in QNX)。
EM模块会根据arxml的信息,去创建Adaptive应用的运行实例,所以EM也需要去负责追踪运行进程的属性,也即正在运行的应用的PID。当然这个属性也可以是一个分配的UID,一个key,或者UUID。
EM需要给PEP提供提出资源访问请求的应用的身份信息。
PEP作为Adaptive Foundation实现,需要与应用做隔离。如果某一个应用就是想被请求的资源本身,那么PDP不能由这个应用来提供。
1. PDP和PEP的交互过程:
在访问控制决策过程中,PEP首先拦截自适应应用程序的资源访问请求。
PEP随后向PDP发送请求,包括请求者的身份信息和意图信息。
PDP根据访问控制策略检查请求者的Capabilities,并返回一个访问控制决策给PEP。
PEP根据PDP的决策执行相应的操作,允许或拒绝访问请求的资源。
2. PEP的作用:
PEP是策略执行点,负责在应用程序中拦截访问请求。
PEP将请求的身份信息和意图信息发送给PDP,以获取访问控制决策。
PEP根据PDP的决策执行访问控制,允许或拒绝访问请求。
3. PDP的作用:
PDP是策略决策点,负责根据访问控制策略做出决策。
PDP检查请求者的身份信息和意图信息,以及目标对象的访问控制策略。
PDP返回一个访问控制决策给PEP,决策结果决定了是否允许访问请求。
如何理解IAM中的“身份”和“资源”?
1. 身份:
身份是指自适应应用程序的一些属性,访问控制是根据这些属性来进行的。在远程IAM的情况下,身份也可以指远程ECU的一些属性,访问控制也是根据这些属性来进行的。
在AUTOSAR Adaptive平台的上下文中,身份指的是自适应应用程序或其宿主。
2. 资源:
资源是指属于IAM(身份和访问管理)范围的接口,如服务接口、加密密钥槽、加密证书等。
在AUTOSAR Adaptive平台的上下文中,资源指的是自适应平台中功能集群API所支持和公开的任何功能。
IAM中的身份进行访问控制的过程如下:
1. 身份识别:
当一个自适应应用程序(或远程ECU)尝试访问某个资源时,IAM首先需要识别该请求者的身份。这通常涉及进程间通信(IPC)机制,中间件能够识别请求来源的应用。
2. 获取身份信息:
策略执行点(PEP)会中断控制流,并通过执行管理(EM)模块获取请求者的身份信息。这些信息包括应用的进程标识符(PID)、用户标识(UID)、密钥或UUID等。
3. 请求访问控制决策:
PEP将请求者的身份信息以及请求参数传递给策略决策点(PDP)。PDP根据应用的Capabilities(能力)、意图信息以及资源的访问控制策略,来做出一个访问控制决策。
4. 执行决策:
PDP将访问控制决策返回给PEP。如果决策是允许,PEP将请求转发给目标资源;如果决策是拒绝,PEP将返回一个错误信息给请求者。
5. 能力检查:
在访问控制决策过程中,PDP会检查应用是否具有访问所请求资源所必需的所有能力(Capability)。这些能力在应用的清单文件(Manifest)中定义,并在部署阶段由集成者验证。
6. 意图匹配:
除了能力检查外,PDP还会检查应用的意图是否与所请求资源的访问控制策略相匹配。意图是应用的一种属性,表示应用请求的访问类型或对资源的操作。
7. 访问控制策略:
访问控制策略是针对调用的目标(如服务接口)制定的,用于说明访问这些接口需要具备哪些身份信息。这些策略在应用的清单文件中定义,并作为IAM框架的一部分来实施。
通过这一系列步骤,IAM能够根据自适应应用程序(或远程ECU)的身份进行访问控制,确保只有合法授权的身份能够访问适当的资源。
总的来说,IAM是AUTOSAR Adaptive平台中不可或缺的一部分,通过管理身份和访问权限来确保系统的安全性和合规性。随着车辆变得越来越互联和依赖软件,IAM的重要性也日益凸显。通过合理配置和有效实施IAM策略,可以显著提高AUTOSAR Adaptive平台的安全性和可靠性,确保在不断发展的汽车技术环境中保持数据和操作的安全。
[1] Specification of Manifest AUTOSAR AP R24-11
[2] Explanation of Identity and Access Management
[3] Requirements on Identity and Access Management
[4] ETAS RTA-VRTE UserGuide
-end-
本专栏是由汽车电子与软件打造的中立性技术科普专栏,将系统地阐述软件定义汽车下的关键挑战和工程实践。欢迎订阅本专栏!