【发布时间】:2021-08-14 23:18:12
【问题描述】:
我在 Amazon S3 存储桶上托管了一个 Web 应用程序,我们正试图在我们的 VPN 中限制对应用程序的访问。因此,我们添加了以下策略以仅在连接到 VPN 时限制访问。我们正在使用 Terraform 软件工具和 Jenkins 来构建应用程序并将其部署到 Amazon S3 存储桶中。
当我们第一次部署应用程序时,它会成功部署,并且只能限制连接到 VPN 的用户。但是现在我面临的问题是,当我第二次尝试部署应用程序时,由于访问限制(禁止访问错误)导致部署失败,原因是我们的 jenkins 服务器不在 VPN 上,并且 terraform 刷新是失败并出现 403 错误。我使用的代码如下。
"Sid": "VPNAccessIP",
"Action": "s3:GetObject",
"Effect": "Deny",
"Resource": [
"arn:aws:s3::: demo-dev",
"arn:aws:s3::: demo-dev/*"
],
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"130.110.0.0/22"
]
}
},
"Principal": "*"
是否有任何其他方法可以实现仅针对 VPN 连接的访问限制,并且它应该允许从 Jenkins 部署应用程序?
【问题讨论】:
-
为什么不能在策略中添加 Jenkins 服务器 IP 和 VPN IP?
-
这里有几种不同的方法,但这个问题可能更像是Server Fault 问题而不是 Stack Overflow 问题,因为它是关于 AWS 服务而不是编程。话虽如此,一个可能的答案是使用VPC Service Endpoint,以便您的 Jenkins 服务器(可能在 VPC 中运行)可以从私有地址而不是公共地址访问 S3 存储桶。这充当了您的 VPC 网络和 S3 服务之间的某种桥梁。
标签: amazon-web-services amazon-s3 terraform amazon-iam