設定 Azure NetApp Files 磁碟區加密的客戶自控金鑰
Azure NetApp Files 磁碟區加密的客戶自控金鑰可讓您在建立新磁碟區時使用自己的金鑰,而不是平台代控金鑰。 使用客戶自控金鑰,您可以完全管理金鑰生命週期、金鑰使用權限和金鑰稽核作業之間的關聯性。
下圖示範客戶自控金鑰如何與 Azure NetApp Files 搭配運作:
Azure NetApp Files 會將加密金鑰的權限授與受控識別。 受控識別可以是您所建立和管理的使用者指派受控識別,或是與 NetApp 帳戶相關聯的系統指派受控識別。
您可以使用 NetApp 帳戶的客戶自控金鑰來設定加密。
您使用 Azure Key Vault 系統管理員在步驟 1 中授與權限的受控識別,透過 Microsoft Entra ID 驗證對 Azure Key Vault 的存取。
Azure NetApp Files 使用 Azure Key Vault 中的客戶自控金鑰來包裝帳戶加密金鑰。
客戶自控金鑰對 Azure NetApp Files 沒有任何效能影響。 其與平台代控金鑰唯一差異在於金鑰的管理方式。
若是讀取/寫入作業,Azure NetApp Files 將要求傳送至 Azure Key Vault 以解除包裝帳戶加密金鑰,並執行加密和解密作業。
考量
- 若要使用客戶自控金鑰建立磁碟區,您必須選取標準網路功能。 您無法使用客戶自控金鑰磁碟區搭配使用基本網路功能所設定的磁碟區。 請遵循磁碟區建立頁面中的設定網路功能選項中的指示進行操作。
- 為了提高安全性,您可以在金鑰保存庫的網路設定中選取 [停用公用存取] 選項。 選取此選項時,您也必須選取 [允許受信任的 Microsoft 服務略過此防火牆],以允許 Azure NetApp Files 服務存取您的加密金鑰。
- 客戶自控金鑰支援自動受控系統識別 (MSI) 憑證更新。 若的憑證有效,則不需要手動更新憑證。
- Azure NetApp Files 客戶自控金鑰不支援將私人連結子網路上的 Azure 網路安全群組套用至 Azure Key Vault。 除非在子網路上啟用
Private endpoint network policy
,否則網路安全群組不會影響對 Private Link 的連線。 必須停用此選項。 - 如果 Azure NetApp Files 無法建立客戶自控金鑰磁碟區,則會顯示錯誤訊息。 如需詳細資訊,請參閱錯誤訊息和疑難排解 (部分機器翻譯) 一節。
- 建立客戶自控金鑰磁碟區之後,請勿對基礎 Azure Key Vault 或 Azure 私人端點進行任何變更。 進行變更可能會使磁碟區無法存取。
- 如果無法存取 Azure Key Vault,Azure NetApp Files 將失去對加密金鑰的存取權,以及對使用客戶自控金鑰啟用的磁碟區讀取或寫入資料的能力。 在此情況下,請建立支援票證,以手動還原受影響磁碟區的存取權。
- Azure NetApp Files 支援來源和資料複寫磁碟區上的客戶自控金鑰,而這些磁碟區具有跨區域複寫或跨可用性區域複寫關聯性。
支援的區域
下列區域支援 Azure NetApp Files 客戶自控金鑰:
- 澳大利亞中部
- 澳大利亞中部 2
- 澳大利亞東部
- 澳大利亞東南部
- 巴西南部
- 巴西東南部
- 加拿大中部
- 加拿大東部
- 印度中部
- 美國中部
- 東亞
- 美國東部
- 美國東部 2
- 法國中部
- 德國北部
- 德國中西部
- 以色列中部
- 義大利北部
- 日本東部
- 日本西部
- 南韓中部
- 南韓南部
- 美國中北部
- 北歐
- 挪威東部
- 挪威西部
- 卡達中部
- 南非北部
- 美國中南部
- 印度南部
- 東南亞
- 西班牙中部
- 瑞典中部
- 瑞士北部
- 瑞士西部
- 阿拉伯聯合大公國中部
- 阿拉伯聯合大公國北部
- 英國南部
- 英國西部
- US Gov 亞利桑那州
- US Gov 德克薩斯州
- US Gov 維吉尼亞州
- 西歐
- 美國西部
- 美國西部 2
- 美國西部 3
需求
建立第一個客戶自控金鑰磁碟區之前,您必須先設定:
- 包含至少一個金鑰的 Azure Key Vault。
- 金鑰保存庫必須已啟用虛刪除與清除保護。
- 金鑰必須是 RSA 類型。
- 金鑰保存庫必須具有 Azure 私人端點。
- 該私人端點必須與委派至 Azure NetApp Files 的子網路位於不同的子網路。 該子網路必須與委派至 Azure NetApp Files 的子網路位於相同的 VNet。
如需 Azure Key Vault 和 Azure 私人端點的詳細資訊,請參閱:
設定 NetApp 帳戶以使用客戶自控金鑰
在 Azure 入口網站和 Azure NetApp Files 底下,選取 [加密]。
您可使用 [加密] 頁面來管理 NetApp 帳戶的加密設定。 其中包含可將 NetApp 帳戶設定為使用您自己的加密金鑰的選項,該金鑰儲存在 Azure Key Vault 中。 此設定會將系統指派的身分識別提供給 NetApp 帳戶,並為具有所需金鑰權限的身分識別新增存取原則。
若將 NetApp 帳戶設定為使用客戶自控金鑰,有兩種方式可指定金鑰 URI:
選取您想要用來向 Azure Key Vault 進行驗證的身分識別類型。 若的 Azure Key Vault 設定為使用保存庫存取原則作為其權限模型,則這兩個選項皆可供使用。 否則,只有使用者指派的選項可用。
- 若選擇 [系統指派],請選取 [儲存] 按鈕。 Azure 入口網站會將系統指派的身分識別新增至 NetApp 帳戶,以自動設定 NetApp 帳戶。 同時也在 Azure Key Vault 上建立具有金鑰權限 Get、Encrypt、Decrypt 的存取原則。
- 若選擇 [使用者指派],您必須選取身分識別。 選擇 [選取身分識別] 以開啟內容窗格,您可以在其中選取使用者指派的受控識別。
若已將 Azure Key Vault 設定為使用保存庫存取原則,Azure 入口網站會自動使用下列程序來設定 NetApp 帳戶:您選取的使用者指派身分識別會新增至 NetApp 帳戶。 存取原則會在您的 Azure Key Vault 上建立,並具有 Get、Encrypt、Decrypt 的金鑰權限。
若已將 Azure Key Vault 設定為使用 Azure 角色型存取控制,則必須確定選取的使用者指派身分識別在金鑰保存庫上具有動作權限的角色指派:
Microsoft.KeyVault/vaults/keys/read
Microsoft.KeyVault/vaults/keys/encrypt/action
Microsoft.KeyVault/vaults/keys/decrypt/action
您選取的使用者指派身分識別會新增至 NetApp 帳戶。 由於角色型存取控制 (RBAC) 的可自訂本質,Azure 入口網站不會設定金鑰保存庫的存取權。 如需設定 Azure Key Vault 的詳細資訊,請參閱使用 Azure 角色型存取控制提供 Key Vault 金鑰、憑證和祕密的存取權。
選取 [儲存],然後觀察傳達作業狀態的通知。 如果作業未成功,就會顯示錯誤訊息。 如需解決錯誤的說明,請參閱錯誤訊息和疑難排解 (部分機器翻譯)。
使用角色型存取控制
您可以使用設定為使用 Azure 角色型存取控制的 Azure Key Vault。 若要透過 Azure 入口網站設定客戶自控金鑰,您必須提供使用者指派的身分識別。
在您的 Azure 帳戶中,瀏覽至 [金鑰保存庫],然後瀏覽至 [存取原則]。
建立使用者指派的角色時,客戶自控金鑰需要三個權限:
Microsoft.KeyVault/vaults/keys/read
Microsoft.KeyVault/vaults/keys/encrypt/action
Microsoft.KeyVault/vaults/keys/decrypt/action
雖然有包含這些權限的預先定義角色,但這些角色授與的權限比所需要的還多。 建議您只建立具有最低必要權限的自訂角色。 如需詳細資訊,請參閱 Azure 自訂角色。
{ "id": "/subscriptions/<subscription>/Microsoft.Authorization/roleDefinitions/<roleDefinitionsID>", "properties": { "roleName": "NetApp account", "description": "Has the necessary permissions for customer-managed key encryption: get key, encrypt and decrypt", "assignableScopes": [ "/subscriptions/<subscriptionID>/resourceGroups/<resourceGroup>" ], "permissions": [ { "actions": [], "notActions": [], "dataActions": [ "Microsoft.KeyVault/vaults/keys/read", "Microsoft.KeyVault/vaults/keys/encrypt/action", "Microsoft.KeyVault/vaults/keys/decrypt/action" ], "notDataActions": [] } ] } }
建立自訂角色並可供金鑰保存庫使用之後,您可以將該角色套用至使用者指派的身分識別。
使用客戶自控金鑰建立 Azure NetApp Files 磁碟區
從 Azure NetApp Files 中,選取 [磁碟區],然後選取 [+ 新增磁碟區]。
請遵循設定 Azure NetApp Files 磁碟區網路功能的指示:
- 在磁碟區建立頁面中設定 [網路功能] 選項。
- 磁碟區委派子網路的網路安全群組必須允許來自 NetApp 儲存體 VM 的傳入流量。
對於設定為使用客戶自控金鑰的 NetApp 帳戶,[建立磁碟區] 頁面包含 [加密金鑰來源] 選項。
若要使用金鑰加密磁碟區,請在 [加密金鑰來源] 下拉功能表中選取 [客戶自控金鑰]。
若使用客戶自控金鑰建立磁碟區,您也必須為 [網路功能] 選項選取 [標準]。 不支援基本網路功能。
您也必須選取金鑰保存庫私人端點。 下拉功能表會顯示所選虛擬網路中的私人端點。 如果選定虛擬網路中的金鑰保存庫沒有私人端點,則下拉式清單是空的,您將無法繼續。 如果這樣,請參閱 Azure 私人端點。
繼續完成磁碟區建立程序。 請參閱:
將 Azure NetApp Files 磁碟區轉換為客戶自控金鑰 (預覽)
Azure NetApp Files 支援將現有磁碟區從使用平台代控金鑰移至客戶自控金鑰。 完成移轉之後,就無法還原為平台代控金鑰。
註冊功能
Azure NetApp Files 的加密金鑰轉換目前處於預覽狀態。 首次使用此功能前,必須先行註冊。
註冊此功能:
Register-AzProviderFeature -ProviderNamespace Microsoft.NetApp -FeatureName ANFMigratePmkToCmk
檢查功能註冊的狀態:
Get-AzProviderFeature -ProviderNamespace Microsoft.NetApp -FeatureName ANFMigratePmkToCmk
注意
在變更為
Registered
之前,RegistrationState 可能處於最多 60 分鐘的Registering
狀態。 等到狀態變為 Registered 之後再繼續。
您也可以使用 Azure CLI 命令 az feature register
及 az feature show
來註冊該功能,並顯示註冊狀態。
轉換磁碟區
注意
當您將磁碟區轉換為使用客戶自控金鑰時,必須對 Azure NetApp Files 帳戶具有磁碟區的每個虛擬網路執行轉換。
- 請確保將 Azure NetApp Files 帳戶設定為使用客戶自控金鑰。
- 在 Azure 入口網站中,瀏覽至 [加密]。
- 選取 [CMK 移轉] 索引標籤。
- 從下拉式功能表中,選取您要使用的虛擬網路和金鑰保存庫私人端點。
- Azure 會產生要使用客戶自控金鑰加密的磁碟區清單。
- 選取 [確認] 以起始移轉。
重設 NetApp 帳戶下的所有磁碟區
若已針對客戶自控金鑰設定 NetApp 帳戶,並且有一或多個使用客戶自控金鑰加密的磁碟區,您可以變更用來加密 NetApp 帳戶下所有磁碟區的金鑰。 您可以選取位於相同金鑰儲存庫中的任何金鑰。 不支援變更金鑰保存庫。
選取 [確定] 以儲存。 重設金鑰作業可能需要幾分鐘的時間。
從系統指派的身分識別切換至使用者指派的身分識別
若要從系統指派的身分識別切換至使用者指派的身分識別,您必須為目標身分識別授與所要使用的金鑰保存庫的存取權,其與 read/get、encrypt 和 decrypt 權限搭配使用。
使用
az rest
命令傳送 PATCH 要求來更新 NetApp 帳戶:az rest -m PATCH -u <netapp-account-resource-id>?api-versions=2022-09-01 -b @path/to/payload.json
承載應該使用下列結構:
{ "identity": { "type": "UserAssigned", "userAssignedIdentities": { "<identity-resource-id>": {} } }, "properties": { "encryption": { "identity": { "userAssignedIdentity": "<identity-resource-id>" } } } }
使用
az netappfiles account show
命令確認作業成功完成。 輸出包含下列欄位:"id": "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.NetApp/netAppAccounts/account", "identity": { "principalId": null, "tenantId": null, "type": "UserAssigned", "userAssignedIdentities": { "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity>": { "clientId": "<client-id>", "principalId": "<principalId>", "tenantId": <tenantId>" } } },
請確定:
encryption.identity.principalId
符合identity.userAssignedIdentities.principalId
中的值encryption.identity.userAssignedIdentity
符合identity.userAssignedIdentities[]
中的值
"encryption": { "identity": { "principalId": "<principal-id>", "userAssignedIdentity": "/subscriptions/<subscriptionId>/resourceGroups/<resource-group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity>" }, "KeySource": "Microsoft.KeyVault", },
錯誤訊息和疑難排解
本節列出 Azure NetApp Files 無法設定客戶自控金鑰加密或使用客戶自控金鑰建立磁碟區時的錯誤訊息和可能解決方式。
在 NetApp 帳戶上設定客戶自控金鑰加密時發生錯誤
錯誤狀況 | 解決方法 |
---|---|
The operation failed because the specified key vault key was not found |
手動輸入金鑰 URI 時,請確定 URI 正確無誤。 |
Azure Key Vault key is not a valid RSA key |
確定選取的金鑰類型為 RSA。 |
Azure Key Vault key is not enabled |
確定選取的金鑰已啟用。 |
Azure Key Vault key is expired |
請確定所選取的金鑰未到期。 |
Azure Key Vault key has not been activated |
確定選取的金鑰為作用中。 |
Key Vault URI is invalid |
手動輸入金鑰 URI 時,請確定 URI 正確無誤。 |
Azure Key Vault is not recoverable. Make sure that Soft-delete and Purge protection are both enabled on the Azure Key Vault |
將金鑰儲存庫復原層級更新為:“Recoverable/Recoverable+ProtectedSubscription/CustomizedRecoverable/CustomizedRecoverable+ProtectedSubscription” |
Account must be in the same region as the Vault |
請確定金鑰保存庫位於與 NetApp 帳戶相同的區域中。 |
建立使用客戶自控金鑰加密的磁碟區時發生錯誤
錯誤狀況 | 解決方法 |
---|---|
Volume cannot be encrypted with Microsoft.KeyVault, NetAppAccount has not been configured with KeyVault encryption |
您的 NetApp 帳戶未啟用客戶自控金鑰加密。 將 NetApp 帳戶設定為使用客戶自控金鑰。 |
EncryptionKeySource cannot be changed |
沒有解決方法。 無法變更磁碟區的 EncryptionKeySource 屬性。 |
Unable to use the configured encryption key, please check if key is active |
請確定: - 金鑰保存庫上的所有存取原則都正確無誤 (Get、Encrypt、Decrypt) 嗎? - 已存在金鑰保存庫的私人端點嗎? - VNet 中是否存在虛擬網路 NAT,並且啟用了委派的 Azure NetApp Files 子網路? |
Could not connect to the KeyVault |
請確定已正確設定私人端點,且防火牆不會封鎖從虛擬網路到 KeyVault 的連線。 |