加密範圍可讓您管理個別 Blob 或容器層級的加密。 您可以使用加密範圍,在位於相同儲存體帳戶但屬於不同客戶的資料之間建立安全界限。 如需加密範圍的詳細資訊,請參閱 Blob 儲存體的加密範圍。
您可以建立受到 Microsoft 管理的金鑰或客戶自控金鑰 (儲存在 Azure Key Vault 或 Azure Key Vault 受控硬體安全性模型 (HSM))保護的加密範圍。 若要使用客戶自控金鑰建立加密範圍,您必須先建立金鑰保存庫或受控 HSM,並新增您想要用於此範圍領域的金鑰。 金鑰保存庫或受控 HSM 必須啟用清除保護。
加密範圍會在您建立時自動啟用。 建立加密範圍之後,您可以在建立 Blob 時指定加密範圍。 您也可以在建立容器時指定預設加密範圍,此容器會自動套用至容器中的所有 Blob。
若要在 Azure 入口網站中建立加密範圍,請遵循下列步驟:
瀏覽至您的儲存體帳戶。
在 [安全性 + 網路] 下,選取 [加密]。
選取 [加密範圍] 索引標籤。
按一下 [新增] 按鈕來新增新的加密範圍。
在 [建立加密範圍] 窗格中,輸入新範圍的名稱。
選取所需的加密金鑰支援類型,也就是Microsoft 管理的金鑰或客戶自控金鑰。
- 如果您選取了 Microsoft 管理的金鑰,請按一下 [建立] 以建立加密範圍。
- 如果您選取了 [客戶自控金鑰],請選取訂用帳戶,並指定要用於此加密範圍的金鑰保存庫和金鑰。 如果所需的金鑰保存庫位於不同的區域中,請選取 [輸入金鑰 URI],然後指定金鑰 URI。
如果儲存體帳戶的基礎結構加密已經啟用,那麼新的加密範圍也會自動啟用基礎結構加密。 若未啟用,您可以選擇是否針對該加密範圍啟用基礎結構加密。
若要使用 PowerShell 建立加密範圍,請安裝 Az.Storage PowerShell 模組 3.4.0 版或更新版本。
建立 Microsoft 管理金鑰保護的加密範圍
若要建立受 Microsoft 管理金鑰保護的加密範圍,請使用 -StorageEncryption
參數呼叫 New-AzStorageEncryptionScope 命令。
如果儲存體帳戶的基礎結構加密已經啟用,那麼新的加密範圍也會自動啟用基礎結構加密。 若未啟用,您可以選擇是否針對該加密範圍啟用基礎結構加密。 若要建立已啟用基礎結構加密的新範圍,請包含 -RequireInfrastructureEncryption
參數。
請記得用您自己的值來取代預留位置的值:
$rgName = "<resource-group>"
$accountName = "<storage-account>"
$scopeName = "<encryption-scope>"
New-AzStorageEncryptionScope -ResourceGroupName $rgName `
-StorageAccountName $accountName `
-EncryptionScopeName $scopeName1 `
-StorageEncryption
在相同的租用戶中建立受客戶自控金鑰保護的加密範圍
若要建立受客戶自控金鑰保護的加密範圍,而該金鑰儲存所在的金鑰保存庫或受控 HSM 位於與儲存體帳戶相同的租用戶中,請先為儲存體帳戶設定客戶自控金鑰。 您必須將受控識別指派給有權存取金鑰保存庫的儲存體帳戶。 受控識別可以是使用者指派的受控識別或系統指派的受控識別。 若要深入了解如何設定客戶自控金鑰,請參閱在相同租用戶中為現有儲存體帳戶設定客戶自控金鑰。
若要為受控識別授與存取金鑰保存庫的權限,請為 Key Vault 密碼編譯服務加密使用者角色指派受控識別。
若要設定用於加密範圍的客戶自控金鑰,您必須在金鑰保存庫或受控 HSM 上啟用清除保護。
下列範例說明何使用系統指派的受控識別來設定加密範圍。 請記得用您自己的值來取代預留位置的值:
$rgName = "<resource-group>"
$accountName = "<storage-account>"
$keyVaultName = "<key-vault>"
$scopeName = "<encryption-scope>"
# Assign a system-assigned managed identity to the storage account.
$storageAccount = Set-AzStorageAccount -ResourceGroupName $rgName `
-Name $accountName `
-AssignIdentity
# Assign the necessary permissions to the managed identity
# so that it can access the key vault.
$principalId = $storageAccount.Identity.PrincipalId
$keyVault = Get-AzKeyVault $keyVaultName
New-AzRoleAssignment -ObjectId $storageAccount.Identity.PrincipalId `
-RoleDefinitionName "Key Vault Crypto Service Encryption User" `
-Scope $keyVault.ResourceId
接下來,使用 -KeyvaultEncryption
參數呼叫 New-AzStorageEncryptionScope 命令,並指定金鑰 URI。 您可選擇是否在金鑰 URI 附上金鑰版本。 如果您省略金鑰版本,則加密範圍會自動使用最新的金鑰版本。 如果您附上金鑰版本,則必須手動更新金鑰版本來使用不同的版本。
金鑰 URI 的格式類似下列範例,可從金鑰保存庫的 VaultUri 屬性和金鑰名稱建構:
# Without the key version
https://<key-vault>.vault.azure.net/keys/<key>
# With the key version
https://<key-vault>.vault.azure.net/keys/<key>/<version>
如果儲存體帳戶的基礎結構加密已經啟用,那麼新的加密範圍也會自動啟用基礎結構加密。 若未啟用,您可以選擇是否針對該加密範圍啟用基礎結構加密。 若要建立已啟用基礎結構加密的新範圍,請包含 -RequireInfrastructureEncryption
參數。
請記得用您自己的值來取代預留位置的值:
$keyUri = $keyVault.VaultUri + "keys/" + $keyName
New-AzStorageEncryptionScope -ResourceGroupName $rgName `
-StorageAccountName $accountName `
-EncryptionScopeName $scopeName `
-KeyUri $keyUri `
-KeyvaultEncryption
在不同的租用戶中建立受客戶自控金鑰保護的加密範圍
若要建立受客戶自控金鑰保護的加密範圍,而該金鑰儲存所在的金鑰保存庫或受控 HSM 位於與儲存體帳戶不同的租用戶中,請先為儲存體帳戶設定客戶自控金鑰。 您必須為儲存體帳戶設定使用者指派的受控識別,且該識別必須有權存取其他租用戶中的金鑰保存庫。 若要深入了解如何設定跨租用戶客戶自控金鑰,請參閱為現有的儲存體帳戶設定跨租用戶客戶自控金鑰。
若要設定用於加密範圍的客戶自控金鑰,您必須在金鑰保存庫或受控 HSM 上啟用清除保護。
為儲存體帳戶設定跨租用戶客戶自控金鑰之後,您可以在某個租用戶中的儲存體帳戶上建立加密範圍,而該租用戶的範圍須限定為另一個租用戶中的金鑰保存庫所含的金鑰。 您將需要金鑰 URI,以建立跨租用戶加密範圍。
請記得用您自己的值來取代預留位置的值:
$rgName = "<resource-group>"
$accountName = "<storage-account>"
$scopeName = "<encryption-scope>"
# Construct the key URI from the key vault URI and key name.
$keyUri = $kvUri + "keys/" + $keyName
New-AzStorageEncryptionScope -ResourceGroupName $rgName `
-StorageAccountName $accountName `
-EncryptionScopeName $scopeName `
-KeyUri $keyUri `
-KeyvaultEncryption
若要使用 Azure CLI 建立加密範圍,請先安裝 Azure CLI 2.20.0 版或更新版本。
建立 Microsoft 管理金鑰保護的加密範圍
若要建立受 Microsoft 管理金鑰保護的加密範圍,請呼叫 az storage account encryption-scope create 命令 (將 --key-source
參數指定為 Microsoft.Storage
)。
如果儲存體帳戶的基礎結構加密已經啟用,那麼新的加密範圍也會自動啟用基礎結構加密。 若未啟用,您可以選擇是否針對該加密範圍啟用基礎結構加密。 若要建立已啟用基礎結構加密的新範圍,請包含 --require-infrastructure-encryption
參數並將其值設為true
。
請記得以您自己的值取代預留位置值:
az storage account encryption-scope create \
--resource-group <resource-group> \
--account-name <storage-account> \
--name <encryption-scope> \
--key-source Microsoft.Storage
在相同的租用戶中建立受客戶自控金鑰保護的加密範圍
若要建立受客戶自控金鑰保護的加密範圍,而該金鑰儲存所在的金鑰保存庫或受控 HSM 位於與儲存體帳戶相同的租用戶中,請先為儲存體帳戶設定客戶自控金鑰。 您必須將受控識別指派給有權存取金鑰保存庫的儲存體帳戶。 受控識別可以是使用者指派的受控識別或系統指派的受控識別。 若要深入了解如何設定客戶自控金鑰,請參閱在相同租用戶中為現有儲存體帳戶設定客戶自控金鑰。
若要為受控識別授與存取金鑰保存庫的權限,請為 Key Vault 密碼編譯服務加密使用者角色指派受控識別。
若要設定用於加密範圍的客戶自控金鑰,您必須在金鑰保存庫或受控 HSM 上啟用清除保護。
下列範例說明何使用系統指派的受控識別來設定加密範圍。 請記得用您自己的值來取代預留位置的值:
az storage account update \
--name <storage-account> \
--resource-group <resource_group> \
--assign-identity
principalId=$(az storage account show --name <storage-account> \
--resource-group <resource_group> \
--query identity.principalId \
--output tsv)
$kvResourceId=$(az keyvault show \
--resource-group <resource-group> \
--name <key-vault> \
--query id \
--output tsv)
az role assignment create --assignee-object-id $principalId \
--role "Key Vault Crypto Service Encryption User" \
--scope $kvResourceId
接下來,使用 --key-uri
參數呼叫 az storage account encryption-scope 命令,並指定金鑰 URI。 您可選擇是否在金鑰 URI 附上金鑰版本。 如果您省略金鑰版本,則加密範圍會自動使用最新的金鑰版本。 如果您附上金鑰版本,則必須手動更新金鑰版本來使用不同的版本。
金鑰 URI 的格式類似下列範例,可從金鑰保存庫的 vaultUri 屬性和金鑰名稱建構:
# Without the key version
https://<key-vault>.vault.azure.net/keys/<key>
# With the key version
https://<key-vault>.vault.azure.net/keys/<key>/<version>
如果儲存體帳戶的基礎結構加密已經啟用,那麼新的加密範圍也會自動啟用基礎結構加密。 若未啟用,您可以選擇是否針對該加密範圍啟用基礎結構加密。 若要建立已啟用基礎結構加密的新範圍,請包含 --require-infrastructure-encryption
參數並將其值設為true
。
請記得用您自己的值來取代預留位置的值:
az storage account encryption-scope create \
--resource-group <resource-group> \
--account-name <storage-account> \
--name <encryption-scope> \
--key-source Microsoft.KeyVault \
--key-uri <key-uri>
在不同的租用戶中建立受客戶自控金鑰保護的加密範圍
若要建立受客戶自控金鑰保護的加密範圍,而該金鑰儲存所在的金鑰保存庫或受控 HSM 位於與儲存體帳戶不同的租用戶中,請先為儲存體帳戶設定客戶自控金鑰。 您必須為儲存體帳戶設定使用者指派的受控識別,且該識別必須有權存取其他租用戶中的金鑰保存庫。 若要深入了解如何設定跨租用戶客戶自控金鑰,請參閱為現有的儲存體帳戶設定跨租用戶客戶自控金鑰。
若要設定用於加密範圍的客戶自控金鑰,您必須在金鑰保存庫或受控 HSM 上啟用清除保護。
為儲存體帳戶設定跨租用戶客戶自控金鑰之後,您可以在某個租用戶中的儲存體帳戶上建立加密範圍,而該租用戶的範圍須限定為另一個租用戶中的金鑰保存庫所含的金鑰。 您將需要金鑰 URI,以建立跨租用戶加密範圍。
請記得用您自己的值來取代預留位置的值:
az storage account encryption-scope create \
--resource-group <resource-group> \
--account-name <storage-account> \
--name <encryption-scope> \
--key-source Microsoft.KeyVault \
--key-uri <key-uri>
若要在 Azure 入口網站中檢視儲存體帳戶的加密範圍,請巡覽至儲存體帳戶的加密範圍設定。 從此窗格中,您可以啟用或停用加密範圍,或變更加密範圍的金鑰。
若要檢視客戶自控金鑰的詳細資料 (包括金鑰 URI 和版本,以及是否自動更新金鑰版本) 請依照金鑰資料行中的連結指示進行。
若要使用 PowerShell 列出適用於儲存體帳戶的加密範圍,請呼叫 Get-AzStorageEncryptionScope 命令。 請記得用您自己的值來取代預留位置的值:
Get-AzStorageEncryptionScope -ResourceGroupName $rgName `
-StorageAccountName $accountName
若要依照儲存體帳戶列出資源群組中的所有加密範圍,請使用 Pipeline 語法:
Get-AzStorageAccount -ResourceGroupName $rgName | Get-AzStorageEncryptionScope
若要使用 Azure CLI 列出儲存體帳戶可用的加密範圍,請呼叫 az storage account encryption-scope list 命令。 請記得用您自己的值來取代預留位置的值:
az storage account encryption-scope list \
--account-name <storage-account> \
--resource-group <resource-group>
若要在 Azure 入口網站中建立設有預設加密範圍的容器,請先建立加密範圍,如建立加密範圍中所述。 接著,請遵循下列步驟來建立容器:
瀏覽至您儲存體帳戶中的容器清單,然後選取 [新增] 按鈕以建立容器。
展開 [新增容器] 窗格中的 [進階] 設定。
在 [加密範圍] 下拉式清單中,選取容器的預設加密範圍。
若要要求容器中的所有 Blob 使用預設加密範圍,請選取核取方塊,對容器中的所有 Blob使用此加密範圍。 如果選取此核取方塊,則容器中的個別 Blob 無法覆寫預設的加密範圍。
若要使用 PowerShell 建立設有預設加密範圍的容器,請呼叫 New-AzStorageContainer 命令,並指定 -DefaultEncryptionScope
參數的範圍。 若要強制容器中所有 Blob 使用容器的預設範圍,請將 -PreventEncryptionScopeOverride
參數設定為 true
。
$containerName1 = "container1"
$ctx = New-AzStorageContext -StorageAccountName $accountName -UseConnectedAccount
# Create a container with a default encryption scope that cannot be overridden.
New-AzStorageContainer -Name $containerName1 `
-Context $ctx `
-DefaultEncryptionScope $scopeName1 `
-PreventEncryptionScopeOverride $true
若要使用 Azure CLI 建立設有預設加密範圍的容器,請呼叫 az storage container create 命令,並指定參數 --default-encryption-scope
的範圍。 若要強制容器中所有 Blob 使用容器的預設範圍,請將 --prevent-encryption-scope-override
參數設定為 true
。
下列範例會使用 Microsoft Entra 帳戶為建立容器的作業授權。 您也可以使用帳戶存取金鑰。 如需詳細資訊,請參閱使用 Azure CLI 授與 Blob 或佇列資料的存取權。
az storage container create \
--account-name <storage-account> \
--resource-group <resource-group> \
--name <container> \
--default-encryption-scope <encryption-scope> \
--prevent-encryption-scope-override true \
--auth-mode login
如果用戶端在將 Blob 上傳至具有預設加密範圍的容器時嘗試指定範圍,且該容器的設定為防止 Blob 覆寫預設範圍,則該作業會失敗,並顯示一則訊息,表示該容器的加密原則禁止此要求。
若要透過 Azure 入口網站上傳具有加密範圍的 Blob,請先建立加密範圍,如建立加密範圍中所述。 接著,請遵循下列步驟來建立 Blob:
巡覽至您要上傳 Blob 的容器。
選取 [上傳] 按鈕,然後找出要上傳的 Blob。
展開 [上傳 Blob] 窗格中的 [進階] 設定。
找出 [加密範圍] 下拉式區段。 根據預設,建立的 Blob 會使用容器的預設加密範圍 (如果已指定加密範圍)。 如果容器要求 Blob 使用預設加密範圍,則會停用此區段。
若要為您要上傳的 Blob 指定不同的範圍,請選取 [選擇現有範圍],然後從下拉式清單中選取所需的範圍。
若要透過 PowerShell 上傳具有加密範圍的 Blob,請呼叫 Set-AzStorageBlobContent 命令,並提供 Blob 的加密範圍。
$containerName2 = "container2"
$localSrcFile = "C:\temp\helloworld.txt"
$ctx = New-AzStorageContext -StorageAccountName $accountName -UseConnectedAccount
# Create a container with no default scope defined.
New-AzStorageContainer -Name $containerName2 -Context $ctx
# Upload a block upload with an encryption scope specified.
Set-AzStorageBlobContent -Context $ctx `
-Container $containerName2 `
-File $localSrcFile `
-Blob "helloworld.txt" `
-BlobType Block `
-EncryptionScope $scopeName2
若要透過 Azure CLI 上傳具有加密範圍的 Blob,請呼叫 az storage blob upload 命令,並提供 blob 的加密範圍。
如果您使用的是 Azure Cloud Shell,請依照上傳 Blob 中所述的步驟,在根目錄中建立檔案。 然後,您可以使用下列範例將此檔案上傳至 Blob。
az storage blob upload \
--account-name <storage-account> \
--container-name <container> \
--file <file> \
--name <file> \
--encryption-scope <encryption-scope>
若要變更保護 Azure 入口網站中範圍的金鑰,請遵循下列步驟:
- 巡覽至 [加密範圍] 索引標籤,以檢視儲存體帳戶的加密範圍清單。
- 選取您要修改範圍旁邊的 [更多] 按鈕。
- 在 [編輯加密範圍] 窗格中,您可以將加密類型從 Microsoft 管理金鑰變更為客戶自控金鑰,反之亦然。
- 若要選取新的客戶自控金鑰,請選取 [使用新的金鑰],並指定金鑰保存庫、金鑰和金鑰版本。
若要使用 PowerShell 將保護加密範圍的金鑰從客戶自控金鑰變更為 Microsoft 管理的金鑰,請呼叫 Update-AzStorageEncryptionScope 命令並傳入 -StorageEncryption
參數:
Update-AzStorageEncryptionScope -ResourceGroupName $rgName `
-StorageAccountName $accountName `
-EncryptionScopeName $scopeName2 `
-StorageEncryption
接下來,呼叫 Update-AzStorageEncryptionScope 命令並傳入 -KeyUri
和 -KeyvaultEncryption
參數:
Update-AzStorageEncryptionScope -ResourceGroupName $rgName `
-StorageAccountName $accountName `
-EncryptionScopeName $scopeName1 `
-KeyUri $keyUri `
-KeyvaultEncryption
若要使用 Azure CLI 將保護加密範圍的金鑰從客戶自控金鑰變更為 Microsoft 管理的金鑰,請呼叫 az storage account encryption-scope update 命令,並傳入具有 Microsoft.Storage
值的 --key-source
參數:
az storage account encryption-scope update \
--account-name <storage-account> \
--resource-group <resource-group>
--name <encryption-scope> \
--key-source Microsoft.Storage
接下來,呼叫 az storage account encryption-scope update 命令,傳入 --key-uri
參數,並傳入具有 Microsoft.KeyVault
值的 --key-source
參數:
az storage account encryption-scope update \
--resource-group <resource-group> \
--account-name <storage-account> \
--name <encryption-scope> \
--key-source Microsoft.KeyVault \
--key-uri <key-uri>