保护 MySQL 数据库实例连接安全 - Amazon Relational Database Service

保护 MySQL 数据库实例连接安全

您可以管理 MySQL 数据库实例的安全性。

Amazon RDS 上的 MySQL 安全性

MySQL 数据库实例的安全性在三个级别上进行管理:

  • AWS Identity and Access Management 控制可以对数据库实例执行 Amazon RDS 管理操作的人员。使用 IAM 证书连接到AWS时,您的 IAM 账户必须具有授予执行 Amazon RDS 管理操作所需的权限的 IAM 策略。有关更多信息,请参阅 Amazon RDS 的 Identity and Access Management

  • 创建数据库实例时,可以使用 VPC 安全组控制哪些设备和 Amazon EC2 实例能够建立到数据库实例的端点和端口的连接。可以使用安全套接字层 (SSL)/传输层安全性协议 (TLS) 建立这些连接。此外,公司的防火墙规则也可以控制公司中运行的哪些设备可以建立到数据库实例的连接。

  • 要对 MySQL 数据库实例的登录信息和权限进行身份验证,可单独或组合采用以下各种方式。

    您可采用与独立 MySQL 实例相同的方式。CREATE USERRENAME USERGRANTREVOKESET PASSWORD 等命令的作用与它们在本地数据库中的作用相同,就像直接修改数据库架构表。但是,直接修改数据库架构表并不是最佳做法,而且从 RDS for MySQL 版本 8.0.36 开始,不支持直接修改数据库架构表。有关信息,请参阅 MySQL 文档中的访问控制和账户管理

    您还可以使用 IAM 数据库身份验证。如果采用 IAM 数据库身份验证方式,可使用 IAM 用户或 IAM 角色以及身份验证令牌对数据库实例进行身份验证。身份验证令牌是使用签名版本 4 签名流程生成的唯一值。通过使用 IAM 数据库身份验证,您可以使用相同的凭证来控制对 AWS 资源和数据库的访问。有关更多信息,请参阅 适用于 MariaDB、MySQL 和 PostgreSQL 的 IAM 数据库身份验证

    另一个选项是 RDS for MySQL 的 Kerberos 身份验证。数据库实例与 AWS Directory Service for Microsoft Active Directory (AWS Managed Microsoft AD) 配合使用以启用 Kerberos 身份验证。当用户在加入信任域的 MySQL 数据库实例中进行身份验证时,将转发身份验证请求。转发的请求将转到您使用 AWS Directory Service 创建的域目录。有关更多信息,请参阅 对 Amazon RDS for Microsoft SQL Server 使用 Kerberos 身份验证

当您创建 Amazon RDS 数据库实例时,主用户有以下默认权限:

引擎版本 系统权限 数据库角色

RDS for MySQL 版本 8.0.36 及更高版本

SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE ROLE, DROP ROLE, APPLICATION_PASSWORD_ADMIN, ROLE_ADMIN, SET_USER_ID, XA_RECOVER_ADMIN

rds_superuser_role

有关 rds_superuser_role 的更多信息,请参阅 RDS for MySQL 的基于角色的权限模型

低于 8.0.36 的 RDS for MySQL 版本

SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, REPLICATION SLAVE

注意

尽管能够在数据库实例上删除主用户,但不推荐这样做。要重新创建主用户,请使用 ModifyDBInstance RDS API 操作或 modify-db-instance AWS CLI 命令,并使用相应的参数指定新的主用户密码。如果实例中不存在主用户,将使用指定的密码创建主用户。

要为每个数据库实例提供管理服务,需在创建数据库实例时创建 rdsadmin 用户。如果试图删掉、重命名、修改密码,或者修改 rdsadmin 账户的权限,会导致出错。

若要允许管理数据库实例,需限制标准的 killkill_query 命令。通过所提供的 Amazon RDS 命令 rds_killrds_kill_query,您可以结束数据库实例上的用户会话或查询。