<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>PWD_POLICY &#8211; 良的世界</title>
	<atom:link href="https://www.lemonary.cn/tag/pwd_policy/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.lemonary.cn</link>
	<description></description>
	<lastBuildDate>Wed, 29 Apr 2026 06:14:19 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://www.lemonary.cn/wp-content/uploads/2024/12/profile-150x150.jpg</url>
	<title>PWD_POLICY &#8211; 良的世界</title>
	<link>https://www.lemonary.cn</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>达梦数据库的用户管理</title>
		<link>https://www.lemonary.cn/%e8%be%be%e6%a2%a6%e6%95%b0%e6%8d%ae%e5%ba%93%e7%9a%84%e7%94%a8%e6%88%b7%e7%ae%a1%e7%90%86/</link>
					<comments>https://www.lemonary.cn/%e8%be%be%e6%a2%a6%e6%95%b0%e6%8d%ae%e5%ba%93%e7%9a%84%e7%94%a8%e6%88%b7%e7%ae%a1%e7%90%86/#respond</comments>
		
		<dc:creator><![CDATA[shine]]></dc:creator>
		<pubDate>Tue, 31 Dec 2024 03:11:22 +0000</pubDate>
				<category><![CDATA[DM]]></category>
		<category><![CDATA[PWD_POLICY]]></category>
		<category><![CDATA[ROLE]]></category>
		<category><![CDATA[USER]]></category>
		<guid isPermaLink="false">https://www.lemonary.cn/?p=1229</guid>

					<description><![CDATA[一、用户管理 用户是操作者的一个身份。DM 预定义用户： PWD_POLICY 系统口令策略【旧】： 口令策略 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading" id="一、用户管理">一、用户管理</h2>



<p class="wp-block-paragraph">用户是操作者的一个身份。DM 预定义用户：</p>



<ul class="wp-block-list">
<li>SYS：系统内置用户，不能直接登录。</li>



<li>SYSDBA：数据库管理员，拥有 DBA 角色。</li>



<li>SYSAUDITOR：数据库审计管理员。</li>



<li>SYSSSO：数据库安全管理员，拥有强制访问控制等权限。</li>



<li>SYSDBO：安全版本才有此用户，对象操作员。</li>
</ul>



<p class="wp-block-paragraph">PWD_POLICY 系统口令策略【旧】：</p>



<ul class="wp-block-list">
<li>0 无限制。但总长度不得超过 48 个字节</li>



<li>1 禁止与用户名相同</li>



<li>2 口令长度需大于等于 INI 参数 PWD_MIN_LEN 设置的值</li>



<li>4 至少包含一个大写字母（A-Z）</li>



<li>8 至少包含一个数字（ 0 &#8211; 9）</li>



<li>16 至少包含一个标点符号（英文输入法状态下，除&#8221;和空格外的所有符号）</li>
</ul>



<p class="wp-block-paragraph">口令策略可单独应用，也可组合应用。组合应用时，如需要应用策略 2 和 4，则设置口令策略为 2+4=6 即可。</p>



<p class="wp-block-paragraph">PWD_POLICY 系统口令策略【新】：</p>



<p class="wp-block-paragraph">设置系统缺省口令策略。取值：15、31。<br>15：禁止与用户名相同、口令长度需大于等于 INI 参数<code>PWD_MIN_LEN</code>设置的值、须同时包含大写字母(A~Z)和小写字母(A-Z)、至少包含一个数字(0-9)；<br>31：除了取值 15 的策略外，还要求至少包含一个标点符号(英文输入法状态下，除“ 和空格外的所有符号)。<br>DMINIT 工具中 SYSDBA_PWD、SYSAUDITOR_PWD、SYSSSO_PWD、SYSDBO_PWD 使用的口令策略，请参考 PWD_POLICY 为 15。</p>



<p class="wp-block-paragraph"><strong>案例</strong></p>



<p class="wp-block-paragraph">（1）指定系统口令策略：包含大写字母，包含数字，长度大于 9。</p>



<pre class="wp-block-code"><code>SELECT * FROM V$DM_INI WHERE PARA_NAME = 'PWD_MIN_LEN';</code></pre>



<p class="wp-block-paragraph">INI 参数 PWD_MIN_LEN 默认即 9。</p>



<p class="wp-block-paragraph">所以只需要设置 PWD_POLICY=2+4+8=14 即可【旧，新版只支持15或31】</p>



<pre class="wp-block-code"><code>SP_SET_PARA_VALUE(1, 'PWD_POLICY', 14);
--或者
ALTER SYSTEM SET 'PWD_POLICY'=14 BOTH;</code></pre>



<p class="wp-block-paragraph">（2）创建用户时指定密码策略。</p>



<pre class="wp-block-code"><code>CREATE USER "XXX" IDENTIFIED BY "XXXXXXXXX" PASSWORD_POLICY 31 DEFAULT TABLESPACE "TBS" DEFAULT INDEX TABLESPACE "TBS";</code></pre>



<p class="wp-block-paragraph">（3）创建/解除PROFILE管理用户资源限制</p>



<pre class="wp-block-code"><code>CREATE PROFILE "PROFILE-TEST" LIMIT FAILED_LOGIN_ATTEMPS 5, PASSWORD_LOCK_TIME 3, SESSION_PER_USER 10;
ALTER USER "TEST" PROFILE "PROFILE-TEST";</code></pre>



<p class="wp-block-paragraph">配置后TEST用户资源限制即PROFILEZ中的资源限制。</p>



<p class="wp-block-paragraph">解除PROFILE资源限制，改为默认；并删除PROFILE文件。</p>



<pre class="wp-block-code"><code>ALTER USER "TEST" PROFILE DEFAULT;
DROP PROFILE "PROFILE-TEST";</code></pre>



<p class="wp-block-paragraph">（4）用户的锁定与解锁</p>



<pre class="wp-block-code"><code>ALTER USER "TEST" ACCOUNT LOCK;
ALTER USER "TEST" ACCOUNT UNLOCK;</code></pre>



<p class="wp-block-paragraph">（5）直接使用LIMIT子句限制用户资源</p>



<pre class="wp-block-code"><code>示例：
ALTER USER "TEST" LIMIT FAILED_LOGIN_ATTEMPS 4, PASSWORD_LOCK_TIME 2, SESSION_PER_USER 5;
节点最大会话数
alter user TEST limit SESSION_PER_USER 100;
全局最大会话数
alter user TEST limit GLOBAL_SESSION_PER_USER 100;
会话空闲期【用户会话的最大空闲时间，1~1440分钟】
alter user TEST limit CONNECT_IDLE_TIME 360;
会话持续期【1~1440分钟】
alter user TEST limit CONNECT_TIME 360;
登录失败次数【1~100】
alter user TEST limit FAILED_LOGIN_ATTEMPS 5;
口令有效期【1~365天】
alter user TEST limit PASSWORD_LIFE_TIME 90;
口令等待期【一个口令在可以重新使用之前必须经过的天数】
alter user TEST limit PASSWORD_REUSE_TIME 90;
口令变更次数【一个口令在可以重新使用前必须改变的次数】
alter user TEST limit PASSWORD_REUSE_MAX 3;
口令锁定期【1~1440分钟】
alter user TEST limit PASSWORD_LOCK_TIME 30;
口令宽限期【用户口令过期后的宽限时间】
alter user TEST limit PASSWORD_GRACE_TIME 30;
会话使用CPU时间【秒】
alter user TEST limit CPU_PER_SESSION 259200;
请求使用CPU时间【秒】
alter user TEST limit CPU_PER_CALL 259200;
会话读取页数
alter user TEST limit READ_PER_SESSION 3072;
请求读取页数
alter user TEST limit READ_PER_CALL 3072;
会话私有内存
alter user TEST limit MEM_SPACE 10240;</code></pre>



<p class="wp-block-paragraph">（6）查询用户的资源限制</p>



<pre class="wp-block-code"><code>SELECT D.USERNAME "用户名" ,
       D.ACCOUNT_STATUS "账号状态" ,
       D.DEFAULT_TABLESPACE "表空间" ,
       S.SESS_PER_USER "会话限制" ,
       S.CONN_IDLE_TIME "用户会话的最大空闲时间",
       S.FAILED_NUM "尝试登录次数" ,
       S.LIFE_TIME "口令有效期" ,
       S.LOCK_TIME "锁定时间" ,
       S.GRACE_TIME "口令过期后的宽限时间",
       S.PWD_POLICY "密码策略",
       S.ALLOW_ADDR "允许的IP地址",
       S.NOT_ALLOW_ADDR "不允许的IP地址"
  FROM DBA_USERS D
  JOIN SYSUSERS S
    ON D.USER_ID=S.ID
	WHERE D.USERNAME NOT IN ('SYSDBA','SYS','SYSSSO','SYSAUDITOR');</code></pre>



<p class="wp-block-paragraph">（7）删除用户</p>



<pre class="wp-block-code"><code>DROP USER IF EXISTS "TEST";
DROP USER IF EXISTS "TEST" CASCADE;--级联删除</code></pre>



<h2 class="wp-block-heading" id="二、权限管理">二、权限管理</h2>



<p class="wp-block-paragraph">权限包含：系统权限和对象权限。</p>



<p class="wp-block-paragraph">系统默认角色</p>



<ul class="wp-block-list">
<li>VTI：系统动态视图（V$开头）的查询权限</li>



<li>SOI：系统表（SYS开头的表）的查询权限</li>



<li>SVI：新版新增</li>
</ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">注意：视图V$DYNAMIC_TABLES记录着所有的系统动态视图</p>
</blockquote>



<p class="wp-block-paragraph"><strong>案例</strong></p>



<p class="wp-block-paragraph">（1）赋予创建表、创建索引、创建视图的权限</p>



<pre class="wp-block-code"><code>GRANT CREATE TABLE, CREATE INDEX, CREATE VIEW TO "TEST";</code></pre>



<p class="wp-block-paragraph">（2）注意：在赋予更新或删除某个表数据权限时，如果该用户没有对应表的查询权限，那么在赋予权限后，执行UPDATE或者DELETE会报错。</p>



<pre class="wp-block-code"><code>GRANT UPDATE, DELETE ON DMHR.EMPLOYEE TO "TEST";

&#91;dmdba@centos-dm bin]$ ./disql TEST/dameng123:5236

服务器&#91;LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 10.383(ms)
disql V8
SQL> DELETE FROM DMHR.EMPLOYEE WHERE EMPNO='3333';
DELETE FROM TEST.EMPLOYEES WHERE EMPNO='3333';
&#91;-5504]:没有&#91;EMPLOYEE]对象的查询权限.
已用时间: 1.292(毫秒). 执行号:0.</code></pre>



<p class="wp-block-paragraph">业务用户最小权限检查</p>



<pre class="wp-block-code"><code>-- 查找拥有高危管理权限或角色的普通账号
SELECT DISTINCT 
       U.USERNAME AS 账号,
       CASE 
           WHEN R.GRANTED_ROLE IS NOT NULL THEN '高危角色'
           ELSE '高危系统权限'
       END AS 风险类型,
       COALESCE(R.GRANTED_ROLE, P.PRIVILEGE) AS 具体权限
FROM DBA_USERS U
LEFT JOIN DBA_ROLE_PRIVS R 
    ON U.USERNAME = R.GRANTEE AND R.GRANTED_ROLE IN ('DBA')   -- 可添加其他高危角色
LEFT JOIN DBA_SYS_PRIVS P 
    ON U.USERNAME = P.GRANTEE 
    AND (P.PRIVILEGE LIKE '%ANY%'                              -- 所有含 ANY 的权限
         OR P.PRIVILEGE IN ('CREATE USER','ALTER USER','DROP USER',
                            'GRANT ANY PRIVILEGE','BACKUP DATABASE',
                            'RESTORE DATABASE','ALTER DATABASE'))
WHERE U.USERNAME NOT IN ('SYSDBA','SYS','SYSAUDITOR','SYSSSO')   -- 排除内置三权分立账号
  AND (R.GRANTED_ROLE IS NOT NULL OR P.PRIVILEGE IS NOT NULL)
ORDER BY 账号, 风险类型;</code></pre>



<h2 class="wp-block-heading" id="三、角色管理">三、角色管理</h2>



<ul class="wp-block-list">
<li>角色是一组权限的集合。</li>



<li>角色使权限管理更加方便。</li>



<li>依赖于业务需要。</li>



<li>创建角色赋予用户才有意义。</li>
</ul>



<p class="wp-block-paragraph">创建角色</p>



<pre class="wp-block-code"><code>CREATE ROLE "XXX";</code></pre>



<p class="wp-block-paragraph">角色可以禁用，默认创建后是启用状态，一旦角色禁用，则其权限将不再生效。</p>



<p class="wp-block-paragraph"><strong>案例</strong></p>



<p class="wp-block-paragraph">（1）创建角色并赋予TEST用户</p>



<pre class="wp-block-code"><code>CREATE ROLE "ROLEDM";
GRANT SELECT ON TEST.DEPARTMENTS TO "ROLEDM";
GRANT SELECT ON DMHR.DEPARTMENTS TO "ROLEDM";
GRANT "ROLEDM" TO "TEST";</code></pre>



<p class="wp-block-paragraph">（2）角色禁用</p>



<pre class="wp-block-code"><code>SELECT * FROM V$IFUN WHERE NAME LIKE '%ROLE%';
--查看角色相关的方法，可知禁用角色的方法为SP_SET_ROLE，0 为禁用，1 为启用。
--例如
SP_SET_ROLE('ROLEDM', 0);</code></pre>



<p class="wp-block-paragraph">（3）查看用户所拥有的角色</p>



<pre class="wp-block-code"><code>SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE = '用户名';
SELECT * FROM USER_ROLE_PRIVS; --查询当前用户角色</code></pre>



<p class="wp-block-paragraph">（4）查询默认角色的权限</p>



<pre class="wp-block-code"><code>SELECT * FROM SYS.DBA_SYS_PRIVS WHERE GRANTEE IN ('PUBLIC','RESOURCE','DBA');</code></pre>



<h2 class="wp-block-heading" id="四、相关数据字典">四、相关数据字典</h2>



<ul class="wp-block-list">
<li>DBA_USERS</li>



<li>DBA_PROFILES</li>



<li>SYSUSERS</li>



<li>DBA_ROLE_PRIVS</li>



<li>USER_ROLE_PRIVS</li>



<li>V$IFUN</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://www.lemonary.cn/%e8%be%be%e6%a2%a6%e6%95%b0%e6%8d%ae%e5%ba%93%e7%9a%84%e7%94%a8%e6%88%b7%e7%ae%a1%e7%90%86/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
