如何使用Azure Java API为Azure存储账户配置加密范围?
回答
要通过Java API为Azure存储账户创建加密范围,需使用Azure存储资源管理Java SDK——加密范围属于存储账户的管理级操作,无法通过Blob客户端SDK完成。
依赖准备
先在项目中引入Maven依赖(版本可按需选择最新稳定版):
<dependency> <groupId>com.azure.resourcemanager</groupId> <artifactId>azure-resourcemanager-storage</artifactId> <version>2.30.0</version> </dependency>
代码实现
以下示例展示如何创建关联Key Vault密钥的加密范围:
import com.azure.core.credential.DefaultAzureCredential; import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; import com.azure.resourcemanager.AzureResourceManager; import com.azure.resourcemanager.storage.models.EncryptionScope; import com.azure.resourcemanager.storage.models.EncryptionScopeSource; import com.azure.resourcemanager.storage.models.EncryptionScopeState; import com.azure.resourcemanager.storage.models.KeyVaultProperties; public class EncryptionScopeCreator { public static void main(String[] args) { // 初始化Azure资源管理器(使用DefaultAzureCredential自动获取凭证) AzureProfile azureProfile = new AzureProfile(AzureEnvironment.AZURE); AzureResourceManager armClient = AzureResourceManager.configure() .authenticate(new DefaultAzureCredential(), azureProfile) .withDefaultSubscription(); // 配置参数 String resourceGroupName = "your-resource-group"; String storageAccountName = "your-storage-account"; String encryptionScopeName = "datalakeencscope"; String keyVaultUri = "https://your-key-vault.vault.azure.net/"; String keyName = "your-key-name"; String keyVersion = ""; // 留空则使用最新版本 // 创建加密范围 EncryptionScope scope = armClient.storageAccounts() .getByResourceGroup(resourceGroupName, storageAccountName) .encryptionScopes() .define(encryptionScopeName) .withSource(EncryptionScopeSource.MICROSOFT_KEY_VAULT) .withKeyVaultProperties(new KeyVaultProperties() .withKeyUri(String.format("%skeys/%s/%s", keyVaultUri, keyName, keyVersion).replace("//", "/"))) .withState(EncryptionScopeState.ENABLED) .create(); System.out.printf("加密范围 %s 创建成功%n", scope.name()); } }
注意事项
- 权限要求:操作身份(本地开发账户或Azure托管标识)需具备:
- 存储账户的
Microsoft.Storage/storageAccounts/encryptionScopes/write权限 - Key Vault密钥的
get、wrapKey、unwrapKey权限
- 存储账户的
- 加密范围状态:创建时需设置为
ENABLED才能生效 - 密钥URI:若指定版本,需确保Key Vault中存在对应版本的密钥;不指定版本则自动使用最新密钥
内容的提问来源于stack exchange,提问作者Prabal Rakshit
相关产品推荐
相关产品推荐

