您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件。 資訊
使用安全儲存服務 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。這可用於驗證商店的內容。請注意,儲存後即無法擷取未加密的值:
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, 回呼):傳回與特定金鑰相關聯的安全值。系統將使用兩個引數呼叫回呼函式:如果作業失敗會發生錯誤;如果沒有,則為「未定義」;如果沒有,則會使用實際值做為第二個引數。
示例
以下 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 });