ORACLE_OCP多租户之CDB与PDB的安全管理
- 文章目标
- 管理公共用户和本地用户
- 管理公共和本地角色
- 管理公共和本地权限
- 管理公共用户的CONTAINER_DATA属性
- 管理公共和本地概要文件
一、用户,角色和权限
- 每个用户都可以在单个数据库的上下文中进行授权。
- 角色是权限的集合。
二、本地用户,角色和权限
- 每个本地用户都可以在单个PDB的上下文中进行授权。
- 本地角色是用户登录时分配给特定PDB的权限集合。
- 本地权限是在单个PDB上下文中授予的权限
三、创建一个本地用户
-
具有适当权限的本地用户可以创建另一个本地用户。
-
语法与非CDB相同。
SQL> CONNECT system@pdb1
SQL> CREATE USER george IDENTIFIED BY x; -
您不能在根容器中创建本地用户。
-
本地用户仅连接到它所在的PDB。
SQL> CONNECT george@pdb1
四、公共用户
五、创建一个公共用户
-
公共用户可以创建公共用户和本地用户。
-
CONTAINER子句确定创建的用户的类型。
-
Create a common user in the root container:
SQL> CREATE USER c##jim IDENTIFIED BY x
2 CONTAINER=ALL; -
Create a local user in a PDB:
SQL> CREATE USER l_fred IDENTIFIED BY y
2 CONTAINER=CURRENT; -
公共用户可以连接所有容器:
SQL> CONNECT c##jim@cdb1 jim connection in root
SQL> CONNECT c##jim@pdb1 jim connection in pdb1
SQL> CONNECT c##jim@pdb2 jim connection in pdb2
六、公共和本地Schemas
七、公共和本地权限
- 跨所有容器授予的权限是公共权限
- 在单个PDB上下文中授予的权限是本地权限。
- 本地用户只能在PDB上下文中授权。
- 公共用户只能在其连接的PDB上下文中授权。
- 连接到根容器的公共用户可以行使跨容器权限,例如创建公共用户。
八、授予公共和本地权限
九、授予和收回权限
-
在根容器下授权:成为公共权限
SQL> GRANT drop user TO c##_user CONTAINER=ALL;
-
在本地授予权限:成为本地权限
SQL> GRANT alter user TO local_user CONTAINER=CURRENT;
-
授予本地权限.
SQL> GRANT select any table TO local_user;
-
收回公共权限.
SQL> REVOKE drop user FROM c##_user CONTAINER=ALL;
-
收回本地权限
SQL> REVOKE alter user FROM local_user;
十、创建公共和本地角色
十一、创建公共和本地角色
-
本地用户可以创建本地角色。
SQL> CREATE ROLE L_HR CONTAINER=CURRENT;
-
公共用户可以创建公共角色或本地角色。
SQL> CREATE ROLE C##_R1 CONTAINER=ALL;
-
可以将本地角色授予本地或公共用户。
-
可以将公共角色授予本地或公共用户。
-
可以将本地角色授予公共角色。
-
可以将公共角色授予本地角色。
十二、向角色授予公共或本地权限/角色
十三、向用户授予公共和本地角色
十四、角色的授予和收回
-
授予公共角色给公共用户.
SQL> GRANT c##_role TO c##_user CONTAINER=ALL;
-
授予本地角色给本地用户.
SQL> GRANT local_role TO local_user CONTAINER=CURRENT;
-
授予本地角色给公共用户.
SQL> GRANT l_role TO c##_user CONTAINER=CURRENT;
-
授予本地公共用户授予公共角色.
SQL> GRANT c##_role TO c##_user CONTAINER=CURRENT;
-
收回本地角色.
SQL> REVOKE c##_role FROM c##_user CONTAINER=ALL;
-
收回本地或公共角色.
SQL> REVOKE local_role FROM local_user;
SQL> REVOKE c##_role FROM c##_user CONTAINER=CURRENT;
十五、创建共享和非共享对象
- 非共享表可以由公共用户和本地用户创建。
- 公共用户创建的公共用户不能创建共享表。
- 共享表可以由Oracle提供的用户创建。
十六、使公共用户可以访问特定PDB中的数据
十七、查找有关CONTAINER_DATA属性的信息
- 查找有关默认(用户级别)和特定于对象的CONTAINER_DATA属性的信息,这些属性明确设置为DEFAULT以外的值。
十八、创建公共和本地概要文件(PROFILE)
-
本地用户可以创建本地概要文件。
SQL> CREATE PROFILE PROF_SCHEMA
2 limit PASSWORD_LIFE_TIME 900
3 CONTAINER=CURRENT; -
公共用户可以创建公共或本地概要文件。
SQL> CREATE PROFILE C##_DEVELOPER
2 limit PASSWORD_LIFE_TIME 3600
3 CONTAINER=ALL; -
可以将本地概要文件分配给本地或公共用户。
-
可以将公共概要文件分配给本地或公共用户。
十九、为用户分配公共和本地配置文件
二十、Profiles概要文件分配
-
公共分配的公共概要文件.
SQL> ALTER USER c##user PROFILE c##prof CONTAINER=ALL;
-
将本地概要文件分配给本地用户.
SQL> ALTER USER jim PROFILE developer;
-
将本地概要文件分配给公共用户.
SQL> ALTER USER c##user PROFILE developer;
-
公共分配本地概要文件DEFALUT形式.
SQL> ALTER USER c##user PROFILE DEFAULT CONTAINER=ALL;
-
在本地分配本地概要文件DEFAULT形式.
SQL> ALTER USER jim PROFILE DEFAULT
2 CONTAINER=CURRENT; -
仅在本地修改概要文件的限制DEFAULT.
SQL> ALTER PROFILE DEFAULT LIMIT password_file_time 1;
二十一、对定义者权限的限制
- 本地用户不能在公共用户的架构上行使本地系统权限。