如何简单地使其对公众保密?无需为我的脚本更改任何内容

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 你的第一个解决方案应该如何工作?

以上是关于如何简单地使其对公众保密?无需为我的脚本更改任何内容的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 验证:更改默认错误消息

我只像管理员一样看到“我的订单”列表,如何使其对所有客户可见?

为啥我无法通过使其对缓存友好来加速我的程序?

如何在构建之前使CMake运行python脚本,以便为我的项目生成文件以在构建中使用?

如何制作反应有效的代码(添加内部脚本)

用于在媒体文件夹内为我所有文件生成校验和哈希的powershell脚本