使用安全存储区

您正在查看的是 Apigee Edge 文档。
转到 Apigee X 文档
信息

使用 Secure Store Service API

通过安全存储服务,您能够以加密格式存储敏感数据(例如后端服务的安全凭据),以防止未经授权的使用。这些安全存储区域称为“保险柜”,可以限定为 Apigee Edge 上的组织层级或环境层级。

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

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

如需查看有关安全存储区 API 的文档,请参阅保险柜。以下部分还简要介绍了如何使用 Secure Store 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”;如果操作失败,则显示“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
});