yashandb用户管理及权限介绍:
一、三权分立模式介绍:
YashanDB提供ENABLE_SEPARATE_DUTY参数用于控制三权分立开关,默认关闭,该参数需重启生效。
三权分立对应的内置角色
SQL> show parameter ENABLE_SEPARATE_DUTY
NAME VALUE
----------------------- --------
ENABLE_SEPARATE_DUTY FALSE
1 row fetched.
DBA 不具有审计、安全管理相关权限,只对当前用户schema下的表、索引、自定义视图具有DML权限,但仍具有系统表与系统视图的查看权限,及数据库的DDL权限。
SECURITY_ADMIN 具有管理用户、角色与权限等安全相关的权限。
AUDIT_ADMIN 具有创建、删除、使能 、修改、去使能审计策略等与审计相关的权限。
二、用户分为系统用户与普通用户。
1、系统用户是预置在YashanDB产品中的用户,其中名称为sys的用户,是超级管理员,负责数据库系统的管理,
拥有全部的权限。其密码通过yaspwd工具生成和维护。
2、普通用户是通过CREATE USER语句创建的用户,对普通用户进行授权后,即可明确其对应的身份。
普通用户的创建示例
CREATE USER username IDENTIFIED BY 123;
-- 创建一个用户username,密码为123
CREATE USER username2 IDENTIFIED BY PASSWORD DEFAULT TABLESPACE users;
-- 创建一个用户username2,密码为字符串PASSWORD,默认表空间为users表空间。
CREATE USER ycp IDENTIFIED BY 123 PROFILE DEFAULT;
-- 创建一个用户ycp,密码123,密码策略指定为default(default是系统内置的默认profile)
普通用户的修改示例
--修改用户密码
ALTER USER ycp IDENTIFIED BY "23%ad1";
ALTER USER ycp identified by values S:515112D1A38F5D717C8A8FA2B4C4E01910FF51A111B70CCA4938A650E492BEE28FBC8C9D47B7D38473A5;
--修改用户的表空间
ALTER USER ycp DEFAULT TABLESPACE users;
--使用户密码失效
ALTER USER ycp PASSWORD EXPIRE;
--锁定/解锁用户
ALTER USER ycp ACCOUNT LOCK/UNLOCK;
--使用户密码失效,且锁定用户
ALTER USER ycp PASSWORD EXPIRE ACCOUNT LOCK;
用户的删除示例:
DROP USER username;
DROP USER username2 CASCADE;
修改sys用户密码方式:
1、ALTER USER SYS IDENTIFIED BY“yasdb_123”; ##alter user方法修改密码
2、cd $YASDB_DATA/instance/
yaspwd file=yasdb.pwd password=yasdb_123 ## yaspwd工具修改密码
3、yasboot cluster password set -n newpasswd -c yashandb ## yasboot工具修改密码
用户密码强度控制参数_CHECK_PASSWORD_COMPLEXITY
_CHECK_PASSWORD_COMPLEXITY(隐藏参数,默认值FALSE)用于设置是否开启密码强度控制,该参数默认为false不开启
动态修改,无需重启数据库生效
ALTER SYSTEM SET _CHECK_PASSWORD_COMPLEXITY = true;
ALTER SYSTEM SET _CHECK_PASSWORD_COMPLEXITY = false;
查询自定义用户有哪些系统权限:
SELECT a.* FROM DBA_SYS_PRIVS a JOIN dba_users b ON a.GRANTEE = b.username WHERE b.DATABASE_MAINTAINED = 'N';
查询自定义用户有哪些对象权限:
SELECT a.* FROM DBA_TAB_PRIVS a JOIN dba_users b ON a.GRANTEE = b.username WHERE b.DATABASE_MAINTAINED = 'N';
查询自定义用户有哪些角色权限:
SELECT a.* FROM DBA_ROLE_PRIVS a JOIN dba_users b ON a.GRANTEE = b.username WHERE b.DATABASE_MAINTAINED = 'N';
三、角色介绍:
SQL> SELECT * FROM DBA_ROLES where TYPE='NORMAL ROLE';
ROLE ROLE_ID TYPE SYS_MAINTAINED
-------------------------------- ------------- --------------
AUDIT_ADMIN -502 NORMAL ROLE YES
AUDIT_VIEWER -503 NORMAL ROLE YES
CONNECT -505 NORMAL ROLE YES
DBA -500 NORMAL ROLE YES
LBAC_DBA -511 NORMAL ROLE YES
PUBLIC -501 NORMAL ROLE YES
RESOURCE -506 NORMAL ROLE YES
SECURITY_ADMIN -504 NORMAL ROLE YES
SELECT_CATALOG_ROLE -509 NORMAL ROLE YES
SYSBACKUP -510 NORMAL ROLE YES
SYSDBA -507 NORMAL ROLE YES
SYSOPER -508 NORMAL ROLE YES
12 rows fetched.
角色的创建
CREATE ROLE role1;
角色的授权
GRANT CREATE TABLE TO role1;
GRANT SELECT ANY TABLE TO role2;
GRANT INSERT ON ycp.t1 TO role2;
GRANT INSERT ON ycp.t2 TO role2;
角色的删除
DROP ROLE role1;
查询自定义role有哪些系统权限:
SELECT a.* FROM DBA_SYS_PRIVS a JOIN dba_roles b ON a.GRANTEE = b.ROLE WHERE b.TYPE = 'NORMAL ROLE' AND b.SYS_MAINTAINED = 'NO';
查询自定义role有哪些对象权限:
SELECT a.* FROM DBA_TAB_PRIVS a JOIN dba_roles b ON a.GRANTEE = b.ROLE WHERE b.TYPE = 'NORMAL ROLE' AND b.SYS_MAINTAINED = 'NO';
查询自定义role有哪些角色权限:
SELECT a.* FROM DBA_ROLE_PRIVS a JOIN dba_roles b ON a.GRANTEE = b.ROLE WHERE b.TYPE = 'NORMAL ROLE' AND b.SYS_MAINTAINED = 'NO';
四、profile概要文件
SQL> col profile for a10
SQL> col resource_name for a30
SQL> select * from dba_profiles;
PROFILE RESOURCE_NAME RESOURCE_TYPE LIMIT
---------- ------------------------------ ------------- ----------------------------------------------------------------
DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD 10
DEFAULT PASSWORD_LIFE_TIME PASSWORD UNLIMITED
DEFAULT PASSWORD_REUSE_TIME PASSWORD UNLIMITED
DEFAULT PASSWORD_REUSE_MAX PASSWORD UNLIMITED
DEFAULT PASSWORD_LOCK_TIME PASSWORD 1
DEFAULT PASSWORD_GRACE_TIME PASSWORD UNLIMITED
DEFAULT SESSIONS_PER_USER KERNEL UNLIMITED
DEFAULT IDLE_TIME KERNEL UNLIMITED
DEFAULT INVITED_NODES IPLIST UNLIMITED
DEFAULT EXCLUDED_NODES IPLIST UNLIMITED
10 rows fetched.
FAILED_LOGIN_ATTEMPTS 帐户被锁定之前可以错误尝试的次数,默认值10次
PASSWORD_LIFE_TIME 密码可以被使用的天数(生命长度),默认不限制(天数)
PASSWORD_REUSE_TIME 密码可复用的间隔时间,默认不限制
PASSWORD_REUSE_MAX 密码满足可复用的必要变更次数,假设其为N,则表示新密码不能被设置为最近N次使用过的密码,默认不限制
PASSWORD_LOCK_TIME 超过错误尝试次数后用户被锁定的天数,默认值1天
PASSWORD_GRACE_TIME 密码过期之后还可宽限多少天使用原密码(额外宽限期),默认不限制
SESSIONS_PER_USER
IDLE_TIME
INVITED_NODES
EXCLUDED_NODES
创建profile策略:
CREATE PROFILE prof_1 LIMIT FAILED_LOGIN_ATTEMPTS 1 PASSWORD_LIFE_TIME 180;
CREATE PROFILE prof_2 LIMIT FAILED_LOGIN_ATTEMPTS DEFAULT PASSWORD_LIFE_TIME 30*2.5;
CREATE PROFILE prof_3 LIMIT FAILED_LOGIN_ATTEMPTS DEFAULT PASSWORD_LIFE_TIME UNLIMITED;
CREATE PROFILE prof_4 LIMIT
FAILED_LOGIN_ATTEMPTS 1
PASSWORD_LIFE_TIME 180
PASSWORD_REUSE_TIME UNLIMITED
PASSWORD_REUSE_MAX UNLIMITED
PASSWORD_LOCK_TIME 1
PASSWORD_GRACE_TIME 0;
修改和删除profile策略
ALTER PROFILE prof_1 LIMIT FAILED_LOGIN_ATTEMPTS 1 PASSWORD_LIFE_TIME 365;
ALTER PROFILE prof_2 LIMIT FAILED_LOGIN_ATTEMPTS DEFAULT PASSWORD_LIFE_TIME 30*5;
ALTER PROFILE prof_3 LIMIT FAILED_LOGIN_ATTEMPTS DEFAULT PASSWORD_LIFE_TIME DEFAULT;
ALTER USER YCP PROFILE prof_3;
ALTER USER YCP PROFILE DEFAULT;
DROP PROFILE prof_1;
DROP PROFILE prof_2 CASCADE;
五、身份认证
1、口令认证方式
接收使用YashanDB账号发起连接请求的用户,并对其进行口令认证,
通过认证的账号可以成功登录数据库。
2、操作系统认证方式
忽略用户输入的YashanDB账号,只对其登录数据库服务器的账号进行认证,通过认证的账号可以成功登录数据库。
操作系统认证方式只允许SYS用户在本地服务器上登录数据库时使用。
开启操作系统认证:
1、数据库配置文件中新增或者修改操作系统认证配置,修改后重启数据库。
cd $YASDB_DATA/config # 数据库环境须正确配置YASDB_DATA环境变量
vi yasdb_net.ini # 在配置文件中设置以下内容,on为打开操作系统认证,off为关闭
ENABLE_LOCAL_OSAUTH = on
2、配置操作系统用户组
groups
groupadd YASDBA # 检查操作系统用户组,没有该组则新增该组
usermod -a -G YASDBA yashan
groups yashan # 将数据库程序文件属主yashan增加到YASDBA组并验证
yasql / as sysdba # 进行操作系统认证方式登录数据库
[yashan@centos7 ~]$ yasql / as sysdba
YashanDB SQL Personal Edition Release 23.2.3.100 x86_64
Connected to:
YashanDB Server Personal Edition Release 23.2.3.100 x86_64 - X86 64bit Linux
SQL>
YCA官方报名链接:https://www.yashandb.com/YCA_courses




