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

如何在AWS上运行仅允许单个IAM用户执行的Python脚本

问题解答

这类权限限制不需要在脚本内部实现,AWS原生的IAM权限校验机制已经可以满足你的需求,且安全性、可靠性远高于脚本侧自行实现的校验逻辑,具体说明如下:

  • AWS服务端会强制校验所有API请求的身份权限:boto3发起请求时会自动加载你指定的AWS CLI凭证文件中的身份密钥,请求到达AWS服务端后,会先校验该IAM用户是否有对应操作的权限,校验不通过会直接返回AccessDenied错误,这个逻辑是在服务端执行的,本地脚本无法绕过。
  • 脚本侧实现权限校验存在安全隐患:如果脚本被恶意篡改、校验逻辑被绕过,权限限制会直接失效,而IAM侧的权限控制不受本地文件影响,是更合规的权限管控方式。

你只需要完成以下配置即可实现需求:

  1. 创建指定的低权限IAM用户,仅为其分配脚本运行必须的最小权限,比如脚本仅需要读取单个S3桶的对象,就只授予针对该桶的s3:GetObject权限,不要授予多余的全量权限。
  2. 为该IAM用户生成访问密钥,在AWS CLI凭证文件中配置为单独的命名配置文件,示例配置如下(凭证文件默认路径为~/.aws/credentials):
[low-perm-script-user]
aws_access_key_id = 你的IAM用户AK
aws_secret_access_key = 你的IAM用户SK
  1. 脚本初始化boto3会话时明确指定使用该配置文件即可,示例代码:
import boto3

# 指定使用低权限用户的配置文件
session = boto3.Session(profile_name='low-perm-script-user')
# 初始化对应服务的客户端
s3_client = session.client('s3')

额外安全提示:不要将访问密钥硬编码到脚本中,除了使用CLI凭证文件外,也可以通过环境变量传递凭证;如果脚本是在EC2、Lambda等AWS托管服务上运行,建议直接绑定IAM角色,无需手动配置访问密钥,进一步降低密钥泄露风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:09:01