【发布时间】:2017-12-24 15:41:07
【问题描述】:
我已按照说明设置 AWS 和 MySQL,这样我应该能够使用 mysql-client 和用户(名为 aws_iam)登录 mysql,无需密码,但使用由 @987654324 生成的令牌@ 将角色附加到我的 EC2 实例。
指令are here
所以我拥有的是:
- 具有允许我生成 RDS 凭据的角色的 EC2 实例
- 运行 MySQL 的 RDS 实例,用户
aws_iam由AWSAuthenticationPlugin标识 - 通过 SSH 登录到 EC2 实例后,我可以运行
mysql -h mydb.randomstring.region.rds.amazonaws.com -u root -p并输入 RDS 设置中的主密码以获取 mysql shell。 - 此外,当通过 SSH 登录到 EC2 实例时,我可以运行
aws rds generate-db-auth-token --hostname mydb.randomstring.region.rds.amazonaws.com --port 3306 --username aws_iam,并且在运行此程序时,我会得到一个如下所示的令牌:
mydb.randomstring.region.rds.amazon.aws.com:port-number/?Action=connect&DBUser=aws_iam&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900&X-Amz-Date=current_time&X-Amz-SignedHeaders=host&X-Amz-Security-Token=really-long-url-encoded-string&X-Amz-Credential=string/region/rds-db/aws4_request&X-Amz-Signature=long-hash
然后我运行一个连接命令:
mysql -h mydb.randomstring.region.rds.amazonaws.com --ssl-ca=rds-ca-2015-eu-west-1.pem --ssl-mode=VERIFY_IDENTITY -u aws_iam --enable-cleartext-plugin --password=TOKEN
然后我就明白了
ERROR 1045 (28000): Access denied for user 'aws_iam'@IP (using password: YES)
我注意到的一些事情:
- “令牌”最初是 url 编码的;但是解码它也不起作用
- token有很多url格式的参数;可能只有这些参数之一是实际令牌,但文档中没有提到这一点
- 如果您的 EC2 角色没有“rds-db”策略,您仍然可以生成令牌。这可能意味着令牌生成并不能证明您的策略有效;但除此之外没有其他方法可以调试它
那么有人启用了这个功能吗?有什么我遗漏的吗?
【问题讨论】:
标签: amazon-web-services amazon-rds amazon-iam