You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何避免本地硬编码AWS凭证以获取AWS CLI临时访问凭证

解决方案

以下是几种可实现不在本地明文硬编码长期IAM凭证的方案:

方案1:使用aws-vault工具管理凭证(最推荐本地个人用户使用)

  • aws-vault会将IAM用户的长期凭证加密存储在操作系统原生的密钥管理组件中(macOS钥匙串、Windows凭据管理器、Linux libsecret),不会明文保存在.aws/credentials等普通配置文件里,从根源避免硬编码泄露风险
  • 首次配置仅需执行aws-vault add 自定义配置名,按照提示输入一次长期access key和secret key即可,后续无需再手动维护长期凭证
  • 需要获取临时会话时直接执行对应命令即可,工具会自动完成STS调用、MFA校验、临时凭证缓存/续期全流程,示例命令:
    # 执行单条AWS CLI命令
    aws-vault exec 自定义配置名 --mfa-token=123456 -- aws s3 ls
    # 导出临时凭证到当前shell环境,后续所有aws命令都自动使用临时凭证
    aws-vault exec 自定义配置名 --mfa-token=123456 -- $SHELL
    

方案2:使用AWS CLI原生credential_process配置(无需第三方工具)

  • 你可以自行编写一个轻量脚本,逻辑为:读取用户输入的MFA码,调用aws sts get-session-token接口,输出符合AWS CLI规范的JSON格式凭证
  • 长期凭证不需要写入本地配置文件,可以设置为脚本运行时手动输入,或者从本地加密存储中读取
  • 在.aws/config中添加对应配置,指定credential_process指向你编写的脚本即可,配置示例:
    [profile mfa-user]
    credential_process = /用户本地路径/mfa_sts_script.sh
    region = cn-north-1
    
  • 后续调用AWS CLI时会自动触发脚本获取临时凭证,不需要手动管理凭证文件的写入和切换

方案3:企业用户对接身份提供商实现完全无长期凭证

  • 如果你使用的是企业AWS账号,可通过IAM Identity Center(原AWS SSO)对接企业身份源(如AD、Okta等),本地完全不需要存储任何IAM用户长期凭证
  • 每次需要访问AWS资源时,执行aws sso login,通过浏览器完成企业身份认证和MFA校验后,CLI会自动获取临时凭证,全程无需使用IAM用户的长期访问密钥

临时替代方案

如果不想做上述配置,也可以每次需要获取会话前,手动将长期AK/SK临时写入当前shell的环境变量,调用STS获取到临时凭证后立即销毁环境变量,本地不会留存长期凭证:

# 临时写入环境变量,仅当前shell生效
export AWS_ACCESS_KEY_ID=你的AK
export AWS_SECRET_ACCESS_KEY=你的SK
# 调用STS获取临时凭证
aws sts get-session-token --serial-number arn:aws:iam::account_number:mfa/user_name --token-code 123456
# 立即销毁长期凭证环境变量
unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY

内容的提问来源于stack exchange,提问作者dataviews

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 21:18:03