如何允许用户使用其 IAM 凭证向 Amazon RDS MySQL 数据库实例进行身份验证?

简短描述
用户可以使用 IAM 用户或角色凭证以及身份验证令牌连接到 Amazon RDS 数据库实例或集群。IAM 数据库身份验证比原生身份验证方法更安全,这是因为:

IAM 数据库身份验证令牌是使用您的 AWS 访问密钥生成的。您不需要存储数据库用户凭证。
身份验证令牌的生命周期为 15 分钟,因此您不需要进行密码重置。
IAM 数据库身份验证需要安全套接字层 (SSL) 连接。这意味着与数据库实例之间传输的所有数据都经过加密。
如果您的应用程序是在 Amazon Elastic Compute Cloud (Amazon EC2) 上运行,则您可以使用 EC2 实例配置文件凭证来访问数据库。您不需要在您的实例上存储数据库密码。
要使用 IAM 角色设置 IAM 数据库身份验证,请按照以下步骤操作:

  1. 在数据库实例上启用 IAM 数据库身份验证。

  2. 创建一个使用 AWS 身份验证令牌的数据库用户账户。

  3. 添加一个 IAM 策略以将该数据库用户映射到该 IAM 角色。

  4. 将该 IAM 角色附加到该 EC2 实例。

  5. 生成一个 AWS 身份验证令牌以标识该 IAM 角色。

  6. 下载 SSL 根证书文件或证书捆绑包文件。

  7. 使用 IAM 角色凭证和身份验证令牌或 SSL 证书来连接到数据库实例。

解决方法
注意:如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请确保您运行的是最新版本的 AWS CLI。

在开始之前,请确保您已经启动了一个支持 IAM 数据库身份验证的数据库实例以及一个要连接到该数据库的 EC2 实例。

在 RDS 数据库实例上启用 IAM 数据库身份验证
您可以使用 Amazon RDS 控制台、AWS 命令行界面 (AWS CLI) 或 Amazon RDS API 来启用 IAM 数据库身份验证。如果您使用 Amazon RDS 控制台来修改数据库实例,请选择 Apply Immediately (立即应用)以立即启用 IAM 数据库身份验证。启用 IAM 身份验证需要短暂停机。有关哪些修改需要停机的更多信息,请参阅数据库实例的设置。

注意:如果选择 Apply Immediately(立即应用),则在维护时段内也会立即应用任何待处理修改。这可能会导致您的实例长时间停机。有关更多信息,请参阅使用“立即应用”设置。

创建一个使用 AWS 身份验证令牌的数据库用户账户

  1. 通过运行以下命令以连接到该数据库实例或集群终端节点。输入主密码以登录。

$ mysql -h {database or cluster endpoint} -P {port number database is listening on} -u {master db username} -p
2. 创建一个使用 AWS 身份验证令牌而不是密码的数据库用户账户:

CREATE USER {dbusername} IDENTIFIED WITH AWSAuthenticationPlugin as ‘RDS’;
3. (可选)运行以下命令以要求用户通过 SSL 连接到数据库:

GRANT USAGE ON . TO ‘{dbusername}’@’%'REQUIRE SSL;
4. 运行退出命令以关闭 MySQL。然后,退出数据库实例。

创建一个允许 Amazon RDS 访问的 IAM 角色

  1. 打开 IAM 控制台,然后从导航窗格中选择 Roles(角色)。

  2. 依次选择创建角色、AWS 服务、EC2。

  3. 对于选择使用案例,请选择 EC2,然后选择下一步: 权限。

  4. 在搜索栏中输入 RDS。然后,选择基于身份的策略,例如 AmazonRDSFullAccess。 或者,使用自定义的授予更少权限的 Amazon RDS IAM 策略。

  5. 选择下一步:审核。

  6. 对于角色名称,输入此 IAM 角色的名称。

  7. 选择 Create Role(创建角色)。

添加一个 IAM 策略,将该数据库用户映射到 IAM 角色

  1. 从 IAM 角色列表中,选择新创建的 IAM 角色。

  2. 选择添加内联策略。

  3. 输入创建和使用 IAM 策略以进行 IAM 数据库访问中的策略。

注意:请务必使用您的数据库资源的详细信息来编辑资源值,例如您的数据库实例标识符和数据库用户名。

  1. 选择查看策略。

  2. 对于 Name (名称),输入策略名称。

  3. 选择 Create policy(创建策略)。

