如何将Function App槽位身份添加为Azure PostgreSQL非管理员用户
解决Function App槽位身份添加为PostgreSQL数据库用户的报错问题
问题分析
执行pgaadauth_create_principal函数时出现的错误,说明目标Azure AD身份(Function App槽位身份)可能已被创建为数据库角色,或是函数内部的安全标签设置逻辑发生冲突。
解决步骤
检查身份是否已存在
先执行查询确认该身份是否已在数据库中创建:SELECT rolname FROM pg_roles WHERE rolname = 'functionappname/slot/slotname';- 如果返回结果,说明角色已存在,直接跳过创建步骤,给该角色授予所需权限即可(例如
GRANT SELECT ON your_target_table TO "functionappname/slot/slotname";)。
- 如果返回结果,说明角色已存在,直接跳过创建步骤,给该角色授予所需权限即可(例如
手动创建角色并配置安全标签
如果身份不存在,手动执行以下SQL替代调用pgaadauth_create_principal:-- 创建带登录权限的角色 CREATE ROLE "functionappname/slot/slotname" WITH LOGIN; -- 配置pgaadauth安全标签关联Azure AD身份 SECURITY LABEL FOR pgaadauth ON ROLE "functionappname/slot/slotname" IS 'aadauth';授予最小必要权限
根据业务需求给该角色授予对应权限,避免使用管理员权限,例如:-- 授予某表的读写权限 GRANT SELECT, INSERT, UPDATE ON your_table TO "functionappname/slot/slotname"; -- 授予schema的使用权限 GRANT USAGE ON SCHEMA your_schema TO "functionappname/slot/slotname";确认执行账号权限
确保执行上述操作的账号具备CREATEROLE和SECURITYADMIN权限,否则无法创建角色和设置安全标签。
内容的提问来源于stack exchange,提问作者Barbara Geissmann
相关产品推荐
相关产品推荐

