关于ARM模板调用Cosmos DB ListConnectionStrings的权限与访问限制问询
关于ARM模板中Cosmos DB ListConnectionStrings权限及只读密钥限制的问题
我在ARM模板中通过以下代码调用listConnectionStrings获取Cosmos DB的主只读连接字符串(索引2对应该值):
{listConnectionStrings(resourceId(cosmosDBSubscription, cosmosDBResourceGroup,'Microsoft.DocumentDB/databaseAccounts', cosmosdbAccount), '2022-08-15').connectionStrings[2].connectionString}
现咨询两个问题:
- 调用Cosmos DB的
listConnectionStrings接口需要何种权限? - 是否能够限制仅允许访问只读密钥?
问题1:调用listConnectionStrings接口所需权限
- 必须拥有Cosmos DB账户资源的
Microsoft.DocumentDB/databaseAccounts/listConnectionStrings/action权限,该权限包含在以下内置角色中:- 文档账户参与者(DocumentDB Account Contributor)
- 参与者(Contributor)
- 所有者(Owner)
- 若遵循最小权限原则,可创建自定义角色,仅添加上述特定权限即可,无需赋予完整的资源管理权限。
问题2:能否限制仅访问只读密钥?
- 目前
listConnectionStrings接口返回的是全量连接字符串集合(包含主/副读写、主/副只读),没有权限机制可以限制调用者仅能获取只读类的连接字符串。 - 推荐替代方案:
- 将只读连接字符串存入Azure Key Vault,为目标应用或自动化服务分配Key Vault的**机密读取(Secrets Reader)**权限,这样只能获取预先存入的只读凭据,无法触及其他敏感密钥。
- 若仅在ARM模板输出层面限制,可只输出只读连接字符串,但这无法限制调用
listConnectionStrings接口本身获取全部密钥,因此结合Key Vault做权限隔离是更安全的方案。
内容的提问来源于stack exchange,提问作者DxG
相关产品推荐
相关产品推荐

