移动应用程序是否可以使用TrueVault来存储JSON数据而无需使用"中间人"服务器?

时间:2015-02-09 01:50:12

标签: truevault

我一直在https://docs.truevault.com/阅读文档,但我有点困惑。我在真正的保险库网站上看到了这个:

  

如果您计划 使用任何服务器端库,请确保   您使用的任何托管环境都符合HIPAA标准。

我认为这意味着TrueValut可以支持独立(仅客户端)移动应用程序架构。 TrueVault API是唯一的服务器端交互。

但是我对文档的理解是:

  1. 注册新用户需要API_KEY
  2. 任何API_KEY都可以完全访问存储在TrueVault中的所有数据保险库和JSON文档。
  3. 如果这两个假设都是正确的,则意味着无法直接从客户端应用程序注册新用户,迫使我使用昂贵且资源密集的HIPPA赞美Web服务器。解决这个问题的唯一方法是将API_KEY放入应用程序中的顶级硬编码,如果API_KEY可以访问我的所有TrueVault数据,那么显然不行。

    对于我的用例,我对TrueVault有以下要求,以便能够考虑使用它(我想这些要求对于那些希望开发仅客户端医疗应用程序的人来说是相同的):

    1. 用户可以直接从我的客户端应用程序通过API注册,无需任何敏感密钥或根身份验证数据。
    2. 用户只能使用他们提供的数据进行身份验证(用户名/电子邮件/密码)。我的应用程序是多平台我无法让他们记住他们的API密钥登录。
    3. 用户可以读取/写入/更新/删除链接到其个人资料的数据。他们无法使用其凭据访问其他用户的任何数据。
    4. TrueVault能够满足这三个基本要求吗?

      如果答案是"否"我建议你在你的网站上更新这个文本,因为没有任何可行的HIPPA赞美应用程序,TrueVault可以支持,而没有独立的服务器端接口。

2 个答案:

答案 0 :(得分:0)

我目前正在使用AWS Lambda作为解决方案。 Lambda符合HIPPA标准,更多信息hereLambda也是一种低成本解决方案。

以下是我使用Node.js在Lambda上运行的代码示例。

var request = require('request-promise');
var _ = require('lodash');

function encodeBase64(str) {
  return (new Buffer(str)).toString('base64');
}

var baseUrl = 'https://api.truevault.com/v1/';
var headers = {
  'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'
};
var req = request.defaults({
  baseUrl: baseUrl,
  headers: _.extend({
    Authorization: 'Basic  ' + encodeBase64('your api key:')
  }, headers),
  transform: function(body) {
    return JSON.parse(body);
  }
});

exports.handler = function(event, context) {
  req.post('users', {
    form: {
      username: event.email,
      password: event.password,
      attributes: encodeBase64(JSON.stringify({
        name: event.name
      }))
    }
  }).then(function() {
    context.succeed({user: user});
  }).catch(context.fail);
}

答案 1 :(得分:0)

一般来说,您是对的 - 如果您在用户和 TrueVault 之间包含零服务器端处理,那么 API 密钥将是公开的。至少,我不知道有什么办法可以避免这种情况。

话虽如此,跳转到“任何 API_KEY 都提供对存储在 TrueVault 中的所有数据保险库和 JSON 文档的完全访问权限”是不正确的。 - 如果设置正确,情况并非如此。

TrueVault API 密钥的范围可以缩小很多。将密钥限制为仅对 {Vault#1} 具有写入权限,第二个密钥仅对 {Vault#2} 具有读取权限,第三个密钥允许在 {Vault#1} 中上传博客,相当多的变体,用于从 {Vault#2} 中删除信息,并根据需要进行。您还可以专门限制对 API 密钥“拥有”的内容的权限(例如用户特定的密钥)Full documentation here.

还有有限的范围键(设置到期时间、使用次数、限制任何先前的权限范围)。 Docs here.

TrueVault 还提供独立于 API 密钥的用户登录,如果您的用户使用登录凭据,这可能更适合。 Docs here.

我仍然想自己弄清楚 TrueVault(至少在撰写本文时),因此请务必根据您的需求进行更多研究和审查。如果有限的范围对我的需求来说“足够好”,我仍然感到困惑 - 我倾向于使用 AWS Lambda(或类似的)作为符合 HIPAA 的中间人,如果只是为了更好地隐藏我的访问令牌生成并隐藏它我的数据将转到 TrueVault 并添加一些“无服务器服务器端”数据验证。