You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 12:05:16