如何无需长期access_key通过AWS角色获取用户临时access_key
无长期Access Key的AWS跨账户临时访问实现方案
完全可以抛弃Access账户下的长期静态AK/SK实现需求,基于AWS原生身份能力就能拿到访问Prod环境的短生命周期临时凭证,默认所有临时凭证最长有效期12小时,可按需压缩到15分钟级别,没有长期密钥轮换的运维负担,符合ephemeral权限的设计要求。
方案1:IAM Identity Center 生产级首选方案
- 直接把Access账户作为Identity Center的实例管理账号,对接企业内部身份源(企业AD、自建身份系统、商用身份服务均可),不需要在Access账户给任何个人用户创建带长期AK的IAM用户,用户全程用自己的企业账号完成身份校验,不需要持有AWS侧的长期静态密钥。
- 提前给对应人员配置Prod账户的权限集,映射好Prod账户内的对应操作角色。用户侧只需要在AWS CLI v2中做一次基础配置,执行
aws sso login完成网页端身份认证后,CLI会自动拉取对应Prod账户角色的临时AK/SK、SessionToken,凭证到期自动失效,全程不会落地长期密钥。 - CLI配置示例,配置文件
~/.aws/config中不需要写入任何密钥信息:
[profile prod-env] sso_start_url = 自身部署的Identity Center访问入口 sso_region = Identity Center部署的AWS区域 sso_account_id = Prod账户的12位ID sso_role_name = Prod账户中授权的跨账户角色名 sso_registration_scopes = sso:account:access
- 可以直接在权限集层面配置会话有效期、权限边界,比如强制普通开发人员的凭证1小时失效,运维人员凭证最长4小时失效,运维侧只需要维护人员和权限的映射关系,不需要处理任何AK轮换工作。
方案2:SAML/OIDC联邦身份直连 轻量场景适用
- 如果团队规模小,不想部署Identity Center,可以直接在Prod账户内创建SAML/OIDC类型的身份提供商,信任企业内部身份系统的认证断言,不需要经过Access账户的IAM用户做权限中转。
- 用户完成企业身份认证后,直接调用STS的
AssumeRoleWithSAML或者AssumeRoleWithWebIdentity接口,就能直接拿到Prod账户对应角色的临时访问凭证,全程不需要Access账户存在任何长期AK。 - 注意配置时要强制开启MFA校验,收紧断言的有效时长,避免认证断言泄露带来的越权风险。
方案3:现有架构最小改造方案
- 如果暂时不想调整现有的Access/Prod两账户跨角色架构,可以直接删除Access账户下所有IAM用户的长期AK,只给用户保留控制台登录权限:用户登录Access账户控制台后,要么直接在控制台生成最长12小时有效期的临时会话凭证,要么基于控制台登录后的Web身份会话调用
aws sts get-session-token拿到Access账户的临时凭证,再用这个临时凭证去AssumeRole获取Prod账户的访问权限。 - 这个方案几乎不需要改造现有权限配置,改造完成后Access账户内不存在任何长期静态AK,所有用于跨账户访问的基础凭证本身就是短时效的,到期自动失效,完全省去定期轮换长期AK的运维工作。
生产环境落地建议:所有非紧急运维场景的临时凭证有效期建议设置为1小时以内,所有身份认证环节强制开启MFA,严格遵循权限最小化原则配置角色策略,从根源上消除长期密钥泄露的安全隐患。
内容的提问来源于stack exchange,提问作者hahahahey
相关产品推荐
相关产品推荐

