如何验证Azure存储账户文件共享内容的CMK静态加密状态?
验证Azure文件共享中CMK静态加密的方法
Azure存储的静态加密由服务端自动处理,没有直接暴露文件级的加密状态字段,但可以通过以下间接方式验证文件是否使用CMK加密:
一、文件共享/文件的加密关联验证
- 存储账户的加密配置是全局生效的,所有在CMK启用后上传的文件,都会自动使用CMK加密。你可以通过确认文件的创建时间晚于CMK启用时间,结合已验证的存储账户CMK配置,形成逻辑链证明文件使用了CMK加密。
- 文件本身不会存储加密密钥类型的元数据,但可以通过工具将文件所属的存储账户加密配置与文件关联,完成验证。
二、日志与诊断输出验证
- 启用Azure存储的诊断日志(重点关注
StorageRead、StorageWrite类型),操作文件的日志记录中会包含存储账户的加密配置信息。在日志的properties字段里,encryptionKeySource值为Microsoft.KeyVault时,即可证明操作的文件处于CMK加密环境中。
三、PowerShell、CLI或REST API验证
PowerShell
- 确认存储账户的CMK配置:
$storageAccount = Get-AzStorageAccount -ResourceGroupName "你的资源组名" -Name "你的存储账户名" $storageAccount.Encryption.KeySource
返回Microsoft.KeyVault即表示启用了CMK加密。
- 关联文件创建时间,确认文件是CMK启用后上传的:
$fileShare = Get-AzStorageShare -Name "你的文件共享名" -Context $storageAccount.Context $file = Get-AzStorageFile -Share $fileShare -Path "你的文件路径" $file.Properties.CreationTime
Azure CLI
- 获取存储账户加密配置:
az storage account show --name "你的存储账户名" --resource-group "你的资源组名" --query "encryption.keySource"
返回Microsoft.KeyVault则为CMK模式。
- 获取文件创建时间:
az storage file show --share-name "你的文件共享名" --path "你的文件路径" --account-name "你的存储账户名" --query "properties.creationTime"
REST API
- 调用存储账户查询API,查看
encryption.keySource值:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}?api-version=2023-01-01
- 调用文件属性查询API,获取文件创建时间:
GET https://{accountName}.file.core.windows.net/{shareName}/{fileName}?restype=file&comp=properties
演示用最佳实践
- 逻辑链演示:先展示存储账户的CMK配置(密钥来源为Key Vault、密钥版本等信息),再展示文件的创建时间晚于CMK启用时间,通过“全局配置生效+文件上传时间匹配”的逻辑证明加密方式。
- 日志演示:提前启用诊断日志,上传测试文件后,在日志中找到对应操作记录,展示
encryptionKeySource为Microsoft.KeyVault的字段。 - 脚本演示:编写简短的PowerShell/CLI脚本,一键输出存储账户CMK配置和文件创建时间,直观展示关联关系。
内容的提问来源于stack exchange,提问作者Kareline
相关产品推荐
相关产品推荐

