使用安全存储区

您正在查看 Apigee Edge 文档。
转到 Apigee X 文档
info

使用安全存储区服务 API

借助安全存储区服务,您可以将敏感数据(例如 后端服务的安全凭据)以加密格式存储,以防止未经授权的使用。这些 安全存储区称为“保险库”,并且可以在 Apigee Edge 上限定为组织级或 环境级。

例如,安全存储区可用于存储 Node.js 应用访问受保护资源(例如数据库服务器)所需的密码。您可以在部署之前通过 API 将密码存储在安全存储区中,并且应用可以在运行时查找 该值。

这样一来,就不需要在源代码控制 系统中包含密码,也不需要将其与 Node.js 源代码一起部署到 Apigee Edge。相反,该值由 Apigee 以加密形式存储,并且仅在应用需要 时检索。

如需了解安全存储区 API 的文档,请参阅保险库。以下部分还概述了如何使用 安全存储区 API。

按 组织存储数据

每个 Apigee Edge 组织都有一组安全存储区,并且每个环境都有一个 额外的存储区。这样,对于具有不同后端安全要求的组织,可以存储不同的安全值。本部分介绍了如何按组织存储。

用法

  • 检索所有安全存储区的名称:
GET /o/{organization}/vaults
  • 从指定名称的保险柜中检索条目列表(但不检索其已加密值)。
GET /o/{organization}/vaults/{name}
  • 检索单个条目(但不检索其加密值)。

GET /o/{organization}/vaults/{name}/entries/{entryname}
  • 创建一个名为“name”的新保险库,其中不包含任何值:

POST /o/{organization}/vaults

{ "name": "{name}" }

curl https://api.enterprise.apigee.com/v1/o/testorg/vaults
  -H "Content-Type: application/json"
  -d '{"name": "test2" }' -X POST
  • 将新条目放入具有指定名称和安全值的保险柜中。

POST /o/{organization}/vaults/{vaultname}/entries

{ "name": "{entryname}", "value": "{securevalue}" }


curl https://api.enterprise.apigee.com/v1/o/testorg/vaults/test2/entries
  -H "Content-Type: application/json"
  -d '{"name": "value1", "value": "verysecret" }' -X POST
  • 将指定条目的值替换为新值:

PUT /o/{organization}/vaults/{vaultname}/entries/{entryname}

curl https://api.enterprise.apigee.com/v1/o/testorg/vaults/test2/entries/value1

  -d 'verymoresecret' -X PUT
  • 如果指定的值与存储区中已有的值匹配,则返回“true”,否则返回“false” 。在这两种情况下,都使用 HTTP 状态代码 200。这可用于验证 存储区的内容。请注意,存储后,没有 API 可以检索未加密的 值:

    POST /o/{organization}/vaults/{vaultname}/entries/{entryname}?action=verify
    
    curl https://api.enterprise.apigee.com/v1/o/testorg/vaults/test2/entries/value1?action=verify
      -d 'verymoresecret'  -X POST
  • 删除指定的保险库条目:
DELETE /o/{organization}/vaults/{vaultname}/entries/{entryname}
  • 删除整个保险库。

    DELETE /o/{organization}/vaults/{name}

按环境存储数据

您还可以按 Apigee Edge 环境存储数据。在这种情况下,数据限定为某个 环境(例如“prod”)。借助此功能,在运行时可以根据 Node.js 脚本的运行位置存储不同的值 。

用法

GET /o/{organization}/e/{env}/vaults

GET /o/{organization}/e/{env}/vaults/{name}

GET /o/{organization}/e/{env}/vaults/{name}/entries/{entryname}

POST /o/{organization}/e/{env}/vaults

POST /o/{organization}/e/{env}/vaults/{vaultname}/entries

PUT /o/{organization}/e/{env}/vaults/{vaultname}/entries/{entryname}

POST /o/{organization}/e/{env}/vaults/{vaultname}/entries/{entryname}?action=verify

DELETE /o/{organization}/e/{env}/vaults/{vaultname}/entries/{entryname}

DELETE /o/{organization}/e/{env}/vaults/{name}

在 Node.js 中从安全存储区检索值

安装 apigee-access

如需在 Node.js 代码中使用 apigee-access,您需要先安装它 。例如:

  1. cd 到项目的根目录。
  2. 执行:npm install apigee-access --save

函数

apigee-access getVault() 函数用于检索特定保险库,可以是按 组织检索,也可以根据 Node.js 代码运行的当前环境检索。

getVault() 接受以下两个参数:

  • 要检索的安全存储区的名称。
  • 范围,可以是 organizationenvironment。如果未 指定,则假定为 organization

getVault() 返回的对象具有两个函数:

  • getKeys(callback):返回一个数组,其中包含 指定保险库中所有键的名称。系统将使用两个实参调用回调函数:如果 操作失败,则为错误;如果操作未失败,则为“undefined”;第二个实参为实际数组。
  • get(key, callback):返回与特定 键关联的安全值。系统将使用两个实参调用回调函数:如果操作失败,则为错误; 如果操作未失败,则为“undefined”;第二个实参为实际值。

示例

以下 Node.js 示例演示了如何从保险库获取值。如前所述,此代码需要安装 apigee-access 模块才能正常运行。

var apigee = require('apigee-access');
   var orgVault = apigee.getVault('vault1', 'organization');
   orgVault.get('key1', function(err, secretValue) {
   // use the secret value here
});