我正在遵循 http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html 以便从EC2到RDS进行身份验证。我能够运行generate-db-auth-token
命令来检索令牌,但我不确定之后如何处理它(指令莫名其妙地结束)。
我尝试简单地将反刍的字符串(以及返回字段的逻辑子字符串)作为 mysql 客户端连接的密码传递,但这似乎不起作用。
返回的令牌采用以下形式:{instance identifier}.{region}.rds.amazonaws.com:3306/?Action=connect&DBUser={auth db username}&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900&X-Amz-Date=20170622T221608Z&X-Amz-SignedHeaders=host&X-Amz-Security-Token={super long, web-escaped string containing special characters}&X-Amz-Credential={some shorter, web-escaped string containing special characters}&X-Amz-Signature={some long string of alphanumeric characters}
任何帮助将不胜感激。
我有同样的问题,我正在使用 php 应用程序并尝试使用 CLI 来确保它在添加代码修改之前正常工作。
我找到了这种方式,但我仍然收到"访问被拒绝",也许它对您有用:
$ mysql -u iam_user -h iamtest.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com \ --password='AWS RDS generate-db-auth-token --hostname iamtest.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com \ --端口 3306 \ --用户名 iam_user \ --区域 AP-东北-1' \ --ssl-ca=/Users/hoge/rds-combined-ca-bundle.pem \ --启用明文插件
更新:这现在对我有用,我在角色策略方面遇到了另一个问题。
添加更多到上面提供的答案(谢谢萨法·塞利姆)
步骤 1:从 http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html 获取证书(证书链接 https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem)
步骤 2:使用 RDS 上的根账号将用户添加到数据库 (http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html) 创建用户 mydbuser 使用 AWS 标识为 'RDS';
第 3 步:确保您拥有 ~/.aws/credentials 和 ~/.aws/profile with mydbuser
步骤 4:将策略从 http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html 附加到用户/角色
{ "版本": "2012-10-17", "声明":[ { "效果": "允许", "操作":[ "RDS-db:连接" ], "资源":[ "ARN:AWS:RDS-db:US-West-2:12345678:dbuser:*/mydbuser" ] } ] }
第 4 步:
mysql -u mydbuser -h dbinstance.us-west-2.rds.amazonaws.com --password='AWS --profile=mydbuser rds generate-db-auth-token --hostname dbinstance.us-west-2.rds.amazonaws.com --port 3306 --region us-west-2 --username mydbuser' --ssl-ca=/path/to/rds-combined-ca-bundle.pem --enable-cleartext-plugin