在aws client端如何assume IAM role

以下是aws官网上给出的IAM role的主要使用场景:

在aws client端如何assume IAM role


如何使用在aws client 去assume 一个IAM role(macOS)

前提条件:AWS上建好IAM 并且本地aws client对应的用户要有assume的权限。这个不细说,非本文主要内容。

1. 在aws client端执行assume role命令

aws sts assume-role –role-arn arn:aws:iam::28441135585:role/role-name –role-session-name “AnySessionName”

在aws client端如何assume IAM role

2. 把上面返回信息设置为环境变量,让当前aws iam user具有role权限

export AWS_ACCESS_KEY_ID=*

 export AWS_SECRET_ACCESS_KEY=*

export AWS_SESSION_TOKEN=*

3. 验证是否assume成功

aws sts get-caller-identity

在assume前这个命令的输出应该是:

在aws client端如何assume IAM role

assume role之后这个命令的输出应该是:

在aws client端如何assume IAM role

4. 做任何该role具有权限的事情

5. unassume role

unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN

6. 执行export命令。从终端输出中查看,以上环境变量是否已经被删除

export


以上述知识点为背景,接下来讨论如何在执行gitlab cicd pipeline时,assume IAM role。

1. 首先,要有一个aws的IAM user,该用户需要具有执行terraform的基本权限。列如创建IAM role(无法创建role就无法有后续assume role的执行)、上传文件到s3(terraform的状态文件卧室持久化到s3上的,所以我需要)。

2. 在gitlab-runner上配置aws IAM user的credential,然后在pipeline中执行脚本来assume role

以下三个命令实现“从assume role命令的返回值中提取各个字段的方法”,这是在pipeline中实现assume role的关键。

– export AWS_ACCESS_KEY_ID=$(aws sts assume-role –role-arn “arn:aws:iam::284411369985:role/grand-world-development-role” –role-session-name “GitLabSession” –query ‘Credentials.AccessKeyId’ –output text)

– export AWS_SECRET_ACCESS_KEY=$(aws sts assume-role –role-arn “arn:aws:iam::284411369985:role/grand-world-development-role” –role-session-name “GitLabSession” –query ‘Credentials.SecretAccessKey’ –output text)

– export AWS_SESSION_TOKEN=$(aws sts assume-role –role-arn “arn:aws:iam::284411369985:role/grand-world-development-role” –role-session-name “GitLabSession” –query ‘Credentials.SessionToken’ –output text)

在aws client端如何assume IAM role

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
电缆宝的头像 - 宋马社区
评论 抢沙发

请登录后发表评论

    暂无评论内容