马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
标题配景
偶尔,我们渴望一台AWS EC2实例,即云服务器,可以或许使用AWS CLI访问AWS管理控制台资源。
比方,这里,我们想让它可以或许列出全部IAM用户组。
于是,我们使用下面的下令,在AWS CLI中添加某位用户的访问秘钥,作为访问时的认证根据。
然而,这并非最佳方法。最佳方法应是给要访问控制台的实例分配一个IAM脚色。否则将会有许多标题,比方,当前使用的访问秘钥能直接被以明文列出。
于是,我们新建一个具有我们要分配的权限的IAM脚色,并把它分配给这个实例。
标题形貌
之后我们在控制台里删除原来使用的访问秘钥。然而,此时,新分配的脚色好像并没有起作用。
- [ec2-user@ip-172-31-6-134 ~]$ aws iam list-groups
- An error occurred (InvalidClientTokenId) when calling the ListGroups operation: The security token included in the request is invalid.
复制代码 故障排查
我们猜疑AWS CLI好像还在实验使用原来的秘钥举行认证。然而,由于这对秘钥已经从控制台内被删除,以是天然而然,认证失败。
办理方法
毕竟确实云云。当一个EC2实例被分配了一个IAM脚色时,并不会自动抹除之前使用aws configure
设置的访问秘钥根据。不但云云,当IAM脚色根据和访问秘钥根据同时存在时,后者具有更高优先级,也就是说AWS CLI会优先使用它们。
既然云云,移除原来使用的访问秘钥应该就能欺压AWS CLI使用脚色举行认证。直接删除储存秘钥的文本文件credentials。
有人发起再抹除一些情况变量,但实验下来好像并不须要。
- for var in AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN AWS_SECURITY_TOKEN ; do eval unset $var ; done
复制代码 删除完成后,再次实验从CLI访问AWS管理控制台。
乐成。
- [ec2-user@ip-172-31-6-134 ~]$ aws iam list-groups
复制代码- {
- "Groups": [
- {
- "Path": "/",
- --snip--
复制代码 而且,我们还能确认,我们当前确着实用脚色作为根据访问。
- [ec2-user@ip-172-31-6-134 ~]$ aws sts get-caller-identity
复制代码- {
- "UserId": "AR...KI:i-0f54eeba8022361ec",
- "Account": "5...2",
- "Arn": "arn:aws:sts::5...2:assumed-role/IAMReaderRole/i-0f54eeba8022361ec"
- }
复制代码- [ec2-user@ip-172-31-6-134 ~]$ aws configure
- list Name Value Type Location ---- ----- ---- -------- profile <not set> None Noneaccess_key ****************6TVT iam-role secret_key ****************RnOE iam-role region ap-southeast-1 imds [ec2-user@ip-172-31-6-134 ~]$
复制代码 标题办理。
|