概述目标:通过预签名URL实现受控的临时访问,限制方法与有效期与内容类型,支持SSE-KMS加密。适用:前端直传、临时下载链接、第三方受控访问。核心与实战生成下载预签名(CLI):aws s3 presign s3://my-bucket/reports/2025-11-26.pdf --expires-in 300 生成上传预签名(Node.js SDK v3):import { S3Client, PutObjectCommand } from '@aws-sdk/client-s3' import { getSignedUrl } from '@aws-sdk/s3-request-presigner' const client = new S3Client({ region: 'us-east-1' }) const command = new PutObjectCommand({ Bucket: 'my-bucket', Key: 'uploads/image.jpg', ContentType: 'image/jpeg', ServerSideEncryption: 'aws:kms', SSEKMSKeyId: 'arn:aws:kms:us-east-1:123456789012:key/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' }) const url = await getSignedUrl(client, command, { expiresIn: 300 }) 客户端上传示例:fetch(url, { method: 'PUT', headers: { 'Content-Type': 'image/jpeg' }, body: fileBlob }) 示例限制允许的Content-Type与大小(服务端校验):-- 仅对 image/* 与 size <= 5MB 生成预签名 强制HTTPS与短有效期:-- expiresIn一般推荐≤600秒;链接仅通过TLS分发 验证与监控验证对象与加密:aws s3api head-object --bucket my-bucket --key uploads/image.jpg 访问控制:Bucket策略禁止公有读;使用`aws:SecureTransport`条件阻止HTTP。日志与审计:CloudTrail记录PutObject/GetObject与KMS密钥使用;监控异常访问。常见误区长有效期或允许任意Content-Type导致滥用;需收紧有效期与类型。未启用SSE-KMS导致敏感数据明文存储;建议在Bucket或对象级别强制加密。在后端生成但前端泄露链接到公开渠道;需限制可见范围与失效策略。结语预签名URL可安全地实现临时上传/下载,结合类型与加密与审计策略,满足合规与可控访问需求。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部
2.035200s