本文内容来自YashanDB官网,原文内容请见 https://www.yashandb.com/newsinfo/7281303.html?templateId=171...

设置密码复杂度

密码复杂度开关打开,打开后密码必须满足:①至少八位长度 ② 数字+大小写+特殊字符

alter system set \_CHECK\_PASSWORD\_COMPLEXITY=true;

示例:

<p><span>SQL> alter system set _CHECK_PASSWORD_COMPLEXITY=true;</span></p><p><span>Succeed.</span></p><p><span>SQL> create user user1 identified by simple1;</span></p><p><span>YAS-02317 failed to check password complexity for password must contain at least 8 characters</span></p><p><span>SQL> create user user1 identified by Short1_;</span></p><p><span>YAS-02317 failed to check password complexity for password must contain at least 8 characters</span></p><p><span>SQL> create user user1 identified by Complex1;</span></p><p><span>YAS-02317 failed to check password complexity for password must contain at least 1 special character</span></p><p><span>SQL> create user user1 identified by Complex1_;</span></p><p><span>Succeed.</span></p><p><span>SQL> drop user user1;</span></p>
备注:对于存储在数据库表中的密码,YashanDB提供\_CHECK\_PASSWORD\_COMPLEXITY(隐藏参数,默认值FALSE)用于控制是否开启密码强度控制,该参数默认为false不开启。弱密码对于系统安全有严重危害性,建议生产环境打开开关。开启密码强度控制后,YashanDB将在密码设置时进行强度校验,输入的密码需要满足 ①至少八位长度 ② 数字+大小写+特殊字符组合的条件后才能设置成功。 所有账号(包括SYS账号)的密码符合复杂度要求 所有账号(包括SYS账号)的密码需要满足 ①至少八位长度 ② 数字+大小写+特殊字符 示例:
<p><span>SYS/Abc123_2yP=y)</span></p><p><span>USER1/O1001ZGAfaes_0UP2</span></p>
设置密码策略 所有的profile(尤其是默认策略 - default),都需要设置: FAILED\_LOGIN\_ATTEMPTS 3 –- 登录失败锁定次数 PASSWORD\_LIFE\_TIME 90 –- 密码过期天数 PASSWORD\_REUSE\_TIME 1800 –- 密码复用间隔最小天数 PASSWORD\_REUSE\_MAX 6 –- 密码复用次数最大次数 PASSWORD\_LOCK\_TIME 1 –- 密码锁定天数 PASSWORD\_GRACE\_TIME 7 –- 密码过期前宽限天数 示例:
<p><span>alter profile default limit</span></p><p><span>FAILED_LOGIN_ATTEMPTS 3</span></p><p><span>PASSWORD_LIFE_TIME 90</span></p><p><span>PASSWORD_REUSE_TIME 1800</span></p><p><span>PASSWORD_REUSE_MAX 6</span></p><p><span>PASSWORD_LOCK_TIME 1</span></p><p><span>PASSWORD_GRACE_TIME 7;</span></p><p><span>SQL> alter profile default limit FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LIFE_TIME 90 PASSWORD_REUSE_TIME 1800 PASSWORD_REUSE_MAX 6 PASSWORD_LOCK_TIME 1 PASSWORD_GRACE_TIME 7;</span></p><p><span>Succeed.</span></p><p><span>SQL> select * from </span><span>dba_profiles</span><span>;</span></p><p><span>PROFILE RESOURCE_NAME RESOURCE_TYPE LIMIT</span></p><p><span>---------------------------------------------------------------- ---------------------------------------------------------------- ------------- ---------------------------------------------</span></p><p><span>DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD 3</span></p><p><span>DEFAULT PASSWORD_LIFE_TIME PASSWORD 90</span></p><p><span>DEFAULT PASSWORD_REUSE_TIME PASSWORD 1800</span></p><p><span>DEFAULT PASSWORD_REUSE_MAX PASSWORD 6</span></p><p><span>DEFAULT PASSWORD_LOCK_TIME PASSWORD 1</span></p><p><span>DEFAULT PASSWORD_GRACE_TIME PASSWORD 7</span></p><p><span>6 rows fetched.</span></p><p><span>SQL> select username, profile from </span><span>dba_users</span><span>;</span></p><p><span>USERNAME PROFILE</span></p><p><span>---------------------------------------------------------------- ----------------------------------------------------------------</span></p><p><span>SYS DEFAULT</span></p><p><span>DBBAK DEFAULT</span></p><p><span>DBMGR PROF_SYS</span></p><p><span>USER1 DEFAULT</span></p><p><span>USER2 DEFAULT</span></p><p><span>5 rows fetched.</span></p>
无实际使用用途且非管理员的账号处于锁定状态 无实际使用用途且非管理员的账号(例如:MDSYS)处于锁定状态 示例:
<p><span>SQL> select username, </span><span>account_status</span><span> from </span><span>dba_users</span><span>;</span></p><p><span>USERNAME ACCOUNT_STATUS</span></p><p><span>---------------------------------------------------------------- ---------------------------------</span></p><p><span>SYS OPEN</span></p><p><span>MDSYS LOCKED</span></p><p><span>2 rows fetched.</span></p>
禁用免密登录 对于崖山,禁止用户免密登录是检查$YASDB\_DATA/config/yasdb\_net.ini,应有配置ENABLE\_LOCAL\_OSAUTH = off img1 禁用默认密码 检查崖山默认密码是Cod-2022或者yasdb\_123,无法登录用户 示例:
<p><span>[yashan@host-10-76-249-193 </span><span>~]$</span><span>&nbsp;</span><span>yasql</span><span>&nbsp;sys/Cod-2022</span></p><p><span>YashanDB</span><span>&nbsp;SQL Release 22.2.12.100 aarch64</span></p><p><span>YAS-02143 invalid username/password, login denied</span></p><p><span>please input user name:</span></p><p><span>YASQL-00007 invalid username/password; logon denied</span></p><p><span>please input user name:</span></p><p><span>YASQL-00007 invalid username/password; logon denied</span></p><p><span>YASQL-00007 unable to CONNECT to Server after 3 attempts</span></p><p><span>[yashan@host-10-76-249-193 </span><span>~]$</span><span> </span><span>yasql</span><span> sys/yasdb_123</span></p><p><span>YashanDB</span><span> SQL Release 22.2.12.100 aarch64</span></p><p><span>YAS-02143 invalid username/password, login denied</span></p><p><span>please input user name:</span></p><p><span>YASQL-00007 invalid username/password; logon denied</span></p><p><span>please input user name:</span></p><p><span>YASQL-00007 invalid username/password; logon denied</span></p><p><span>YASQL-00007 unable to CONNECT to Server after 3 attempts</span></p>
加密存储 根据实际情况调整。 1如果客户无加密要求,则跳过此项设置。 2如果只对某些表存在加密要求,则建表DDL需要使用加密表空间。 示例:
<p><span>CREATE TABLESPACE USER1_SECURITY_DATA DATAFILE </span><span>'?/</span><span>dbfiles</span><span>/USER1_SECURITY_DATA1.dbf</span><span>' SIZE 2G AUTOEXTEND ON MAXSIZE UNLIMITED ENCRYPTION ENCRYPT;</span></p><p><span>CREATE TABLE USER1.TABLE1(COL1 INT PRIMRARY KEY, COL2 </span><span>VARCHAR(</span><span>100), xxx) TABLESPACE USER1_SECURITY_DATA;</span></p>
3如果用于所有表都存在加密要求,则不仅建表需要使用加密表空间,且用户的默认表空间也需要设置为加密表空间。 示例:
<p><span>CREATE TABLESPACE USER1_SECURITY_DATA DATAFILE </span><span>'?/</span><span>dbfiles</span><span>/USER1_SECURITY_DATA1.dbf</span><span>' SIZE 2G AUTOEXTEND ON MAXSIZE UNLIMITED ENCRYPTION ENCRYPT;</span></p><p><span>CREATE TABLE USER1.TABLE1(COL1 INT PRIMARY KEY, COL2 </span><span>VARCHAR(</span><span>100), xxx) TABLESPACE USER1_SECURITY_DATA;</span></p><p><span>ALTER USER USER1 DEFAULT TABLESPACE USER1;</span></p>
设置审计策略 已开启审计:日志功能,审计内容覆盖到每个用户,能够记录重要用户行为和重要安全事件。用户登录系统、自主访问控制的所有操作记录、重要用户行为(如增加/删除用户,删除库表)等。注意:对仅对DBA权限用户设置LOGON/LOGOFF审计(如果有多个DBA账号,都需要审计)
<p><span>alter system set UNIFIED_AUDITING=true;</span></p><p><span>CREATE AUDIT POLICY UP1 PRIVILEGES CREATE ANY TABLE, CREATE TABLE, ALTER ANY TABLE, DROP ANY TABLE, GRANT ANY PRIVILEGE, GRANT ANY OBJECT PRIVILEGE, GRANT ANY ROLE, CREATE USER, ALTER USER, DROP USER, DROP ANY ROLE, AUDIT SYSTEM;</span></p><p><span>CREATE AUDIT POLICY UP2 ACTIONS DROP TABLE, DROP ROLE, CREATE AUDIT POLICY, ALTER AUDIT POLICY, DROP AUDIT POLICY, AUDIT, NOAUDIT;</span></p><p><span>CREATE AUDIT POLICY UP3 ACTIONS LOGON, LOGOFF;</span></p><p><span>AUDIT POLICY UP3 BY SYS;</span></p><p><span>AUDIT POLICY UP1;</span></p><p><span>AUDIT POLICY UP2;</span></p>
示例: img2 img3 img4 设置审计清理策略 设置审计日志保留270天,每天清理一次过期的审计日志
<p><span>BEGIN</span></p><p><span>DBMS_SCHEDULER.CREATE_JOB (</span></p><p><span>'</span><span>update</span><span>audit_archive_time</span><span>',</span></p><p><span>'PLSQL_BLOCK',</span></p><p><span>'BEGIN DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE</span><span>TIMESTAMP(</span><span>DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED, sysdate-270);END;' ,</span></p><p><span>0,</span></p><p><span>SYSDATE,</span></p><p><span>'sysdate+1',</span></p><p><span>NULL,</span></p><p><span>'DEFAULT_JOB_CLASS',</span></p><p><span>TRUE,</span></p><p><span>FALSE,</span></p><p><span>'</span><span>update</span><span> audit archive time');</span></p><p><span>END;</span></p><p><span>/</span></p><p><span>BEGIN</span></p><p><span>DBMS_AUDIT_MGMT.CREATE_PURGE_JOB (</span></p><p><span>DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,</span></p><p><span>SYSDATE + 5/24,</span></p><p><span>'</span><span>sysdate</span><span> + 1',</span></p><p><span>'</span><span>audit</span><span>_job</span><span>',</span></p><p><span>TRUE);</span></p><p><span>END;</span></p><p><span>/</span></p>
示例:
<p><span>SQL> BEGIN</span></p><p><span>2 DBMS_SCHEDULER.CREATE_JOB (</span></p><p><span>3 '</span><span>update_audit_archive_time</span><span>',</span></p><p><span>4 'PLSQL_BLOCK',</span></p><p><span>5 'BEGIN DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_</span><span>TIMESTAMP(</span><span>DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED, sysdate-270);END;' ,</span></p><p><span>6 0,</span></p><p><span>7 SYSDATE,</span></p><p><span>8 'sysdate+1',</span></p><p><span>9 </span><span>NULL</span><span>,</span></p><p><span>10 'DEFAULT_JOB_CLASS',</span></p><p><span>11 TRUE,</span></p><p><span>12 FALSE,</span></p><p><span>13 'update audit archive time');</span></p><p><span>14 </span><span>END</span><span>;</span></p><p><span>15 /</span></p><p><span>PL/SQL Succeed.</span></p><p><span>SQL> select </span><span>job_name</span><span>, REPEAT_INTERVAL from DBA_SCHEDULER_JOBS;</span></p><p><span>JOB_NAME REPEAT_INTERVAL</span></p><p><span>---------------------------------------------------------------- ----------------------------------------------------------------</span></p><p><span>GATHER_STATS_JOB </span><span>cast(</span><span>TRUNC(SYSDATE+1) + 2/24 as timestamp)</span></p><p><span>UPDATE_AUDIT_ARCHIVE_TIME sysdate+1</span></p><p><span>2 rows fetched.</span></p><p><span>SQL> select </span><span>job_name</span><span>, JOB_ACTION from DBA_SCHEDULER_JOBS;</span></p><p><span>JOB_NAME JOB_ACTION</span></p><p><span>---------------------------------------------------------------- ----------------------------------------------------------------</span></p><p><span>GATHER_STATS_JOB begin DBMS_STATS.GATHER_DATABASE_</span><span>STATS(</span><span>'GATHER AUTO', 0, 8, 'FOR ALL COLUMNS SIZE AUTO', 'GLOBAL', TRUE, TRUE); end;</span></p><p><span>UPDATE_AUDIT_ARCHIVE_TIME BEGIN DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_</span><span>TIMESTAMP(</span><span>DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED, sysdate-270);END;</span></p><p><span>2 rows fetched.</span></p><p><span>SQL> BEGIN</span></p><p><span>2 DBMS_AUDIT_MGMT.CREATE_PURGE_JOB (</span></p><p><span>3 DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,</span></p><p><span>4 SYSDATE + 5/24,</span></p><p><span>5 '</span><span>sysdate</span><span> + 1',</span></p><p><span>6 '</span><span>audit_job</span><span>',</span></p><p><span>7 TRUE);</span></p><p><span>8 </span><span>END</span><span>;</span></p><p><span>9 /</span></p><p><span>PL/SQL Succeed.</span></p><p><span>SQL> select </span><span>job_name</span><span>, REPEAT_INTERVAL from DBA_SCHEDULER_JOBS;</span></p><p><span>JOB_NAME REPEAT_INTERVAL</span></p><p><span>---------------------------------------------------------------- ----------------------------------------------------------------</span></p><p><span>GATHER_STATS_JOB </span><span>cast(</span><span>TRUNC(SYSDATE+1) + 2/24 as timestamp)</span></p><p><span>UPDATE_AUDIT_ARCHIVE_TIME sysdate+1</span></p><p><span>AUDIT_JOB </span><span>sysdate</span><span> + 1</span></p><p><span>3 rows fetched.</span></p><p><span>SQL> select </span><span>job_name</span><span>, JOB_ACTION from DBA_SCHEDULER_JOBS;</span></p><p><span>JOB_NAME JOB_ACTION</span></p><p><span>---------------------------------------------------------------- ----------------------------------------------------------------</span></p><p><span>GATHER_STATS_JOB begin DBMS_STATS.GATHER_DATABASE_</span><span>STATS(</span><span>'GATHER AUTO', 0, 8, 'FOR ALL COLUMNS SIZE AUTO', 'GLOBAL', TRUE, TRUE); end;</span></p><p><span>UPDATE_AUDIT_ARCHIVE_TIME BEGIN DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_</span><span>TIMESTAMP(</span><span>DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED, sysdate-270);END;</span></p><p><span>AUDIT_JOB BEGIN DBMS_AUDIT_MGMT.CLEAN_AUDIT_</span><span>TRAIL(</span><span>DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED, true); END;</span></p><p><span>3 rows fetched.</span></p>
收尾 包含但不限于:

YashanDB
1 声望0 粉丝

崖山数据库系统YashanDB是深圳计算科学研究院自主设计研发的新型数据库管理系统,融入原创的有界计算、近似计算、并行可扩展和跨模融合计算理论,可满足金融、政企、能源等关键行业对高性能、高并发及高安全性的...