1

我有一個私人s3存儲桶。我試圖通過授權訪問它。我只是通過使用AWS-SDK爲存儲桶中的每個對象生成預先簽署的url來做到這一點,這根本不實用。 另外我已經嘗試配置桶政策,並給予只有特定範圍的IPS,但它不會工作。我怎樣才能看到那裏有什麼問題? 您認爲訪問私有存儲桶的最佳方法是什麼?我有點困惑。訪問s3上的私人文件

policy: 
{ 
    "Version": "2008-10-17", 
    "Id": "S3PolicyId1", 
    "Statement": [ 

     { 
      "Sid": "IPDeny", 
      "Effect": "Deny", 
      "Principal": { 
       "AWS": "*" 
      }, 
      "Action": "s3:*", 
      "Resource": "arn:aws:s3:::bucket/*", 
      "Condition": { 
       "NotIpAddress": { 
        "aws:SourceIp": "public/private IP of ec2 instance/32" 
       } 
      } 
     }, 
     { 
      "Sid": "IPDeny", 
      "Effect": "Deny", 
      "Principal": { 
       "AWS": "*" 
      }, 
      "Action": "s3:*", 
      "Resource": "arn:aws:s3:::bucket/*", 
      "Condition": { 
       "NotIpAddress": { 
        "aws:SourceIp": "myIPAddress/32" 
       } 
      } 
     } 
    ] 
} 
+1

*「我也試過配置桶政策和只給予特定範圍的ips權限,但它不起作用。「*好吧,這樣做**可以工作。如果您向我們展示您嘗試使用的允許IP訪問的政策,可能會有所幫助。 –

回答

6

我認爲默認情況下帳戶被限制訪問S3,除非他們已通過策略授予訪問權限。但是,S3默認設計爲允許任何IP地址訪問。因此,要阻止IP,您必須在策略中明確指定拒絕,而不是允許。

您應該繞過策略,只允許從我的IP地址訪問,拒絕來自任何不是我的IP地址的訪問。

所以我覺得你可能會使用這樣的:

{ 
"Id": "S3PolicyId1", 
"Statement": [ 
    { 
     "Sid": "IPAllow", 
     "Effect": "Allow", 
     "Principal": { 
      "AWS": "*" 
     }, 
     "Action": "s3:*", 
     "Resource": "arn:aws:s3::: bucketname", 
     "Condition": { 
      "IpAddress": { 
       "aws:SourceIp": "CIDR Of Allowed IP" 
      } 
     } 
    } 
] 

你應該試試這個:

{ 
"Id": "S3PolicyId1", 
"Statement": [ 
    { 
     "Sid": "IPDeny", 
     "Effect": "Deny", 
     "Principal": { 
      "AWS": "*" 
     }, 
     "Action": "s3:*", 
     "Resource": "arn:aws:s3::: bucket name*", 
     "Condition": { 
      "NotIpAddress": { 
       "aws:SourceIp": "CIDR Of Allowed IP" 
      } 
     } 
    } 
] 

我希望這有助於

+0

我不知道你怎麼知道什麼是錯的,甚至不知道我做了什麼!謝謝! – Kratos

+0

我現在試圖使用相同的語句訪問3個不同的IP 3次。但是這似乎不允許訪問任何資源。 – Kratos

+0

你可以請顯示密碼 –