Identity and Access Management身份认证管理模块 -- Adaptive Platform IAM

作为车载软件中很关键的一部分,信息安全和功能安全一样,需要从系统层面开始分解,而针对于基于AP开发的应用来说,和Security最相关的模块就是ara:iam(下文简称IAM)。

试想一下这样的场景...

我们在车辆当中部署了娱乐系统,它运行的应用需要联网获取信息,由于联网应用暴露在互联网中,风险很高,我们绝不允许让它调用任何车辆运行相关的功能。

一旦娱乐系统应用被黑客入侵并取得控制,Adaptive AUTOSAR软件需要防止任何来自娱乐系统希望进行关键功能(例如刹车等)服务。

IAM

IAM为应用提供权限隔离以及受攻击时权限越级的保护功能,同时,IAM模块还能方便集成人员在部署时就能验证应用对于资源的访问权限。

总的来说,IAM可以控制对于Service,Fundation FC以及相关模型资源的访问控制。

IAM框架功能职责

开发者可以利用IAM为Adaptive Application创建模型,对资源访问请求提供访问控制决策(Access Control Decisions)功能,进行访问控制。

访问控制决策以布尔值代表请求的操作是否被允许,判断依据则与调用者以及访问控制策略(Access Control Policy)有关。而这个策略,也即一些约束条件。

对于CPU或者RAM的系统资源请求的控制,并不属于IAM模块的职责范围。

运行时,只有当请求被拒绝而且调用通知函数时,IAM和应用有交互,其他时间,IAM对于应用都是透明的。

IAM框架及流程

PEP和PDP是访问控制系统中的两个重要组件,它们分别代表了策略执行点和策略决策点。

PEP(Policy Enforcement Point)策略执行点

PEP的作用是在应用程序中拦截访问请求,并将请求的身份信息和意图信息发送给PDP,以获取一个访问控制决策。

如果决策是允许,PEP将请求转发给目标对象;

如果决策是拒绝,PEP将返回一个错误信息给请求者。

PEP可以存在于应用程序的任何地方,例如API网关,微服务,前端等,只要需要保护数据和资源,或者应用授权逻辑的地方。

PDP(Policy Decision Point)策略决策点

策略决策点(PDP)是一个决定是否允许资源访问的逻辑,它根据请求者的身份信息和意图信息,以及资源的访问控制策略,返回一个访问控制决策给PEP。

PDP可以使用不同的方式来定义和实现访问控制策略,例如基于角色的访问控制,基于属性的访问控制,或者基于代码的访问控制。

PDP可以存在于一个单独的服务中,也可以作为一个边车与应用程序组件一起运行。

PEPPDP的区别

PEP和PDP的区别在于,PEP是访问控制的执行者,而PDP是访问控制的决策者。PEP依赖于PDP提供的访问控制决策,而不是自己做出决策。这样可以保证访问控制的一致性和可靠性。PEP和PDP之间的通信可以使用不同的协议和格式,例如REST API,SOAP,XACML等。

在熟悉访问控制的流程之前,我们先了解这样几个概念:

  • Policy Decision Point (PDP):PDP基于访问控制策略来决定应用是否被允许执行请求动作。
  • Policy Enforcement Point (PEP):在应用提出请求时,PEP中断控制流,向PDP请求访问控制决策并根据决策返回的布尔值进行对应操作。
  • Capability:它是应用身份信息的一个属性。在定义Application Manifest时,开发者为每个应用分配对应的Capability。只有当发出请求的应用,拥有对此资源所必须的所有功能时,才被允许访问(granted)。(注:20-11规范中叫做Intent)

IAM处理流程如下:

  1. Adaptive Application (AA) 提出资源访问请求 (例如 Service Interface).
  2. PEP 中断控制流
  3. PEP 通过EM得到发来请求的身份信息
  4. PEP 将请求者身份信息以及请求参数给到PDP
  5. PDP 检查应用的Capabilities是否充分,并返回访问控制决策返回值给PEP
  6. PEP根据返回值,执行拒绝或允许操作

Grant Design 与 Capability

如上图:

subject 是指想要访问某项资源的主体,一般来说,它是系统上运行的进程(或进程的一部分)。object 是指访问主体可以寻求控制的资源(be granted),它可以是另外一个进程(或进程的一部分),也可以是某一具体资源。

