使用安全存放區

您正在查看 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,您必須先安裝。例如:

  1. cd 加入專案的根目錄。
  2. 執行:npm install apigee-access --save

函式

apigee-access getVault() 函式可用來擷取特定保管箱,不論是每個機構或目前執行 Node.js 程式碼的環境。

getVault() 使用兩個參數:

  • 要擷取的安全儲存庫名稱。
  • 範圍,可以是 organizationenvironment。如未指定,系統會採用 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
});