我在将 QuestDB Enterprise 与 Azure EntraId/Active Directory 集成时遇到一些问题。我相信我已经一切就绪,但我被困住了。这就是我到目前为止所做的:
我还用这些参数更改了我的
server.conf
:
acl.oidc.enabled=true
acl.oidc.ropc.flow.enabled=true
acl.oidc.groups.claim=groups
# Microsoft EntraID (Azure AD)
acl.oidc.configuration.url=https://login.microsoftonline.com/XXXXXXXX-6cec-4b6c-ba03-XXXXXXX/v2.0/.well-known/openid-configuration
acl.oidc.sub.claim=name
acl.oidc.groups.encoded.in.token=true
acl.oidc.client.id=XXXXXXX-246e-4dd1-960b-XXXXXX
acl.oidc.redirect.uri=https://myquestdb:9000
acl.oidc.scope=openid profile offline_access api://XXXXXXX-246e-4dd1-960b-XXXXXX/User.Groups
当我导航到 QuestDB 时,我可以选择 SSO,它会将我重定向到 Azure 进行身份验证。一切都好。问题是登录用户没有 QuestDB 的权限,我不知道如何授予它们。我期望登录时我的 AD 中的用户或组可以在 QuestDB 上使用,但是如果我执行
SHOW USERS
,我只能看到我的管理员用户,并且 SHOW GROUPS
没有显示任何内容
当 QuestDB Enterprise 使用 SSO 时,它不会存储来自远程服务器的用户或组。我们需要在 QuestDB 中创建一个本地组作为 AD 上外部组的代理,然后向该组授予权限。当用户通过身份验证时,QuestDB 将知道它属于哪些组,并根据该组授予权限。
上述配置中剩下的就是在 QuestDB 中创建一个与 Entra ID 组连接的组。
create group group_entraid with external alias 'XXXXX-64e4-435a-8f2b-XXX';
别名是 AD 上组的 ObjectID。
组匹配后,我们就可以向组成员授予使用 Web 控制台和 PGWIRE 协议的权限以及我们需要的任何其他数据库/表权限。
grant HTTP, PGWIRE TO group_entraid;
grant SELECT on table1 to group_entraid;