Apigee 应用服务 - 保护 /Users 集合中的敏感数据



我有一个用户集合存储在默认的应用服务/Users集合中。

开箱即用,要创建用户,您只需收集以下数据:

{
"username" : "john.doe",
"email" : "john.doe@gmail.com",
"name" : "John Doe",
"password" : "test1234"
}

姓名和电子邮件不是特别敏感(尽管仍然应该得到适当的保护),但如果我想包括地址、出生日期、母亲的婚前姓氏等,这些数据将变得更加敏感。

幸运的是/users未经身份验证就无法使用数据,但如果我请求access_token并登录。

当然,人们可以很容易地设计一个前端来掩盖敏感位,将其隐藏起来。但是查看底层端点,捕获我的access_token并向/{org}/{app}/users发出经过身份验证的GET请求并不需要太多时间,从而查看每个用户的所有个人信息。

是否可以通过角色和权限或所有权将实体的段限制为仅self(例如,登录用户可以访问其整个用户实体,但只能访问其他用户实体的有限段)。

如果没有,是否有其他方法来解决这种困境并保护用户对象中的敏感信息?

Remus,

除非删除或修改"默认"角色,否则无法使用另一个用户的令牌查看一个用户的数据。 所以没有什么可担心的。

此外,作为良好做法,您应该确保在标头中发送 oauth 令牌,而不是在查询字符串中发送(例如,不要执行 ?access_token='')。

我建议你将应用服务放在API服务(Apigee Gateway)后面,然后重写有效负载。

基本上(尽管这是一些额外的步骤,而不是我将能够放入简短的响应中)您将执行以下操作:

1) 在 API 服务中创建到 usergrid.com 目标的代理(https://api.usergrid.com/{yourorg}/{您的应用程序})

2) 创建/users 资源。

3) 使用 Javascript 标注仅包含要公开的元素重写有效负载,或者使用 ExtractVariables 策略拉取要公开的特定元素,并使用 AssignMessage 策略设置仅包含要公开的响应的新有效负载。

最新更新