关于AWS STS使用小结

7 篇文章 0 订阅
5 篇文章 0 订阅

目录

1. 迁移EC2的凭证

2. 设计IAM密钥

2.1 配置IAM account

 2.2 配置IAM role

2.3 配置内联策略

3. 自动化获取临时凭证


1. 迁移EC2的凭证

关于如何获取临时token可以参考:关于AWS IAM Role如何配置临时token访问S3 小结

1) 假设我们目前有一台EC2并且赋予了IAM role(CloudWatchAgentServerRole)。

2) 连接上这台EC2之后输入:

curl http://169.254.169.254/latest/meta-data/iam/security-credentials/CloudWatchAgentServerRole

3) 打开到本地用户目录的credentials文件,加上temp_user这个profile。

aws_access_key_id = ASIA6ALYQ71TOA1CDPOZ
aws_secret_access_key = C/tRDDImnkcQp1Q0SBd1onzMqxtxd4cEFIGsLk8F
aws_session_token = IQoJb3JpZ2luX2VjEKL//1EaCXVzLXdlc3QtMSJHMEUCIQDdSNNMU/tLIDz7Dz7F4maySiga2Ucm/ug4wOyu3+tI9AIgI6BWayNRXHeodAr5Bqlb91ovPHGlqY8y3mBtphk/DHkq0gQIKxAAGgw5NjI4NjIzMTcwOTQiDHWJCyxkOdhoeoVnyCqvBIsbsJFmbfFBsSGJVZUsAjYh2HOTCLWz08mf3Uzkt0v668ARf8ffqk5QawZ/ndGcQWgkl2gUMJlDhpMsI7S9bTeeMDBR56bcYeYMHGKky6o/g+fcUYKBcvy67m6a1GrA0fC7U+cZFJgJGLyp608yWvoXAuhmb/jis1H/yoSTkSxmj4xPtuhtmboRnyHglhRXp6fcE5/DF1y/ob3DPNdIuqK9UA1yPRrC3DBuCYtwudB2IcrLXrmMucGC3ci7E0ZUgqNb/uE7B103V8Kb9hLqOWDaeeGaE7ZOaqRhJCWs2bbih56F1XGjowb9XH3CcSEcpwO/myieFiO9l+kOQz4mO96KyxcguBvsHPUTiSb7dhTaFwFuqSSrGcYUwbaStV24K26ccRiiuY1sxW1A7JIyPQFC9W5+k8+xvuDfkM9UeeKrLO6MMXsiOHSTcFQqWFLQN23jxV2Bcim1G4wL8mP3n+SOv6L+XW88OP+EqtFegM4hu5sBtbY9EGNAZnnuO09FjaZw7DOaUlRIr3pIH2e6Z2JvAlX3pOQ7uNd5Vco6aSw3Ix+89CfZig6znnRRU54weKk0O1BhZpgVU0Ov+Kyu61Ew1/uz0J6othLxzGAhSX5pvYxHM+o2CRLNC9GJQzCPoDNntOQYMwjKihQsb666hRJPaJ92oi6DIG8vilj1/Ap1KF/WP9PQZnXaLs3cQtf4gFVsdZQwuT86cdyC8WoFWxg7qv17YAQhiEqHTZ6ivMww5Z6ymAY6qQFeEOfmXCIe3Lzr+PLfVGn67GGgbr8/AL2Va+G+rOojRCUDR1tdOz/tmeakA48/xgM+Fmh5Z8sXsqLkS5IzL2a1mZapVcoewpV4dzm4NmLIuF04VcFDTZcEiKo/J/2pOWaPO9ijh8X7b+3zXa//Q21mL04UEbkYWzmhFF4XaPdEJAvyZT4azCJrEUYgDCvg+rUc1T2xZCmGweKzwo5AW1ucjHe894VbGJ4L

值得注意的是这里多了个aws_session_token。 

4) 查看S3。

2. 设计IAM密钥

虽然通过第1步可以获取到临时的凭证,但这并不是aws推荐的最佳实践,而是通过sts assume role的方式,通过代码方式切换IAM role可以参考:关于应用程序中使用STS切换IAM角色

以下通过aws cli方式对STS assume role进行测试。

2.1 配置IAM account

1) 创建IAM account(bas-developer)。

2) 把上一步创建account得到的new_user_credentials设置到本地用户目录的Credentials文件中。

3) cli访问S3,可以看到目前是被拒绝的。

 2.2 配置IAM role

1) 创建IAM role(DeveloperRole)。

2.3 配置内联策略

1) 创建内联策略,注意是在账户bas-developer下创建。然后选择STS,并且资源这里我们要选择特定,意思是允许账户bas-developer承担这个角色

2) 输入:

aws sts assume-role --role-arn arn:aws:iam::962812317094:role/DeveloperRole --role-session-name bas-developer --profile developer

然后复制更新到Credentials(别忘了aws_session_token也要复制进去,因为时临时凭据),就可以访问S3了。

3. 自动化获取临时凭证

经过上一步的操作,可能就会觉得每次需要手动更新Credentials文件很麻烦,所以下面总结一下自动更新Credentials文件的方法。

1) 更新Credentials(注意去掉aws_session_token):

[developer]
aws_access_key_id = AKIA1ALYQ8YTMHVTMWWQ
aws_secret_access_key = uAJ1qGVwJkR3I2n1XDucUoUqOsWatB5j+d4BRbpp
[automate_developer]
role_arn = arn:aws:iam::962812317094:role/DeveloperRole
source_profile = developer

2) cli输入:

aws sts assume-role --role-arn arn:aws:iam::962812317094:role/DeveloperRole --role-session-name bas-developer --profile developer

aws s3 ls --profile automate_developer

经过automate_developer这个profile,下次assume role就不需要手动再去更新Credentials了。

1. 如果遇到An error occurred (AccessDenied) when calling the AssumeRole operation: User:xxx is not authorized to perform: sts:AssumeRole on resource,看看创建的内联策略是不是放在role下面了,应该创建在account下面,并指定principal为role的arn。

2. 如果遇到An error occurred (InvalidAccessKeyId) when calling the ListBuckets operation: The AWS Access Key Id you provided does not exist in our records,应该是更新Credentials文件的时候漏了更新aws_session_token。

3. 如果遇到An error occurred (InvalidClientTokenId) when calling the AssumeRole operation: The security token included in the request is invalid,Credentials去掉aws_session_token。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值