使用安全存放區

您目前查看的是 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,請先安裝。例如:

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

函式

apigee-access getVault() 函式用於擷取特定金庫,可依機構或 Node.js 程式碼目前執行的環境擷取。

getVault() 接受兩個參數:

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