将 IAM 角色附加到 EC2 实例

  1. 打开 Amazon EC2 控制台。

  2. 选择您将用于连接到 Amazon RDS 的 EC2 实例。

  3. 附加新创建的 IAM 角色至 EC2 实例。

  4. 使用 SSH 连接到您的 EC2 实例。

生成 AWS 身份验证令牌以标识 IAM 角色
连接到您的 EC2 实例后,请运行以下 AWS 命令行界面 (AWS CLI) 命令以生成身份验证令牌。复制并存储身份验证令牌以备将来使用。

$ aws rds generate-db-auth-token --hostname {db or cluster endpoint} --port 3306 --username {db username}
注意:创建 15 分钟后,此令牌将过期。

下载 SSL 根证书文件或证书捆绑包文件
运行以下命令以下载适用于所有区域的根证书:

$ wget https://s3.amazonaws.com/rds-downloads/rds-ca-2019-root.pem
使用 IAM 角色凭证和身份验证令牌连接到 RDS 数据库实例
下载证书文件后,请运行以下命令之一以通过 SSL 来连接到该数据库实例。

注意 :如果您的应用程序不接受证书链,则运行以下命令以下载证书捆绑包:

$ wget https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem

RDSHOST=“rdsmysql.abcdefghijk.us-west-2.rds.amazonaws.com”
TOKEN="$(aws rds generate-db-auth-token --hostname $RDSHOST --port 3306 --region us-west-2 --username {db username})"
根据您正在使用的证书(RootCA 或 Bundle),运行以下命令之一:

RootCA 命令:

mysql --host= R D S H O S T − − p o r t = 3306 − − s s l − c a = / s a m p l e d i r / r d s − c a − 2019 − r o o t . p e m − − e n a b l e − c l e a r t e x t − p l u g i n − − u s e r = d b u s e r n a m e − − p a s s w o r d = RDSHOST --port=3306 --ssl-ca=/sample_dir/rds-ca-2019-root.pem --enable-cleartext-plugin --user={db username} --password= RDSHOSTport=3306sslca=/sampledir/rdsca2019root.pemenablecleartextpluginuser=dbusernamepassword=TOKEN
Bundle 命令:

mysql --host= R D S H O S T − − p o r t = 3306 − − s s l − c a = / s a m p l e d i r / r d s − c o m b i n e d − c a − b u n d l e . p e m − − e n a b l e − c l e a r t e x t − p l u g i n − − u s e r = d b u s e r n a m e − − p a s s w o r d = RDSHOST --port=3306 --ssl-ca=/sample_dir/rds-combined-ca-bundle.pem --enable-cleartext-plugin --user={db username} --password= RDSHOSTport=3306sslca=/sampledir/rdscombinedcabundle.pemenablecleartextpluginuser=dbusernamepassword=TOKEN
使用 IAM 角色凭证和 SSL 证书连接到 RDS 数据库实例
下载证书文件后,请通过 SSL 连接到该数据库实例。有关更多信息,请参阅连接到运行 MySQL 数据库引擎的数据库实例。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于MySQL数据库备份文件的下载,可以使用Python的boto3库来实现从RDS上下载备份文件。 首先,需要安装boto3库,可以使用pip安装: ``` pip install boto3 ``` 然后,需要在AWS控制台上创建一个IAM用户,并生成该用户的Access Key和Secret Access Key,并将该用户加入RDS的访问策略组中。 接着,可以使用以下Python代码来下载MySQL备份文件: ``` python import boto3 # 配置AWS访问密钥 aws_access_key_id = 'your_access_key_id' aws_secret_access_key = 'your_secret_access_key' # 创建rds client对象 client = boto3.client('rds', aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key, region_name='your_rds_region') # 获取最近的mysql备份文件 response = client.describe_db_log_files( DBInstanceIdentifier='your_db_instance_id', FilenameContains='mysql', FileLastWritten=0 ) # 下载mysql备份文件 if len(response['DescribeDBLogFiles']) > 0: file = response['DescribeDBLogFiles'][0] filename = file['LogFileName'] download_response = client.download_db_log_file_portion( DBInstanceIdentifier='your_db_instance_id', LogFileName=filename ) with open('mysql_backup.sql', 'wb') as f: f.write(download_response['LogFileData']) ``` 需要将上面代码中的 `your_access_key_id`,`your_secret_access_key`,`your_rds_region`,`your_db_instance_id` 替换成自己的AWS访问密钥、RDS所在区域和实例ID。 这样,就可以通过Python从RDS上下载MySQL备份文件了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值