IAM 数据库身份验证 - 如何使用 CLI 生成的令牌
IAM Database Authentication - How to use CLI generated Token
我关注 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 来确保它在添加代码修改之前正常工作。
我找到了这个方法,但我仍然得到 'Access Denied',也许它适合你:
$ 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 \
--port 3306 \
--username iam_user \
--region ap-northeast-1` \
--ssl-ca=/Users/hoge/rds-combined-ca-bundle.pem \
--enable-cleartext-plugin
更新:
这现在对我有用,我在角色策略方面遇到了另一个问题。
为上面提供的答案添加更多内容(谢谢 Safaa Selim)
第 1 步:从 http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html (Cert link https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem)
获取证书
第 2 步:在 RDS 上使用 root 帐户将用户添加到数据库 (http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html)
创建使用 AWSAuthenticationPlugin 识别为 'RDS' 的用户 mydbuser;
第 3 步:确保您有 ~/.aws/credentials 和 ~/.aws/profile 以及 mydbuser
第 4 步:将策略附加到来自 http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html
的 User/Role
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"rds-db:connect"
],
"Resource":[
"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
我关注 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 来确保它在添加代码修改之前正常工作。
我找到了这个方法,但我仍然得到 'Access Denied',也许它适合你:
$ 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 \ --port 3306 \ --username iam_user \ --region ap-northeast-1` \ --ssl-ca=/Users/hoge/rds-combined-ca-bundle.pem \ --enable-cleartext-plugin
更新: 这现在对我有用,我在角色策略方面遇到了另一个问题。
为上面提供的答案添加更多内容(谢谢 Safaa Selim)
第 1 步:从 http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html (Cert link https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem)
获取证书第 2 步:在 RDS 上使用 root 帐户将用户添加到数据库 (http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html) 创建使用 AWSAuthenticationPlugin 识别为 'RDS' 的用户 mydbuser;
第 3 步:确保您有 ~/.aws/credentials 和 ~/.aws/profile 以及 mydbuser
第 4 步:将策略附加到来自 http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html
的 User/Role{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rds-db:connect" ], "Resource":[ "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