Apigee App Services - 保护/ Users集合中的敏感数据

时间:2014-01-23 01:30:40

标签: api security apigee

我有一组存储在默认App Services /Users集合中的用户。

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

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

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

幸运的是,/users数据在没有身份验证的情况下无法使用,但是如果我请求access_token并登录则是这样。

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

是否可以通过roles and permissions或所有权将实体的细分仅限制为self(例如,登录的用户可以访问其整个用户实体,但只限于其他用户实体的有限部分。)

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

2 个答案:

答案 0 :(得分:2)

瑞摩斯,

除非您删除或修改“默认”角色,否则您无法使用其他用户的令牌查看一个用户的数据。所以没什么值得担心的。

另外,作为一个好的做法,你应该确保你在标题中而不是在查询字符串中发送oauth标记(例如,不要做?access_token =''。

答案 1 :(得分:1)

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

基本上(虽然这是一个额外的步骤,而不是我能够做出简短的回应),你会做以下事情:

1)在API服务中为您的usergrid.com目标创建代理(https://api.usergrid.com/ {yourorg} / {your app})

2)创建/ users资源。

3)使用Javascript callout仅使用您要公开的元素重写有效负载,或者使用ExtractVariables策略来提取您要公开的特定元素,并使用AssignMessage策略设置新的Payload,仅使用您的响应想曝光。