linux - 无需使用 cli 从特定 IP 源下载 s3 文件
问题描述
我需要在我的 aws vpc 中的许多实例中下载一个文件(例如:https : //hematestpolicy.s3.amazonaws.com/test/ca-dev2.png)s3 对象,而无需安装 aws cli。该文件应受到保护,只能在 VPC 内访问。我在我的 s3 存储桶 hematestpolicy 上应用了以下存储桶策略。我能够使用 aws s3 ls 命令在我的实例中查看文件,但无法使用 wget 命令下载它。任何人都可以建议它是否可以实现或更好的解决方案,将文件私有到 vpc 并在不使用 AWS CLI 的情况下下载
`
{
"Version": "2012-10-17",
"Id": "CreditApplications",
"Statement": [
{
"Sid": "AllowCreditAppProcessing",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::975472539761:root",
"arn:aws:iam::975472539761:role/hema-ghh"
]
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::hematestpolicy",
"arn:aws:s3:::hematestpolicy/*"
],
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"172.31.0.0/16",
"192.168.2.6/16"
]
}
}
},
{
"Sid": "DenyEveryoneElse",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::hematestpolicy",
"arn:aws:s3:::hematestpolicy/*"
],
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"172.31.0.0/16",
"192.168.2.6/16"
]
},
"ArnNotEquals": {
"aws:PrincipalArn": [
"arn:aws:iam::975472539761:role/hema-ghh",
"arn:aws:iam::975472539761:root"
]
}
}
}
]
}`
解决方案
除非您有 VPC 端点,否则所有传出连接都将通过公共源(对于公共实例,这将是它们通过 Internet 网关的公共 IP,而对于私有实例,这将是通过 NAT)。
如果您想限制只允许通过 VPC 检索对象,您应该考虑使用S3 的 VPC 端点。通过创建它并将其添加到您的路由表中,它实际上还将提供到 S3 的内部连接,而不是使用公共互联网。
完成此操作后,您可以创建一个存储桶策略,将请求完全限制到该 VPC 终端节点的源。
例如,以下策略将拒绝不是来自 VPC 端点的访问。
{
"Version": "2012-10-17",
"Id": "Policy1415115909152",
"Statement": [
{
"Sid": "Access-to-specific-VPCE-only",
"Principal": "*",
"Action": "s3:*",
"Effect": "Deny",
"Resource": ["arn:aws:s3:::awsexamplebucket1",
"arn:aws:s3:::awsexamplebucket1/*"],
"Condition": {
"StringNotEquals": {
"aws:SourceVpce": "vpce-1a2b3c4d"
}
}
}
]
}
请注意,当使用拒绝所有内容的存储桶策略时,会将对该存储桶的所有访问(包括管理任务)限制为只能从该源 VPC 端点获得,因此您应该尝试限制操作的范围,即GetObject
.
推荐阅读
- go - 短格式 goroutine 返回值
- vb.net - vb.net 在 TabControl 中查找以指定字符串开头的文本框名称
- ios - 尝试将 UILabel 设置为 UISegmentedControl 项时遇到类型问题
- python - 数据框中的 Groupby 并将完整行列表传递给缩减函数
- responsive-design - 使用 bootstrap-vue 不会自动滚动
- php - 带有ajax响应的laravel
- visual-studio-code - vscode打不开文件
- algorithm - 搜索树并返回仅包括结果的树子集的高效算法
- django - 我可以使用 Django 的模板来启动 react JS 吗?
- mongodb - Mongoose 更新查询 - Mongoose/Mongodb