您正在查看的是 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
,您需要先安装它。例如:
- cd 到项目的根目录。
- 执行:
npm install apigee-access --save
函数
apigee-access getVault() 函数用于按组织检索特定保险柜,或根据运行 Node.js 代码的当前环境检索特定保险柜。
getVault() 采用两个参数:
- 要检索的安全存储的名称。
- 范围,可以是
organization
或environment
。如果未指定,则假定为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 });