基于AWS Lambda与SES发送加密邮件的技术方案咨询
解决方案建议
一、无需用户手动操作解密密钥的邮件加密方案
1. 基于域名的S/MIME加密(结合SES配置)
- 借助已完成的域名身份验证,部署S/MIME证书到SES:可从公共CA或内部CA申请针对组织域名的S/MIME证书,上传至SES后配置邮件发送时自动加密。
- 工作逻辑:发送邮件时,SES自动用收件人域名的公钥加密附件与邮件内容,组织内用户的邮件客户端(如Outlook、企业版Gmail)会自动调用本地同步的私钥解密——用户全程无需手动处理密钥,只要客户端完成企业邮箱的批量配置即可。
- 注意点:需通过企业邮箱管理后台,给域内用户批量推送S/MIME私钥的客户端配置,确保兼容性。
2. AWS KMS结合SES的透明加密
- 配置SES使用AWS KMS密钥加密邮件内容与附件:在SES控制台开启邮件加密功能,关联组织的KMS密钥,并设置仅允许已验证的域内身份拥有该密钥的解密权限。
- 工作逻辑:发送时SES用KMS密钥加密附件,收件人打开邮件时,SES会自动调用KMS完成解密(前提是收件人属于已验证的域内身份,由SES身份验证机制识别),用户无需手动操作密钥。
- 限制:仅支持在SES接收流程内解密,若用户将邮件导出到本地,可能需要额外配置,但不影响域内用户日常查看邮件。
二、实现仅域名用户可查看附件的方案
1. 附件替换为带权限控制的S3预签名链接
- 不直接发送CSV附件,将文件上传至AWS S3桶,设置桶策略仅允许允许组织域名的用户访问。
- 生成预签名链接:在Lambda中生成带有效期的S3预签名链接,将链接放入邮件正文替代附件。
- 权限控制:S3桶策略添加条件判断,仅当请求来源为组织域名用户(通过
ses:RecipientDomain或企业IAM标签识别)时允许访问;同时可将预签名链接有效期设为较短时长(如24小时),进一步限制访问范围。 - 效果:非域内用户收到邮件后点击链接会被S3拒绝,无法获取CSV文件;域内用户可正常打开链接下载。
2. SES收件人过滤+加密附件的组合方案
- 在Lambda发送邮件前,先验证收件人域名是否属于组织已验证的域名:若为域内用户,发送加密后的附件;若为外部用户,直接不附带附件或替换为权限提示内容。
- 结合S/MIME加密:对域内用户发送加密附件,外部用户无对应解密密钥,即使邮件被转发也无法打开附件。
注意事项
- S/MIME方案需确保域内用户的邮件客户端支持该协议,部分轻量客户端可能存在兼容性问题。
- S3预签名链接方案需合理设置有效期,避免影响域内用户正常访问;同时严格配置S3桶权限,防止未授权访问。
内容的提问来源于stack exchange,提问作者gm85
相关产品推荐
相关产品推荐

