如何简单地使其对公众保密?无需为我的脚本更改任何内容
Posted
技术标签:
【中文标题】如何简单地使其对公众保密?无需为我的脚本更改任何内容【英文标题】:How to simply make it private for general public? Without changing anything for my script 【发布时间】:2018-06-22 14:04:09 【问题描述】:我是 AWS 的新手。我有以下数据:
bucket ARN: arn:aws:s3:::my-bucket555
user: my-user-555
Access Key ID: "some key"
Secret access key: "some secret key"
我有这个桶的政策:
"Version": "2012-10-17",
"Statement": [
"Effect": "Allow",
"Principal":
"AWS": "*"
,
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::my-bucket555"
,
"Effect": "Allow",
"Principal":
"AWS": "*"
,
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::my-bucket555/*"
]
而且我在 VPS 上还有一个 bash 脚本,它通过 API 使用 Amazon 的标准 cli 实用程序“aws s3”来处理我的 AWS 帐户的一些工作人员。和 API 密钥
问题:我的存储桶在“https://s3.eu-west-2.amazonaws.com/my-bucket555”上公开可用。网址被混淆了。
问题:如何将其设为私有/非公开,并且仍然允许我的 bash 脚本继续执行它正在执行的工作?
【问题讨论】:
【参考方案1】:您有几种方法可以做到这一点。
首先,将您的存储桶设为私有。
替代方案
-
创建一个 IAM 组并将其设置为该策略,在该组中创建一个用户并在您的 bash 脚本中使用访问密钥。
在策略中添加
Condition
以仅接受来自特定 IP 的访问。
"Version": "2012-10-17",
"Statement": [
"Effect": "Allow",
"Principal":
"AWS": "*"
,
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::my-bucket555",
"Condition":
"ForAnyValue:IpAddress":
"aws:SourceIp": [
"210.75.12.75/16",
"210.75.24.75/16"
]
,
"Effect": "Allow",
"Principal":
"AWS": "*"
,
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::my-bucket555/*",
"Condition":
"ForAnyValue:IpAddress":
"aws:SourceIp": [
"210.75.12.75/16",
"210.75.24.75/16"
]
]
【讨论】:
1) 我的脚本还能执行 API 操作吗? 2) 为什么是 IP 地址?它们是干什么用的?我不想要它们。 1.您的脚本仍然能够执行 API 调用。 2. IP 地址是另一种选择,因为您说您正在从 VPS 执行 bash 脚本,所以我假设您在 AWS 基础设施之外。 IP 地址条件关闭了从特定 IP 地址到您的存储桶的访问范围。 1) 好的。如何将我的存储桶设为私有? 2)。我可以简单地那样吗?例如,无需创建新用户/组?我想让它尽可能简单 1) 我已经完全删除了问题中显示的当前策略,现在我的脚本也无法访问---->An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied
你的第一个解决方案应该如何工作?以上是关于如何简单地使其对公众保密?无需为我的脚本更改任何内容的主要内容,如果未能解决你的问题,请参考以下文章
我只像管理员一样看到“我的订单”列表,如何使其对所有客户可见?