AWS - Relational Database (RDS) Enum
Last updated
Last updated
学习与实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习与实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
AWS 提供的 关系数据库服务 (RDS) 旨在简化 云中关系数据库 的部署、操作和扩展。该服务提供了成本效益和可扩展性的优势,同时自动化了诸如硬件配置、数据库配置、补丁和备份等劳动密集型任务。
AWS RDS 支持多种广泛使用的关系数据库引擎,包括 MySQL、PostgreSQL、MariaDB、Oracle 数据库、Microsoft SQL Server 和 Amazon Aurora,兼容 MySQL 和 PostgreSQL。
RDS 的主要特点包括:
简化数据库实例的管理。
创建 只读副本 以增强读取性能。
配置 多可用区 (AZ) 部署 以确保高可用性和故障转移机制。
与其他 AWS 服务的 集成,例如:
AWS 身份与访问管理 (IAM) 以实现强大的访问控制。
AWS CloudWatch 以提供全面的监控和指标。
AWS 密钥管理服务 (KMS) 以确保静态加密。
创建 DB 集群时,可以配置主 用户名(默认是 admin
)。要生成此用户的密码,您可以:
自己指定一个 密码
告诉 RDS 自动生成它
告诉 RDS 在 AWS Secret Manager 中管理它,并使用 KMS 密钥进行加密
有 3 种类型的认证选项,但始终允许使用 主密码:
默认情况下,数据库 不授予公共访问,但可以 授予。因此,默认情况下,只有来自同一 VPC 的机器才能访问它,如果所选的 安全组(存储在 EC2 SG 中)允许的话。
与其暴露 DB 实例,不如创建一个 RDS Proxy,它 提高 了 DB 集群的 可扩展性 和 可用性。
此外,数据库端口也可以修改。
默认启用加密,使用 AWS 管理的密钥(可以选择 CMK)。
通过启用加密,您启用了 存储、快照、只读副本和备份的静态加密。管理此加密的密钥可以通过 KMS 发放。 在数据库创建后,无法添加此级别的加密。必须在创建时进行。
然而,有一个 变通方法允许您加密未加密的数据库,如下所示。您可以创建未加密数据库的快照,创建该快照的加密副本,使用该加密快照创建新数据库,最后,您的数据库将被加密。
除了 RDS 在应用层固有的加密能力外,RDS 还支持 额外的平台级加密机制 以保护静态数据。这包括 Oracle 和 SQL Server 的 透明数据加密 (TDE)。然而,重要的是要注意,虽然 TDE 通过加密静态数据增强了安全性,但它也可能 影响数据库性能。这种性能影响在与 MySQL 加密函数或 Microsoft Transact-SQL 加密函数结合使用时尤为明显。
要使用 TDE,需要一些初步步骤:
选项组关联:
数据库必须与选项组关联。选项组作为设置和功能的容器,便于数据库管理,包括安全增强。
但是,重要的是要注意,选项组仅适用于特定的数据库引擎和版本。
在选项组中包含 TDE:
一旦与选项组关联,Oracle 透明数据加密选项需要包含在该组中。
需要认识到,一旦将 TDE 选项添加到选项组,它就成为永久性固定项,无法移除。
TDE 加密模式:
TDE 提供两种不同的加密模式:
TDE 表空间加密:此模式加密整个表,提供更广泛的数据保护范围。
TDE 列加密:此模式专注于加密数据库中的特定单个元素,允许对加密数据进行更细粒度的控制。
理解这些前提条件和 TDE 的操作复杂性对于有效实施和管理 RDS 中的加密至关重要,以确保数据安全和遵守必要的标准。
有方法可以使用 SQL 语法 访问 DynamoDB 数据,因此,典型的 SQL 注入也是可能的。
学习和实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习和实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)