Azure 儲存體 會加密儲存帳號中所有資料的靜態狀態。 預設情況下,佇列儲存與資料表儲存使用一個對服務有作用範圍且由 Microsoft 管理的金鑰。 你也可以選擇使用客戶管理的金鑰來加密佇列或資料表資料。 若要將客戶管理的金鑰用於佇列和資料表,您必須先建立一個儲存體帳戶,該帳戶使用的加密金鑰範圍限定於帳戶,而非服務。 當你建立一個使用帳號加密金鑰作為佇列和資料表資料的帳號後,你可以為該儲存帳號設定由客戶管理的金鑰。
本文說明如何建立一個依賴於該帳戶範圍的金鑰的儲存帳號。 帳號剛建立時,Microsoft 會使用帳號金鑰來加密帳號內的資料,而 Microsoft 則負責管理金鑰。 接著你可以為帳戶設定由客戶管理的金鑰,以利用這些好處,包括提供自己的金鑰、更新金鑰版本、輪替金鑰以及撤銷存取控制。
建立一個使用帳號加密金鑰的帳號
你必須在建立儲存帳號時,設定新的儲存帳號,使用帳號的加密金鑰來管理佇列和資料表。 帳號建立後,加密金鑰的範圍無法更改。
儲存帳號必須屬於一般用途 v2 型。 你可以透過 Azure 入口網站、PowerShell、Azure CLI 或 Azure Resource Manager 範本,建立儲存帳號並設定它依賴帳號加密金鑰。
想了解更多關於建立儲存帳戶的資訊,請參閱 建立儲存帳戶。
Note
只有佇列與表儲存空間可選擇性地設定,在儲存帳號建立時使用帳號加密金鑰加密資料。 blob storage 和 Azure 檔案儲存體 總是使用帳號加密金鑰來加密資料。
要建立依賴帳號加密金鑰的 Azure 入口網站儲存帳號,請依照以下步驟操作:
在 Azure 入口網站頂端的搜尋框中,搜尋並選擇「儲存帳號」。
在 儲存帳戶 頁面,選擇 新建。
請在 基礎 標籤中填寫欄位。
在進階標籤中,找到 「資料表與佇列 」區塊,選擇 啟用客戶管理金鑰支援。
要使用 PowerShell 建立依賴帳號加密金鑰的儲存帳號,請確保你安裝了 Azure PowerShell 模組,版本為 3.4.0 或更新版本。 欲了解更多資訊,請參閱 安裝 Azure PowerShell 模組。
接著,透過呼叫 New-AzStorageAccount 指令建立一個通用的 v2 儲存帳號,並附上適當的參數:
- 加入
-EncryptionKeyTypeForQueue 這個選項,並將其值設為 以 Account 使用帳號加密金鑰來加密佇列儲存中的資料。
- 包含
-EncryptionKeyTypeForTable 這個選項,並將其值設為 , Account 以便使用帳號加密金鑰來加密資料表儲存。
以下範例展示了如何建立一個通用的 v2 儲存帳號,該帳號設定為可讀存取地理冗餘儲存(RA-GRS),並利用帳號加密金鑰加密佇列與資料表儲存的資料。 請記得將括弧中的預留位置值取代為您自己的值:
New-AzStorageAccount -ResourceGroupName <resource_group> `
-AccountName <storage-account> `
-Location <location> `
-SkuName "Standard_RAGRS" `
-Kind StorageV2 `
-EncryptionKeyTypeForTable Account `
-EncryptionKeyTypeForQueue Account
要使用 Azure CLI 建立依賴帳號加密金鑰的儲存帳號,請確保你安裝的是 Azure CLI 2.0.80 或更新版本。 更多資訊請參見 安裝 Azure CLI。
接著,透過呼叫 az storage account create 指令,並設定適當的參數,建立一個通用的 v2 儲存帳號:
- 加入
--encryption-key-type-for-queue 這個選項,並將其值設為 以 Account 使用帳號加密金鑰來加密佇列儲存中的資料。
- 包含
--encryption-key-type-for-table 這個選項,並將其值設為 , Account 以便使用帳號加密金鑰來加密資料表儲存。
以下範例展示了如何建立一個通用的 v2 儲存帳號,該帳號設定為可讀存取地理冗餘儲存(RA-GRS),並利用帳號加密金鑰加密佇列與資料表儲存的資料。 請記得將括弧中的預留位置值取代為您自己的值:
az storage account create \
--name <storage-account> \
--resource-group <resource-group> \
--location <location> \
--sku Standard_RAGRS \
--kind StorageV2 \
--encryption-key-type-for-table Account \
--encryption-key-type-for-queue Account
以下 JSON 範例建立一個通用的 v2 儲存帳號,該帳號配置為可讀存取地理冗餘儲存(RA-GRS),並利用帳號加密金鑰加密隊列與表格儲存的資料。 記得用你自己的值替換角括號中的佔位值:
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2019-06-01",
"name": "[parameters('<storage-account>')]",
"location": "[parameters('<location>')]",
"dependsOn": [],
"tags": {},
"sku": {
"name": "[parameters('Standard_RAGRS')]"
},
"kind": "[parameters('StorageV2')]",
"properties": {
"accessTier": "[parameters('<accessTier>')]",
"supportsHttpsTrafficOnly": "[parameters('supportsHttpsTrafficOnly')]",
"largeFileSharesState": "[parameters('<largeFileSharesState>')]",
"encryption": {
"services": {
"queue": {
"keyType": "Account"
},
"table": {
"keyType": "Account"
}
},
"keySource": "Microsoft.Storage"
}
}
}
],
當你建立依賴該帳戶加密金鑰的帳號後,你可以設定客戶管理的金鑰,這些金鑰會儲存在 Azure Key Vault 或 金鑰保存庫 受管硬體安全模型(HSM)中。 欲了解如何將客戶管理的金鑰儲存在金鑰庫中,請參見「配置以客戶管理金鑰儲存在 Azure Key Vault 的加密」。 欲了解如何在託管 HSM 中儲存客戶管理金鑰,請參閱「配置以客戶管理金鑰儲存在 Azure Key Vault 的加密」。
驗證帳號加密金鑰
建立帳號後,你可以透過 Azure 入口網站、PowerShell 或 Azure CLI 驗證儲存帳號是否使用了針對該帳號的加密金鑰。
要驗證儲存帳戶中的服務是否使用與 Azure 入口網站相關的加密金鑰,請遵循以下步驟:
在 Azure 入口網站 中流覽至您的新儲存體帳戶。
在 「安全+網路」 區塊,選擇 加密。
如果儲存帳號是為了依賴帳號加密金鑰而建立,你會在「加密」分頁看到,客戶管理金鑰可以啟用於所有四項 Azure 儲存體 服務:blob、檔案、資料表和佇列。
要驗證儲存帳號中的服務是否使用帳號加密金鑰,使用 PowerShell,請呼叫 Get-AzStorageAccount 指令。 此指令回傳一組儲存帳戶屬性及其值。 在 Encryption 屬性中尋找每個服務的 KeyType 欄位,並確認其值是否設為 Account。
$account = Get-AzStorageAccount -ResourceGroupName <resource-group> `
-StorageAccountName <storage-account>
$account.Encryption.Services.Queue
$account.Encryption.Services.Table
要驗證儲存帳號中的服務是否使用Azure CLI的帳號加密金鑰,請呼叫az storage account show指令。 此指令回傳一組儲存帳戶屬性及其值。 在加密屬性中尋找 keyType 每個服務的欄位,並確認它是否設定為 Account。
az storage account show \
--name <storage-account> \
--resource-group <resource-group>
在您確認儲存體帳戶使用的是範圍限定為該帳戶的加密金鑰之後,即可為該帳戶啟用客戶管理的金鑰。 所有四個 Azure 儲存體 服務——blobs、檔案、表格和佇列——都將使用由客戶管理的金鑰進行加密。
價格和計費
若儲存體帳戶建立時是為了使用帳戶範圍的加密金鑰,則其資料表儲存體容量和交易的計費費率,會與使用預設服務範圍金鑰的帳戶不同。 詳情請參閱 Azure 資料表儲存體 價格。
下一步