In ShardingSphere-Proxy, user authentication and authorization information is configured through authority
.
Thanks to ShardingSphere’s pluggable architecture, Proxy provides two levels of privilege providers, namely:
ALL_PERMITTED
: each user has all privileges without special authorization;DATABASE_PERMITTED
: grant the user privileges on the specified logical databases, defined by user-database-mappings
.The administrator can choose which privilege provider to use as needed when configuring authority
.
authority:
users:
- user: # Specify the username, and authorized host for logging in to the compute node. Format: <username>@<hostname>. When the hostname is % or an empty string, it indicates that the authorized host is not limited.
password: # Password
authenticationMethodName: # Optional, used to specify the password authentication method for the user
authenticators: # Optional, not required by default, Proxy will automatically choose the authentication method according to the frontend protocol type
authenticatorName:
type: # Authentication method type
defaultAuthenticator: # Optional, specify an authenticator as the default password authentication method
privilege:
type: # Privilege provider type. The default value is ALL_PERMITTED.
authority:
users:
- user: root@%
password: root
- user: sharding
password: sharding
illustrate:
root@%
and sharding
;authenticationMethodName
is not specified for root@127.0.0.1
, Proxy will automatically choose the authentication method according to the frontend protocol;ALL_PERMITTED
will be used;Custom authentication configuration can meet the needs of users in some specific scenarios.
Taking openGauss
as the frontend protocol type as an example, its default authentication method is scram-sha-256
.
If the user sharding
needs to use an old version of the psql client (which does not support scram-sha-256
) to connect to the Proxy, the administrator may allow sharding to use the md5
method for password authentication.
The configuration is as follows:
authority:
users:
- user: root@127.0.0.1
password: root
- user: sharding
password: sharding
authenticationMethodName: md5
authenticators:
md5:
type: MD5
privilege:
type: ALL_PERMITTED
illustrate:
root@127.0.0.1
and sharding
;MD5
method for password authentication for sharding
;root@127.0.0.1
, Proxy will automatically choose one according to the frontend protocol;ALL_PERMITTED
is specified.authority:
users:
- user: root@127.0.0.1
password: root
- user: sharding
password: sharding
privilege:
type: ALL_PERMITTED
illustrate:
root@127.0.0.1
and sharding
;authenticators
and authenticationMethodName
are not defined, Proxy will automatically choose the authentication method according to the frontend protocol;ALL_PERMITTED
is specified.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
illustrate:
root@127.0.0.1
and sharding
;authenticators
and authenticationMethodName
are not defined, Proxy will automatically choose the authentication method according to the frontend protocol;DATABASE_PERMITTED
is specified, authorize root@127.0.0.1
to access all logical databases (*
), and user sharding
can only access test_db
and sharding_db
.Please refer to Authority Provider for specific implementation of authority provider.