修复挂载 Amazon S3 时的 Access Denied 错误 — NetDrive
在 NetDrive 挂载的 S3 存储桶上遇到 Access Denied?本文介绍三个最常见的原因——凭证错误、缺少 IAM 权限操作,以及存储桶策略冲突。
你在 NetDrive 中挂载了一个 S3 存储桶,盘符出现在 Windows 资源管理器中,但每个文件操作都返回 “Access Denied”。驱动器显示出来了,却什么都访问不了。这通常是因为 NetDrive 使用的 IAM 凭证缺少所需的 S3 操作权限——或者 IAM 策略本身没问题,但存储桶策略把它覆盖了。

将 S3 存储桶挂载为本地驱动器
NetDrive 让 Google Drive、OneDrive、S3、SFTP、WebDAV 等在 Windows 和 macOS 上显示为本地驱动器 — 无需同步,无需完整下载。
- 支持 Amazon S3 及兼容 S3 的存储(Wasabi、MinIO 等)
- 文件浏览器可在挂载前测试存储桶访问权限
- 自 NetDrive 3.19.7 起支持自动检测 S3 区域
免费试用。提供终身与订阅方案。
为什么挂载的 S3 驱动器会出现 Access Denied
Amazon S3 的访问权限由两个独立的层级控制:附加在你输入访问密钥所属用户或角色上的 IAM 策略,以及附加在存储桶本身的 存储桶策略。任意一层都可能在另一层不知情的情况下拒绝某个操作。
NetDrive 要正常挂载并使用存储桶,至少需要以下 S3 操作权限:
s3:ListBucket— 用于列出对象并构建目录视图s3:GetObject— 用于在你打开文件时读取文件内容s3:PutObject— 用于将文件写回存储桶(仅读写挂载需要)s3:DeleteObject— 用于从已挂载的驱动器中删除文件(仅读写挂载需要)
缺少某个操作权限会导致该特定操作出现 “Access Denied”。你可能可以浏览目录,但打开文件时被拒绝;或者可以打开文件,但保存时被拒绝——这两种情况都是 IAM 授权不完整的表现,而不是凭证完全失效。

检查 1:在 NetDrive 中输入的凭证
先从凭证本身入手。访问密钥中一个字符的错位,或过期的密钥,都会产生与 IAM 策略配置错误相同的 “Access Denied” 症状。
- Open NetDrive → 点击你的 S3 驱动器上的齿轮图标以打开其设置。
- 将 Access Key ID 与 AWS 控制台中 IAM → Users → [username] → Security credentials 下显示的值逐字符核对。建议直接复制粘贴而不是重新输入。
- 重新输入 Secret Access Key。AWS 在初始创建后不会再显示该值,因此如果对其正确性有任何疑问,请在 IAM 中生成一对新密钥,并立即用新值更新 NetDrive。
- 检查 Region 字段。区域不匹配——例如存储桶实际位于
eu-west-1,却配置成了us-east-1——会将请求路由到错误的端点并返回 403 错误。NetDrive 3.19.7 为新建连接增加了自动区域检测,但在升级前创建的驱动器配置仍保留最初输入的值。如有需要,请手动更新区域。
在修正任何凭证问题后,点击 Mount 并尝试浏览目录,然后再继续检查 IAM 层。
检查 2:IAM 策略——所需的 S3 操作权限
如果凭证正确但访问仍被拒绝,说明所附加的 IAM 策略缺少一个或多个所需操作。确认这一点最快的方法是使用 AWS IAM 策略模拟器。
在 AWS 控制台中依次打开 IAM → Policy Simulator,选择密钥已配置在 NetDrive 中的 IAM 用户,然后针对你的存储桶 ARN(arn:aws:s3:::my-bucket)测试 s3:ListBucket,并针对对象 ARN(arn:aws:s3:::my-bucket/*)测试 s3:GetObject。如果模拟器返回 “Denied”,则添加一个授予缺失操作权限的策略。
以下是针对单个存储桶读写访问的最小策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": "arn:aws:s3:::my-bucket"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}
注意这里有两个不同的 Resource 值:ListBucket 作用于存储桶 ARN 本身,而 GetObject、PutObject 和 DeleteObject 作用于其中的对象(/*)。把它们合并成一行 Resource 是一个常见错误,会悄无声息地破坏列表功能或对象访问。

使用 NetDrive 的 File Browser(无需挂载即可访问)可以在更新 IAM 策略后快速验证对象访问是否正常。它发出的 API 调用与已挂载驱动器相同,但不分配盘符,因此在排查问题时能提供快速的反馈回路。
检查 3:存储桶策略中的显式拒绝
宽松的 IAM 策略会被存储桶策略中的显式 Deny 覆盖。前往 S3 → [your bucket] → Permissions → Bucket policy,查找任何 "Effect": "Deny" 语句。常见的元凶包括:
- VPC 端点限制 — 拒绝并非来自特定 VPC 端点(
aws:SourceVpc)的请求的策略。桌面版 NetDrive 通过公网连接,除非你通过 VPN 路由。 - IP 允许列表 — 使用
aws:SourceIp阻止来自你机器公网 IP 的请求的策略。 - HTTP 拒绝 — 当
aws:SecureTransport为false时拒绝请求的语句。由于 NetDrive 的 S3 请求使用 HTTPS(自 3.1.234 版本起已验证),这通常不会造成影响,但如果存储桶策略是出于防御性考虑编写的,仍值得检查。
如果你发现有限制条件适用于你的访问模式,请放宽该条件,或为该 IAM 用户添加一条优先级更高的显式 Allow。
小结
NetDrive 中的 S3 “Access Denied” 错误几乎总能归结为三个原因之一:凭证错误、IAM 策略缺少所需操作,或存储桶策略中存在显式拒绝。按此顺序逐一排查——凭证是最容易排除的一项。若要挂载其他对象存储服务,请参阅 在 macOS 上挂载 Amazon S3 或 使用 NetDrive 的 DevOps S3 测试固件工作流。
— Casey, NetDrive