您目前查看的是 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,請先安裝。例如:
- cd 至專案的根目錄。
- 執行:
npm install apigee-access --save
函式
apigee-access getVault() 函式用於擷取特定金庫,可依機構或 Node.js 程式碼目前執行的環境擷取。
getVault() 接受兩個參數:
- 要擷取的安全儲存庫名稱。
- 範圍,可能是
organization或environment。如未指定,系統會假設您使用的是organization。
getVault() 傳回的物件有兩個函式:
- getKeys(callback):傳回陣列,其中包含指定金庫中所有金鑰的名稱。回呼函式會使用兩個引數呼叫:如果作業失敗,則為錯誤;如果作業未失敗,則為「未定義」,而第二個引數則是實際陣列。
- get(key, callback):傳回與特定鍵相關聯的安全值。回呼函式會使用兩個引數呼叫:如果作業失敗,則為錯誤;如果作業未失敗,則為「未定義」,第二個引數則是實際值。
範例
以下 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 });