我为azure cosmos db使用java版本4 SDK。我想在azure cosmos db帐户中使用服务主体创建数据库,而不是使用主密钥。
根据该文档,我为服务主体分配了< code > document DB Account Contributor 和< code>Cosmos DB Operator内置角色定义:
https://docs.microsoft.com/pl-pl/azure/role-based-access-control/built-in-roles#cosmos-db-operator
我无法创建 CosmosAsyncClient,直到我添加了新的自定义角色,该角色仅包含读取元数据。上面提到的内置角色定义不包含它...
TokenCredential ServicePrincipal = new ClientSecretCredentialBuilder()
.authorityHost("https://login.microsoftonline.com")
.tenantId(tenant_here)
.clientId(clientid_here)
.clientSecret(secret_from_above_client)
.build();
client = new CosmosClientBuilder()
.endpoint(AccountSettings.HOST)
.credential(ServicePrincipal)
.buildAsyncClient();
添加此角色后,创建了客户端,但下一步我无法在其中创建数据库实例和容器。在权限改造中,我可以看到角色已分配,因此此处的服务主体是正确的。
更重要的是,当我首先用主密钥创建数据库和容器,然后我想使用服务主体读/写数据时,它工作了(显然在添加了用于写的自定义角色之后)。
然后我不知道为什么DocumentDB帐户贡献者
和Cosmos DB操作员
不适用于创建数据库。
看起来这是java SDK中的一个错误,DocumentDB帐户贡献者
角色足以创建数据库和容器,因为它具有Microsoft.DocumentDb/databaseAccounts/*
权限(*
是一个通配符,它还包括您提到的Microsoft.DocumentDB/databaseAccounts/readMetadata
)。
当我测试使用具有此角色的服务主体来创建带有powershell<code>新AzCosmosDBSqlDatabase<code>的数据库时,它运行良好。当使用服务主体运行此命令时,它本质上使用Azure AD客户端凭据流获取令牌,然后使用令牌调用REST API-<code>PUThttps://management.azure.com/subscriptions/xxxx/resourceGroups/xxxx/providers/Microsoft.DocumentDB/databaseAccounts/xxxx/sqlDatabases/testdb1?api-version=2020-04-01为了创建数据库,java SDK本质上也做了同样的事情,因此它也应该工作。
是否可以使用java代码创建/删除windows用户帐户并设置其权限以使其成为管理员帐户、简单用户帐户或来宾帐户?
我想问如何创建两个单独的登录意图。例如,一个是给客户的,一个是给管理员检查细节的。 在这段代码中,它只能显示客户部分,但我如何输入另一种方式,在那里有单独的管理或管理和客户的使用? 更新的一个
我正在尝试使用jmeter模拟在我的测试站点上创建的500个用户名/密码。主页有3个字段,用户名、电子邮件地址和密码。如何让jmeter自动填充这些字段?下一个问题是,jmeter是否可以转到下一页,例如填写信用信息?
MySQL 是一个使用广泛的数据库服务器,你肯定会在某些节点上安装配置 MySQL 服务器。 本节将向你展示如何安装配置 MySQL 服务器,以及如何为应用程序自动创建数据库和用户。 准备工作 如果你还没有 MySQL 模块,先创建一个: # mkdir /etc/puppet/modules/mysql # mkdir /etc/puppet/modules/manifests # mkdir
我试图创建一个路由53记录集从帐户1在帐户2. 通过阅读其他帖子和在线搜索,我想做这样的事情: 想从有经验的人那里知道这是否是正确的方法吗?或者有没有更好的方法来实现上面? 更新代码如下:
安装oracle 19C后,它要求用户名和密码。输入什么,以及如何创建一个具有所有权限和身份验证权限的新用户。(注意,我试图通过登录SYSDBA创建用户命令,但它显示错误为无效的普通用户或角色名.在这里输入图像描述 [在此处输入图像描述][2]