生产环境中如何让IIS使用AWS CLI凭证访问AWS Secrets Manager?
解决IIS进程访问AWS Secrets Manager凭证的问题
1. 先明确IIS应用池对应的实际用户目录
你之前找错路径了,不同的应用池标识对应不同的存储目录:
- 如果应用池用的是
ApplicationPoolIdentity(默认设置),对应的用户目录是C:\Windows\System32\config\systemprofile\.aws,并非C:\Users下的路径 - 如果是自定义的应用池账户(比如
IIS AppPool\你的应用池名称),C:\Users\你的应用池名称这个目录默认不会自动生成,需要手动触发创建
2. 把AWS凭证配置到正确路径
针对ApplicationPoolIdentity的情况
- 手动创建路径:
C:\Windows\System32\config\systemprofile\.aws - 在该目录下新建
credentials文件,内容和你本地AWS CLI的配置格式一致:[default] aws_access_key_id = 你的AccessKey aws_secret_access_key = 你的SecretKey - 给这个
.aws目录和credentials文件添加IIS AppPool\你的应用池名称的读取权限,或者给IIS_IUSRS组添加读取权限也可
针对自定义应用池账户的情况
- 用这个自定义账户登录服务器,打开一次命令提示符(cmd),系统会自动生成对应的用户目录
C:\Users\自定义账户名 - 然后在该目录下创建
.aws\credentials文件,填入凭证信息 - 确保这个自定义账户对
.aws目录和文件拥有读取权限
3. 验证凭证是否生效
重启你的IIS应用池,然后测试应用是否能正常从AWS Secrets Manager获取凭证
更安全的替代方案
不建议直接在服务器存放明文凭证,推荐这些更合规的方式:
- 如果是EC2上的IIS,给EC2实例绑定AWS IAM角色,代码无需存储任何凭证即可访问Secrets Manager
- 或者通过环境变量给IIS应用注入AWS凭证,避免依赖用户目录的配置文件
内容的提问来源于stack exchange,提问作者NovaDev
相关产品推荐
相关产品推荐

