我们使用机器学习技术将英文博客翻译为简体中文。您可以点击导航栏中的“中文(简体)”切换到英文版本。
使用多租户选项在 Amazon RDS Custom for Oracle 中管理用户和权限
适用于 Oracle 的 Amazon RDS Custom 是一项托管数据库服务,适用于需要访问底层操作系统和数据库环境的传统、定制和打包应用程序。适用于 Oracle 的 Amazon RDS Custom 在使用企业版和标准版的 Oracle 数据库版本 19c 上支持 Oracle 多租户选项。在此版本中,企业版上的 RDS Custom for Oracle 数据库 (DB) 实例可以作为托管一个或多个可插拔数据库 (PDB) 的多租户容器数据库 (CDB) 运行。但是,Oracle 在标准版中最多允许三个 PDB。PDB 是一组架构、架构对象和非架构对象,从逻辑上讲,它们在客户端看来是常规数据库。
Oracle 多租户功能在 12cR1 (12.1.0.1) 及更高版本的 Oracle 数据库中可用。这使客户能够在单个 Oracle 数据库中使用多个 PDB,从而便于改善环境的可管理性和整合。在 Oracle 多租户架构中,有多种用户管理方法可用于在容器数据库 (CDB) 和 PDB 中创建和管理用户帐户。在这篇文章中,我们讨论了管理用户的选项以及如何将其设置和用于不同的场景。
普通用户账号
存在于所有当前和未来容器中的用户可以在这些容器中导航。普通用户是从根目录创建的,并自动复制到除种子 PDB 之外的每个 PDB 中。普通用户可以连接到任何 PDB,前提是他们在每个 PDB 中具有相应的权限。分配给普通用户的名称以 COMMON_USER_PREFIX
初始化参数指定的字符开头,C##
默认情况下为初始化参数。
在亚马逊云科技中使用多租户数据库时,注意两个亚马逊云科技拥有的账户至关重要:C##RDSADMIN
和 C##RDS_DATAGUARD
。这些账户在数据库管理中起着至关重要的作用。
C##RDSADMIN 账户
亚马逊云科技使用此账户在 Oracle 数据库中进行管理。这是一个 RDS 自动创建和管理的普通用户帐户。该账户的主要用途包括:
- 执行数据库管理任务
- 执行维护操作
- 应用补丁和更新
- 监控数据库运行状况和性能
- 管理备份和恢复
C##RDS_DATAGUARD 账户
该账户与亚马逊云科技中的 Oracle Data Guard 功能特别相关。Oracle Data Guard 是一项为 Oracle 数据库提供高可用性、数据保护和灾难恢复的功能。该账户的主要用途包括:
- 管理 Data Guard 配置
- 促进备用数据库的创建和维护
- 处理切换和故障转移操作
- 监控和维护与 Data Guard 相关的流程
请务必注意,此账户拥有 RDS 有效管理数据库所需的高级权限,应谨慎处理:
- 请勿修改权限:不要更改与这些帐户关联的权限。
- 不要删除帐户:在任何情况下都不应将这些帐户从数据库中删除。
- 登录触发器注意事项:如果实现登录触发器,请确保将这些亚马逊云科技拥有的账户排除在触发器的范围之外。
登录触发器的代码片段 - 不要更改管理账户的密码:SYS、SYSTEM、RDSADMIN 和 RDS_DATAGUARD 等账户的密码会定期轮换。
- 不要删除 DBA 角色:维护与这些账户关联的 DBA 角色至关重要,因为它们对于正确的数据库管理和操作至关重要。
遵守这些准则有助于维护多租户数据库的完整性,并防止亚马逊云科技管理的功能可能受到干扰。
CDB 中的每个容器都包含普通用户和本地用户。任何用户,无论是普通用户还是本地用户,都只能在用户连接的特定容器内行使授予的权限。
以下代码块的目的是说明如何创建对多租户数据库中的所有容器具有广泛权限的普通用户。它演示了用户创建、权限授予和验证用户在不同容器中的存在的过程。此示例对于了解如何在 Oracle 的多租户架构中管理普通用户特别有用。
本地用户账户
本地用户是指仅存在于单个 PDB 中的用户,也就是他们的创建地。本地用户是在他们需要访问的 PDB 中创建的,只能连接到该 PDB。同一 CDB 的其他 PDB 看不到他们。当您在可插拔数据库中创建用户时,该用户仅存在于该特定的 PDB 中。
创建本地用户时,必须满足以下所有要求。
- 您必须连接到具有该
CREATE USER
权限的用户。 - 本地用户的用户名不得以 "
C##
" 或 "c##
" 为前缀。 - 用户名在 PDB 中必须是唯一的。
- 您可以指定
CONTAINER=CURRENT
子句,也可以省略该子句,因为这是当前容器为 PDB 时的默认设置。 - 本地用户在连接到 PDB 时必须使用 Oracle 网络服务。这仅适用于 Amazon Elastic Compute Cloud (Amazon EC2) 实例,因为 RDS Oracle 提供 Oracle 数据库终端节点,用于使用 SQL 接口进行连接。虽然自我管理的 Oracle 数据库需要使用 Oracle 网络服务与 PDB 进行本地连接,但 RDS 和 RDS Custom for Oracle 通常都允许通过提供的端点进行连接,而无需手动配置 Oracle 网络。但是,RDS 自定义的灵活性意味着在某些高度自定义的场景中,Oracle 网络服务可能会发挥作用。
要在适用于 Oracle 的 RDS Custom 中创建本地用户,请执行以下操作:
- 连接到 EC2 实例
- 使用以下任一方法连接到相应的 PDB:
- 直接连接到 PDB
- 连接到根目录并运行
ALTER SESSION
- 使用
CREATE USER
语法创建用户您不能使用一个 PDB 中的本地用户连接到另一个 PDB。用户可以在创建用户的 PDB 中被识别,但在另一个 PDB 中却无法识别。以下查询列出了用户名、创建用户名的 PDB 的 ID、PDB 名称以及创建用户的日期。我们正在筛选以字母 PDB 开头的用户名。请注意,PDB1 和 PDB2 都有一个名为
PDB2AKS
的本地用户,并且这些用户彼此不同。
管理常用角色和本地角色
CDB 中的每个容器都具有通用和本地角色。
- 常见角色是从根目录创建的,并自动复制到除种子 PDB 之外的每个 PDB 中。分配给普通角色的名称必须以 c## 开头。
- 通常可以授予常见角色:授予操作将在除种子 PDB 之外的每个 PDB 中复制。
- 可以在本地授予常见角色:授予操作在进行操作的容器中执行。
常见角色
要在 RDS Custom for Oracle 中创建通用角色,请使用以下代码。
本地角色
本地角色是在他们需要访问的 PDB 中创建的。只能在创建本地角色的 PDB 中本地授予本地角色。它们对同一 CDB 的其他 PDB 不可见。
使用以下代码在 PDB 中创建本地角色。
管理公共权限和本地权限
管理任务(例如创建新 PDB 或管理需要在所有 PDB 之间保持一致的备份)需要通用权限。常规数据库操作(例如管理架构对象、执行过程或查询特定 PDB 中的数据)需要本地权限。地方补助金和普通补助金之间的基本区别在于 CONTAINER 条款使用的值。您可以向普通和本地用户和角色授予通用和本地权限。根据授予的方式,这些权限会变为普通权限或局部特权。当特权由 CONTAINER=ALL
条款授予时,很常见。在多租户数据库中授予权限时,默认情况下,权限始终在本地授予。这意味着,当你连接到根容器时,如果你不指定 CONTAINER 子句,则 CONTAINER=CURRENT
是默认行为。在根容器中,容器子句可以是 CURRENT 或 ALL,默认为 CURRENT。
除种子 PDB 外,将自动向每个 PDB 中的普通被授予者(用户或角色)授予通用权限。在特定 PDB 中向被授权者(用户或角色)授予本地权限。
以下 SQL 代码显示了 Oracle 的多租户架构如何处理不同容器中普通用户的权限,演示了多租户数据库环境中的常见和本地权限分配。
不允许将权限作为普通权限授予本地用户。
以下 SQL 代码说明了 Oracle 多租户架构中本地用户和权限的分离和管理,强调了 PDB 中本地权限和通用权限之间的区别。
Kerberos 身份验证
可以添加 Kerberos 身份验证,为在多租户架构中对用户帐户进行身份验证提供一种安全高效的方式。Kerberos 身份验证的工作原理是使用集中式身份验证服务器来签发和验证用于身份验证的票证。
要为上述场景启用 Kerberos 身份验证,您可以按照使用 Amazon RDS Custom for Oracle 启用 Kerberos 身份验证中的步骤操作。
这将向您展示如何使用 RDS Custom for Oracle 启用 Kerberos 身份验证。
用户管理优秀实践
在 Oracle 多租户架构中进行用户管理时,需要遵循几种优秀实践,以确保适当的安全性、访问控制和高效管理。以下为普通用户推荐的优秀做法。
- 限制普通用户的数量:将普通用户的数量降至最低,因为普通用户可以访问 CDB 中的所有 PDB。仅为管理和系统级任务创建普通用户。
- 分配适当的通用权限:仅向普通用户授予他们履行管理职责所需的权限。避免授予不必要的通用权限。
- 保护普通用户帐户:确保普通用户帐户具有强度高的密码,并遵循安全优秀实践,例如定期更改密码和监控帐户。
- 审计常见用户活动:对普通用户执行的所有活动进行全面的审计和监控,以确保问责制并发现任何可疑活动。
本地用户的优秀实践
在 Oracle 多租户架构中,有效管理本地用户对于维护安全性、性能和运营效率至关重要。本地用户仅存在于特定 PDB 中,在创建、权限分配和持续管理方面需要仔细考虑。这些优秀实践为管理本地用户提供了一个全面的框架,在遵守最小权限原则的同时,平衡了安全要求和运营需求。遵循这些准则有助于组织维持强大的安全控制,确保合规性,并优化其 PDB 环境中的数据库操作。
以下优秀实践概述了有效管理本地用户的关键注意事项和建议:
- 为特定于 PDB 的任务创建本地用户:使用本地用户执行所有常规数据库操作和特定于特定 PDB 的任务。
- 分配适当的本地权限:仅授予本地用户在 PDB 中执行任务所需的权限。避免授予不必要的本地权限。
- 本地用户之间的职责分开:在本地用户之间建立明确的职责分工,以实施最小权限原则并降低未经授权的访问或数据操纵的风险。
- 管理本地用户帐户:定期查看和管理本地用户帐户,包括禁用或删除不再需要的帐户。
- 实施密码政策:对本地用户帐户强制执行强密码政策,包括定期更改密码和账户锁定机制。
- 审计本地用户活动:对本地用户活动实施审计和监控,以确保问责制并发现任何可疑行为。
- 使用应用程序用户而不是直接登录:尽可能使用应用程序用户而不是直接用户登录来访问数据库。这有助于保持更好的控制和关注点分离。
- 使用 PDB 级别的角色:考虑创建 PDB 级别的角色来分组和管理 PDB 中特定任务或用户组的权限。
- 使用 PDB 级别的资源计划:使用 PDB 级别的资源计划来管理和控制本地用户在 PDB 中的资源使用情况。
结论
用户帐户和权限在帮助确保 Oracle 数据库多租户架构中的数据安全和访问控制方面起着至关重要的作用。根据具体情况,可以使用不同的方法来创建用户帐户和授予权限。与往常一样,必须遵循优秀实践和准则,以帮助确保安全性和合规性。
如果您有任何意见或疑问,请在评论部分留言。
作者简介
Arnab Saha 是亚马逊云科技的高级数据库专家解决方案架构师,总部设在美国西雅图。Arnab 专门研究 Amazon RDS、Amazon Aurora、亚马逊云科技数据库迁移服务 (DMS) 和 Amazon Elastic Block Store (EBS)。他为客户提供专家指导和技术援助,帮助他们在亚马逊云科技云中构建可扩展、高度可用和安全的解决方案。Arnab 还为亚马逊云科技合作伙伴和客户的数据现代化和云迁移之旅提供支持。
Balaji Salem Balasundram 是一名技术客户经理,常驻美国盐湖城。他与亚马逊云科技客户合作,通过亚马逊云科技云中的数据库服务迁移并实现更高的灵活性、规模和灵活性。
莎拉思·钱德拉·坎皮利是亚马逊云科技的数据库专家解决方案架构师。他在亚马逊云科技 RDS 团队工作,专注于甲骨文等商业数据库引擎。Sharath 直接与亚马逊云科技客户合作,为数据库项目提供指导和技术援助,帮助他们在使用亚马逊云科技时提高解决方案的价值。
*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。