Azure SQL Database创建Database Master Key报权限错误如何解决?
提问内容
我在Azure订阅中创建了Azure SQL Database实例AzureSQLTestDb,可通过SSMS使用Azure SQL管理员账号、Azure AD账号正常连接并执行查询操作。但参照微软Azure团队发布的官方教程,执行以下语句创建Master key时收到如下报错。请问我遗漏了什么配置?该如何解决该问题?
备注:我已知晓对应文档提及该操作需要CONTROL permission权限,但我是该数据库及对应Azure SQL服务器的创建者。
执行的语句:
-- Creates the master key. -- The key is encrypted using the password "23987hxJ#KL95234nl0zBe". CREATE MASTER KEY ENCRYPTION BY PASSWORD = '23987hxJ#KL95234nl0zBe';
报错信息:
Msg 15247, Level 16, State 1, Line 3
User does not have control permission to perform this action.
回答
原因说明
Azure SQL服务器的创建者身份默认仅具备服务器级的管理员登录权限,映射到具体的用户数据库时,不会自动获得数据库级的CONTROL权限,该权限是创建数据库主密钥的必要条件,和你是否是资源的Azure订阅级创建者没有直接关联。
另外补充背景:Azure SQL Database默认已经由平台托管了服务主密钥,如果你没有自定义密钥加密的特殊需求,不需要手动创建用密码加密的数据库主密钥,平台托管的密钥就可以满足透明数据加密、列加密等绝大多数场景的使用要求,安全性和可维护性更高。
解决步骤
- 用你的管理员账号连接到
AzureSQLTestDb,先执行授权语句,给当前账号授予数据库的CONTROL权限:
USE AzureSQLTestDb GO -- 替换括号内的内容为你实际使用的登录名,SQL管理员直接写账号名,Azure AD账号写完整的主体名如xxx@xx.com GRANT CONTROL ON DATABASE::AzureSQLTestDb TO [你的登录账号] GO
- 授权完成后,重新执行创建主密钥的语句即可成功运行。
内容的提问来源于stack exchange,提问作者nam
相关产品推荐
相关产品推荐

