最近我收到一封电子邮件,告诉我某些 IE 连接可以访问我的存储桶:
eu-central-1|media.myapp | REST.GET.OBJECT|TLSv1|9|[Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NE
eu-central-1|media.myapp | REST.GET.OBJECT|TLSv1|54|[Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.1; .NET CLR 3.5.30729; .NET CLR 3.0.30618; .NET4.0C;
但我想知道这些设备是什么以及 IP 使用了什么,以便诊断问题的原因(旧式基础设施没有文档)。有没有办法保留访问日志,记录哪些 IAM 帐户和设备的 IP 和 MAC 从我的存储桶中接收项目?
答案1
我不确定我是否正确理解了你的问题,但是如果你问如何只允许某些用户或 IP 访问你的 S3 存储桶(我假设你指的是从公共互联网访问),这里有一个存储桶策略块,我用它来允许,例如,只允许我想要访问存储桶的公共 IP 地址:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "IPAllow",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::<bucket name>/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"<first IP/32",
"<second IP>/32",
"<third IP>/32",
"<fourth IP>/32"
]
}
}
}
]
}
希望这至少可以为您指明正确的方向。
答案2
Amazon S3 用户指南解释了请求日志记录。
服务器访问日志记录为对存储桶发出的请求提供详细记录。服务器访问日志对许多应用程序都很有用。例如,访问日志信息可用于安全和访问审计。
https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerLogs.html
您将无法获知 MAC 地址,因为这些地址永远不会通过互联网传输,但设备 IP 地址(或公共 NAT 地址,如果设备位于 NAT 路由器后面)将被捕获。要识别 NAT 路由器后面 LAN 上的特定设备,需要访问设备和/或路由器。
日志还将捕获用于访问对象的 IAM 凭证(如果有),这些凭证也会被捕获到日志中。
除了这些日志中发现的信息之外,从 AWS 方面无法了解有关设备的其他信息。
据推测,您所指的电子邮件与这些设备正在使用 TLSv1 有关,AWS 即将停止对 TLSv1 的支持。
为了响应传输层安全性 (TLS) 不断发展的技术和监管标准,我们将更新所有 AWS 服务 API 终端节点的 TLS 配置,最低版本为 TLS 1.2。此更新意味着,到 2023 年 6 月 28 日,您将无法再在所有 AWS 区域的所有 AWS API 中使用 TLS 版本 1.0 和 1.1。
https://aws.amazon.com/blogs/security/tls-1-2-required-for-aws-endpoints/
在 API 更改生效之前,您可以使用适当的方式阻止旧版本的 TLS拒绝政策。这可能会帮助您从故障报告中识别设备。通过定期添加和删除策略,您可能能够识别设备而不会导致永久性中断,就像 AWS 推出 API 更改时发生的情况一样。被拒绝的请求仍将被 S3 记录,但会遇到 HTTP 403 响应和错误AccessDenied
。