我已经在Azure中设置了我的Postgres灵活服务器以使用Azure AD管理员,并添加了一个服务主体作为管理员(不要介意屏幕截图中添加的用户,这只是一个实验):
现在,我希望ServicePrincipal AD管理员能够通过.NET服务中的数据库迁移(使用DbUp)执行以下操作:
1.创建新角色和
1.对创建的角色授予权限
当我运行迁移来创建角色和赠款时,我得到一个错误,告诉我ServicePrincipal没有访问public.schemaversions
的权限。很好,然后我想通过授予ServicePrincipal本身访问public.schemaversions
的权限开始,如下所示:
ALTER SCHEMA public OWNER TO <service principal name>;
GRANT USAGE ON SCHEMA public TO <service principal name>;
GRANT SELECT, INSERT ON public.schemaversions TO <service principal name>;
psql "sslmode=require host=<server> port=<port> dbname=MyDatabase" -U <service principal name> -w
然后我得到以下错误:
错误:数据库MyDatabase的权限被拒绝
授权:错误:表架构版本的权限被拒绝
我是否错过了什么?Azure AD管理员不能运行GRANT
语句吗?它似乎只能连接到服务器并创建角色。
1条答案
按热度按时间vddsk6oq1#
当您将AAD管理员用户添加到Azure Database for Postgresql Flexible服务器时,它所做的只是将用户添加到AAD管理员组。
您仍然需要授予此组对资源的访问权限,以便它们具有访问权限。在这种情况下,您仍然需要首先授予角色对数据库的访问权限。
如果手动完成,它会像这样:
在Flexible服务器中,这已经通过自定义功能大大简化了。这允许您创建一个具有访问权限和所有必要赠款的中心角色,然后一旦您以这种方式创建了用户或角色,您就可以轻松地将用户添加到此角色。
GRANT "AAD-Access-Role-Name" TO MyNewUser ;
你可以在这里看到一个例子列表:https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/how-to-manage-azure-ad-users#create-a-role-using-azure-ad-object-identifier
例如: