使用数据库安全组(EC2-Classic 平台)
默认情况下,数据库实例的网络访问处于关闭状态。您可以在安全组 中指定规则,允许从 IP 地址范围、端口或安全组进行访问。配置传入规则后,与该安全组关联的所有数据库实例将应用这些规则。您最多可以在一个安全组中指定 20 个规则。
Amazon RDS 支持两种不同的安全组。您选择哪种安全组取决于您在哪个 Amazon RDS 平台上:
-
VPC 安全组 – 适用于 EC2-VPC 平台。
-
数据库安全组 – 适用于 EC2-Classic 平台。
如果满足以下任一条件,您最可能位于 EC2-VPC 平台上 (且必须使用 VPC 安全组):
-
如果您是新 Amazon RDS 客户。
-
如果您之前从未创建过数据库实例。
-
如果您要在以前未使用过的 Amazon 区域中创建数据库实例。
否则,如果您在 EC2-Classic 平台上,您将使用数据库安全组来管理对 Amazon RDS 数据库实例的访问。有关数据库安全组与 VPC 安全组之间的差异的更多信息,请参阅 使用安全组控制访问权限。
要确定您所在的是哪个平台,请参阅确定您使用的是 EC2-VPC 还是 EC2-Classic 平台。
如果您在 EC2-VPC 平台上,则必须使用 VPC 安全组而不是数据库安全组。有关使用 VPC 的更多信息,请参阅 Amazon Virtual Private Cloud VPC 和 Amazon RDS。
主题
创建数据库安全组
若要创建数据库安全组,您必须提供名称和描述。
创建数据库安全组
通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 -
从导航窗格中,选择 Security Groups (安全组)。
注意 如果您在 EC2-VPC 平台上,则安全组选项不会出现在导航窗格中。在这种情况下,您必须使用 VPC 安全组而不是数据库安全组。有关使用 VPC 的更多信息,请参阅 Amazon Virtual Private Cloud VPC 和 Amazon RDS。
-
选择 Create DB Security Group。
-
在 Name (名称) 和 Description (说明) 文本框中键入新数据库安全组的名称和描述。安全组名称不能包含空格且不能以数字开头。
-
选择 Yes, Create。
将创建数据库安全组。
默认情况下,新创建的数据库安全组不会提供对数据库实例的访问权限。您必须指定一个拥有数据库实例访问权限的 IP 地址范围或 EC2-Classic 安全组。要指定数据库安全组的 IP 地址或 EC2-Classic 安全组,请参阅 从 IP 范围向数据库安全组授予网络访问权限。
要创建数据库安全组,请使用 Amazon CLI 命令 create-db-security-group
。
对于 Linux、macOS 或 Unix:
aws rds create-db-security-group \ --db-security-group-name
mydbsecuritygroup
\ --db-security-group-description "My new security group
"
对于 Windows:
aws rds create-db-security-group ^ --db-security-group-name
mydbsecuritygroup
^ --db-security-group-description "My new security group
"
默认情况下,新创建的数据库安全组不会提供对数据库实例的访问权限。您必须指定一个拥有数据库实例访问权限的 IP 地址范围或 EC2-Classic 安全组。要指定数据库安全组的 IP 地址或 EC2-Classic 安全组,请参阅 从 IP 范围向数据库安全组授予网络访问权限。
要创建数据库安全组,请调用带下列参数的 Amazon RDS 函数 CreateDBSecurityGroup
:
-
DBSecurityGroupName =
mydbsecuritygroup
-
Description =
"My new security group"
例
https://rds.amazonaws.com/ ?Action=CreateDBSecurityGroup &DBSecurityGroupName=mydbsecuritygroup &Description=My%20new%20db%20security%20group &Version=2012-01-15 &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2012-01-20T22%3A06%3A23.624Z &AWSAccessKeyId=<Access Key ID> &Signature=<Signature>
默认情况下,新创建的数据库安全组不会提供对数据库实例的访问权限。您必须指定一个拥有数据库实例访问权限的 IP 地址范围或 EC2-Classic 安全组。要指定数据库安全组的 IP 地址或 EC2-Classic 安全组,请参阅 从 IP 范围向数据库安全组授予网络访问权限。
列出可用的数据库安全组
您可以列出为 Amazon 账户创建了哪些数据库安全组。
列出 Amazon 账户的所有可用数据库安全组
-
通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 -
从导航窗格中,选择 Security Groups (安全组)。
可用的数据库安全组会显示在 DB Security Groups (数据库安全组) 列表中。
注意 如果您在 EC2-VPC 平台上,则安全组选项不会出现在导航窗格中。在这种情况下,您必须使用 VPC 安全组而不是数据库安全组。有关使用 VPC 的更多信息,请参阅 Amazon Virtual Private Cloud VPC 和 Amazon RDS。
要列出 Amazon 账户的所有可用数据库安全组,请使用不带参数的 Amazon CLIdescribe-db-security-groups
命令。
aws rds describe-db-security-groups
要列出 Amazon 账户的所有可用数据库安全组,请调用不带参数的 DescribeDBSecurityGroups
。
例
https://rds.amazonaws.com/ ?Action=DescribeDBSecurityGroups &MaxRecords=100 &Version=2009-10-16 &SignatureVersion=2 &SignatureMethod=HmacSHA256 &AWSAccessKeyId=<Access Key ID> &Signature=<Signature>
查看数据库安全组
您可以查看有关数据库安全组的详细信息,了解已授权哪些 IP 范围。
要查看特定数据库安全组的属性,请执行以下操作
-
通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 -
从导航窗格中,选择 Security Groups (安全组)。
注意 如果您在 EC2-VPC 平台上,则安全组选项不会出现在导航窗格中。在这种情况下,您必须使用 VPC 安全组而不是数据库安全组。有关使用 VPC 的更多信息,请参阅 Amazon Virtual Private Cloud VPC 和 Amazon RDS。
-
选择要查看的数据库安全组的详细信息图标。随后将显示该数据库安全组的详细信息。
要查看特定数据库安全组的属性,请使用 Amazon CLI describe-db-security-groups
。指定要查看的数据库安全组。
对于 Linux、macOS 或 Unix:
aws rds describe-db-security-groups \ --db-security-group-name
mydbsecuritygroup
对于 Windows:
aws rds describe-db-security-groups ^ --db-security-group-name
mydbsecuritygroup
要查看特定数据库安全组的属性,请调用带下列参数的 DescribeDBSecurityGroups
:
-
DBSecurityGroupName
=mydbsecuritygroup
例
https://rds.amazonaws.com/ ?Action=DescribeDBSecurityGroups &DBSecurityGroupName=mydbsecuritygroup &Version=2009-10-16 &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2009-10-16T22%3A23%3A07.107Z &AWSAccessKeyId=<Access Key ID> &Signature=<Signature>
将数据库安全组与数据库实例关联
您可使用 RDS 控制台的 Modify (修改) 选项、ModifyDBInstance
Amazon RDS API 或 Amazon CLI modify-db-instance
命令将数据库安全组与数据库实例关联。
有关修改 数据库实例的信息,请参阅修改 Amazon RDS 数据库实例。
从 IP 范围向数据库安全组授予网络访问权限
默认情况下,数据库实例的网络访问处于关闭状态。如果希望访问不在 VPC 中的数据库实例,必须设置数据库安全组的访问规则,以便允许从特定 EC2-Classic 安全组或 CIDR IP 范围进行访问。然后,您就必须将数据库实例与该数据库安全组关联起来。此过程称为进入。一旦给数据库安全组配置了进入规则,该规则同样也会应用到与该数据库安全组关联的所有数据库实例。
如果您打算访问防火墙后的数据库实例,以便确定您应该使用的 IP 地址,请联系您的网络管理员。
在下例中,您将用 CIDR IP 范围的进入规则配置数据库安全组。
要配置一个数据库安全组,其中具有 CIDR IP 范围的传入规则,请执行以下操作
-
通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 -
从导航窗格中,选择 Security Groups (安全组)。
注意 如果您在 EC2-VPC 平台上,则安全组选项不会出现在导航窗格中。在这种情况下,您必须使用 VPC 安全组而不是数据库安全组。有关使用 VPC 的更多信息,请参阅 Amazon Virtual Private Cloud VPC 和 Amazon RDS。
-
选择要授权的数据库安全组的详细信息图标。
-
在安全组的详细信息页中,从 Connection Type (连接类型) 下拉列表中选择 CIDR/IP,在 CIDR 文本框中键入要添加到此数据库安全组的入口规则的 CIDR 范围,然后选择 Authorize。
提示 Amazon Web Services Management Console会根据 CIDR 文本字段下面的连接显示 CIDR IP 地址。如果您没有通过防火墙访问数据库实例,则可使用此 CIDR IP。
-
入口规则的状态将为 Authorizing (正在授权),且会持续到新的入口规则应用到与您修改的数据库安全组关联的所有数据库实例。在成功应用入口规则后,此状态将更改为 authorized (已授权)。
要使用 CIDR IP 范围的进入规则配置数据库安全组,请使用 Amazon CLI 命令 authorize-db-security-group-ingress
。
对于 Linux、macOS 或 Unix:
aws rds authorize-db-security-group-ingress \ --db-security-group-name
mydbsecuritygroup
\ --cidrip192.168.1.10/27
对于 Windows:
aws rds authorize-db-security-group-ingress ^ --db-security-group-name
mydbsecuritygroup
^ --cidrip192.168.1.10/27
此命令应生成类似以下的输出。
SECGROUP mydbsecuritygroup My new DBSecurityGroup IP-RANGE 192.168.1.10/27 authorizing
要使用 CIDR IP 范围的进入规则配置数据库安全组,请调用带下列参数的 Amazon RDS API AuthorizeDBSecurityGroupIngress
:
-
DBSecurityGroupName =
mydbsecuritygroup
-
CIDRIP =
192.168.1.10/27
例
https://rds.amazonaws.com/ ?Action=AuthorizeDBSecurityGroupIngress &CIDRIP=192.168.1.10%2F27 &DBSecurityGroupName=mydbsecuritygroup &Version=2009-10-16 &Action=AuthorizeDBSecurityGroupIngress &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2009-10-22T17%3A10%3A50.274Z &AWSAccessKeyId=<Access Key ID> &Signature=<Signature>
从 Amazon EC2 实例向数据库实例授予网络访问权限
如果要从 Amazon EC2 实例访问数据库实例,则必须先确定 EC2 实例和数据库实例是否在 VPC 中。如果使用的是默认 VPC,则可分配在创建或修改 EC2 实例访问的数据库实例时用于 EC2 实例的同一 EC2 或 VPC 安全组。
如果数据库实例和 EC2 实例不在 VPC 中,则必须为数据库实例的安全组配置传入规则,该规则允许来自 Amazon EC2 实例的流量。为此,可将 EC2 实例的 EC2-Classic 安全组添加到数据库实例的数据库安全组。在此示例中,您将向数据库安全组添加适用于 EC2-Classic 安全组的进入规则。
-
向数据库安全组添加用于 EC2-Classic 安全组的进入规则时,只会向与该 EC2-Classic 安全组关联的 Amazon EC2 实例授予访问数据库实例的权限。
-
无法向所在 Amazon 区域与您的数据库实例不同的 EC2-Classic 安全组授权。您可以授权 IP 范围,或在引用另一 Amazon 区域中的 IP 地址的同一 Amazon 区域指定 EC2-Classic 安全组。如果您指定 IP 范围,建议您使用 Amazon EC2 实例的私有 IP 地址,这样,从您的 Amazon EC2 实例到 Amazon RDS 数据库实例可以实现更直接的网络路由,并且在 Amazon 网络外部发送的数据不会产生网络费用。
向数据库安全组添加 EC2-Classic 安全组
-
通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 -
从导航窗格中,选择 Security Groups (安全组)。
注意 如果您在 EC2-VPC 平台上,则安全组选项不会出现在导航窗格中。在这种情况下,您必须使用 VPC 安全组而不是数据库安全组。有关使用 VPC 的更多信息,请参阅 Amazon Virtual Private Cloud VPC 和 Amazon RDS。
-
选择要授予访问权限的数据库安全组的详细信息图标。
-
在安全组的详细信息页中,为 Connection Type (连接类型) 选择 EC2 Security Group (EC2 安全组),然后选择您要使用的 EC2-Classic 安全组。然后选择 Authorize (授权)。
-
入口规则的状态将为 Authorizing (正在授权),且会持续到新的入口规则应用到与您修改的数据库安全组关联的所有数据库实例。在成功应用入口规则后,此状态将更改为 authorized (已授权)。
要授予对 EC2-Classic 安全组的访问权限,请使用 Amazon CLI 命令 authorize-db-security-group-ingress
。
对于 Linux、macOS 或 Unix:
aws rds authorize-db-security-group-ingress \ --db-security-group-name
default
\ --ec2-security-group-namemyec2group
\ --ec2-security-group-owner-id987654321021
对于 Windows:
aws rds authorize-db-security-group-ingress ^ --db-security-group-name
default
^ --ec2-security-group-namemyec2group
^ --ec2-security-group-owner-id987654321021
此命令应生成类似以下的输出:
SECGROUP Name Description SECGROUP default default EC2-SECGROUP myec2group 987654321021 authorizing
要授予对 EC2-Classic 安全组的网络访问权限,请调用带下列参数的 Amazon RDS API 函数 https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_AuthorizeDBSecurityGroupIngress.htmlAuthorizeDBSecurityGroupIngress
:
-
EC2SecurityGroupName =
myec2group
-
EC2SecurityGroupOwnerId =
987654321021
例
https://rds.amazonaws.com/ ?Action=AuthorizeDBSecurityGroupIngress &EC2SecurityGroupOwnerId=987654321021 &EC2SecurityGroupName=myec2group &Version=2009-10-16 &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2009-10-22T17%3A10%3A50.274Z &AWSAccessKeyId=<Access Key ID> &Signature=<Signature>
撤消从 IP 范围到数据库实例的网络访问权限
您可以通过撤销相关的 CIDR IP 进入规则,轻松地撤销从 CIDR IP 范围到属于某数据库安全组的数据库实例的网络访问权限。
在此示例中,您撤销了数据库安全组上的 CIDR IP 范围的进入规则。
撤消数据库安全组上的 CIDR IP 范围传入规则
-
通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 -
从导航窗格中,选择 Security Groups (安全组)。
注意 如果您在 EC2-VPC 平台上,则安全组选项不会出现在导航窗格中。在这种情况下,您必须使用 VPC 安全组而不是数据库安全组。有关使用 VPC 的更多信息,请参阅 Amazon Virtual Private Cloud VPC 和 Amazon RDS。
-
选择要撤销的传入规则所属的数据库安全组的详细信息图标。
-
在安全组的详细信息页中,选择要撤销的入口规则旁的 Remove (删除)。
-
此入口规则的状态将为 Revoking (正在撤销),且会持续到从所有与您修改的数据库安全组关联的数据库实例中删除此入口规则。在成功删除此入口规则后,将从数据库安全组中删除此入口规则。
要撤销数据库安全组上的 CIDR IP 范围的进入规则,请使用 Amazon CLI 命令 revoke-db-security-group-ingress
。
对于 Linux、macOS 或 Unix:
aws rds revoke-db-security-group-ingress \ --db-security-group-name
mydbsecuritygroup
\ --cidrip192.168.1.1/27
对于 Windows:
aws rds revoke-db-security-group-ingress ^ --db-security-group-name
mydbsecuritygroup
^ --cidrip192.168.1.1/27
此命令应生成类似以下的输出。
SECGROUP mydbsecuritygroup My new DBSecurityGroup IP-RANGE 192.168.1.1/27 revoking
要撤销数据库安全组上的 CIDR IP 范围的进入规则,请使用以下参数调用 Amazon RDS API 操作 https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_RevokeDBSecurityGroupIngress.htmlRevokeDBSecurityGroupIngress
:
-
DBSecurityGroupName =
mydbsecuritygroup
-
CIDRIP =
192.168.1.10/27
例
https://rds.amazonaws.com/ ?Action=RevokeDBSecurityGroupIngress &DBSecurityGroupName=mydbsecuritygroup &CIDRIP=192.168.1.10%2F27 &Version=2009-10-16 &SignatureVersion=2&SignatureMethod=HmacSHA256 &Timestamp=2009-10-22T22%3A32%3A12.515Z &AWSAccessKeyId=<Access Key ID> &Signature=<Signature>