背景信息 #
在 SphereEx-DBPlusEngine-Proxy 中,通过 authority
来配置用户的认证和授权信息。
得益于 SphereEx-DBPlusEngine 的可插拔架构,Proxy 提供了两种级别的权限提供者,分别是:
ALL_PERMITTED
:每个用户都拥有所有权限,无需专门授权;DATABASE_PERMITTED
:为用户授予指定逻辑库的权限,通过user-database-mappings
进行定义。SphereEx:PERMITTED
:企业级权限提供者,可进行库、表、列级细粒度授权管理。
在配置 authority
时,管理员可根据需要选择使用哪一种权限提供者。
参数解释 #
authority:
users:
- user: # 用于登录计算节点的用户名和授权主机的组合,格式:<username>@<hostname>,hostname 为 % 或空字符串表示不限制授权主机
password: # 用户密码
authenticationMethodName: # 可选项,用于为用户指定密码认证方式
authenticators: # 可选项,默认不需要配置,Proxy 根据前端协议类型自动选择
authenticatorName:
type: # 密码认证类型
defaultAuthenticator: # 可选项,指定一个 authenticatorName 作为默认的密码认证方式
privilege:
type: # 权限提供者类型,缺省值为 SphereEx:PERMITTED
配置示例 #
极简配置 #
authority:
users:
- user: root@%
password: root
- user: sharding
password: sharding
说明:
- 定义了两个用户:
root@%
和sharding
; - 未定义
authenticators
和authenticationMethodName
,Proxy 将根据前端协议自动选择; - 未指定
privilege type
,采用默认的SphereEx:PERMITTED
。
认证配置 #
自定义认证配置能够满足用户在一些特定场景下的需求。
以 openGauss
作为前端协议类型为例,其默认的认证算法为 scram-sha-256
。
如果用户 sharding
需要用旧版本的 psql 客户端(不支持 scram-sha-256
)连接 Proxy,则管理员可能允许 sharding 使用 md5 方式进行密码认证。
支持的协议情况如下:
- MySQL 协议支持: mysql_native_password、mysql_clear_password
- Postgre 协议支持:password、md5
- openGauss 协议支持:scram-sha-256、md5
配置方式如下:
authority:
users:
- user: root@127.0.0.1
password: root
- user: sharding
password: sharding
authenticationMethodName: md5
authenticators:
md5:
type: MD5
privilege:
type: SphereEx:PERMITTED
说明:
- 定义了两个用户:
root@127.0.0.1
和sharding
; - 为用户
sharding
指定了MD5
方式进行密码认证; - 没有为
root@127.0.0.1
指定认证方式,Proxy 将根据前端协议自动选择; - 指定权限提供者为
SphereEx:PERMITTED
。
授权配置 #
ALL_PERMITTED #
authority:
users:
- user: root@127.0.0.1
password: root
- user: sharding
password: sharding
privilege:
type: ALL_PERMITTED
说明:
- 定义了两个用户:
root@127.0.0.1
和sharding
; - 未定义
authenticators
和authenticationMethodName
,Proxy 将根据前端协议自动选择; - 指定权限提供者为
ALL_PERMITTED
。
DATABASE_PERMITTED #
authority:
users:
- user: root@127.0.0.1
password: root
- user: sharding
password: sharding
privilege:
type: DATABASE_PERMITTED
props:
user-database-mappings: root@127.0.0.1=*, sharding@%=test_db, sharding@%=sharding_db
说明:
- 定义了两个用户:
root@127.0.0.1
和sharding
; - 未定义
authenticators
和authenticationMethodName
,Proxy 将根据前端协议自动选择; - 指定权限提供者为
SphereEx:PERMITTED
,并授权root@127.0.0.1
用户访问所有逻辑库(*
),sharding 用户仅能访问 test_db 和 sharding_db。
SphereEx:PERMITTED #
authority:
users:
- user: root@127.0.0.1
password: root
- user: sharding
password: sharding
privilege:
type: SphereEx:PERMITTED
props:
user-database-mappings: root@127.0.0.1=*, sharding@%=test_db, sharding@%=sharding_db
说明:
- 定义了两个用户:
root@127.0.0.1
和sharding
; - 未定义
authenticators
和authenticationMethodName
,Proxy 将根据前端协议自动选择; - 指定权限提供者为
DATABASE_PERMITTED
,并授权root@127.0.0.1
用户访问所有逻辑库(*
)的表和列。
相关参考 #
权限提供者具体实现可以参考 权限提供者。