而横向蓝色框所示,就是上文提到的Capability。需要通过manifest文件的方式部署到系统上。

编写这样的manifest文件,有两种思路:

  1. 为每一个服务或应用指定capabilities;
  2. 或者是为每一个服务或资源,指定能够访问他们的服务。

基于上图的矩阵,B可以访问A,但是C就不行。

再考虑一种情况,访问主体和资源不在一个platform:

那么一次访问需要用到两次PEP(也即每个platform都要维护一个manifest),对于B访问A,两次PEP都允许,PEP看起来是冗余配置。但是对于C来说就不一样,C访问A时,左方的情况是C在第一次PEP起作用时就被拒绝了,但是由于C所在的平台当中可能没有PEP(IAM),那么平台1中的PEP仍然能起作用,拒绝访问。

由于跨平台,每个平台除了维护自己的manifest以外,还需要维护一个manifest,拥有部署到各个platform的权限控制信息。

获取应用身份信息

在上述的IAM处理流程中,为了向PDP策略决策点请求决策返回值,PEP策略执行点需要知道应用的身份,是谁在请求资源。

应用作出请求都是通过进程间通信(Inter Process Communication)完成的,所以中间件(也即AP),需要支持能够识别出是哪个应用的请求的功能。

一般地,识别身份这个功能,和操作系统以及平台软件非常相关,大多数现代操作系统都支持识别通信双方的ID(例如SO_PEERCRED in Linux, getpeerid(),或者Message Passing in QNX)。

EM模块会根据模型信息,去创建Adaptive应用的运行实例,所以EM也需要去负责追踪运行进程的属性,也即正在运行的应用的PID。当然这个属性也可以是一个分配的UID,一个key,或者UUID。

EM需要给PEP提供提出资源访问请求的应用的身份信息。PEP作为Adaptive Fundation实现,需要与应用做隔离。如果某一个应用就是想被请求的资源本身,那么PDP不能由这个应用来提供。

PDP的实现

PDP策略决策点提供接口以运行策略,决策结果基于Application Manifest中定义的应用capabilities。Capabilities是针对于资源级别的(resource-centric)。

IAM框架不推荐,也不支持找到FC的单一函数方法。

PDP策略决策点会基于应用对资源需求的capabilities的参考进行策略决定。

举例来说,可以为应用指定一个和加密API相关的capabilities,将应用设定为某一密钥的拥有者(Key Owner),那么此应用就被允许修改对应的密钥。

IAM的实现以及使用方法

下方列表展示了FC实现以及系统设计者,在使用IAM时需要遵从的操作步骤及顺序T。更多信息可以参考 AUTOSAR_EXP_FCDesignIdentityAndAccessManagement.pdf . (此文档仅作示例参考)

准备步骤 (设计期间):

  1. 应用应当被设计/配置有capabilities以访问特定资源的属性,只能看到特定的服务接口
  2. 为了能做认证,部署的应用要做密码签名
  3. 应用部署时,同时需要有包含capabilities的execution manifest
  4. Execution manifest文件也包含Application ID,有多少实例会实例化出来,以及这些实例的instance ID信息。
  5. FC根据PEP实现执行逻辑
  6. 部署FC时还有策略信息,描述了访问特定服务接口需要哪些capabilities

使用操作说明 (运行时):

  1. 在Adaptive Platform启动期间,EMO会提供Application(instance) ID和进程ID之间的对照表
  2. 当应用请求一个配置了访问控制的服务时,它应当是认证过的应用,这样才能去参考它配置的capabilities
  3. PEP策略执行点向实现PDP的进程进行询问请求(也有可能在同一进程中)
  4. PDP策略决策点查找对应的Application ID和相关capabilities,然后和FC中保存的策略做对比
  5. PDP策略决策点向PEP发送访问控制决策的结果(yes/no)
  6. PEP根据访问控制决策执行(放行或拒绝)

总结以上步骤,需要考虑以下信息:

FC实现者需要:

  • 在service manifest中提供以下规则:
  1. 访问特定服务需要哪些capabilities(单个或多个的组合)
  • 实现逻辑以向实现了PDP的进程进行询问
  • 实现逻辑以按照收到的访问控制决策执行

应用开发者需要:

  • 配置访问服务所需的capabilities
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值