2017-10-13 82 views
0

我已經生成了下面的策略,但它仍然允許所有其他ec2實例訪問我的存儲桶。我應該對這項政策做出什麼改變?我要的是我的鬥是隻能訪問我剛纔提到,而不是任何其他實例將對s3存儲桶的訪問僅限於特定的ec2實例

{ 
    "Id": "Policy1507871740101", 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Sid": "Stmt1507871738318", 
     "Action": "s3:*", 
     "Effect": "Allow", 
     "Resource": "arn:aws:s3:::bucket/*, 
     "Principal": { 
     "AWS":"arn:aws:ec2:region:userid:instance/instanceid" 
     } 
    } 
    ] 
} 
+0

您是在S3中添加存儲桶策略還是將其添加到EC2中的IAM角色? – Ashan

+0

我將此政策添加爲我的存儲桶政策。我是否應該將此添加到IAM角色? (注意:我已將IAM角色附加到實例) –

+1

您無法以這種方式在存儲桶策略中指定實例。 S3無法知道哪個實例正在訪問它。更重要的是,你似乎試圖解決錯誤的問題。具體而言,如果您希望其他實例無法訪問存儲桶,請*不要讓這些其他實例訪問存儲桶。*您已通過其他某種方法爲其授予訪問權限,否則訪問權限將被拒絕。一切都被默認拒絕。 –

回答

0

不能指定實例ID,但你可以在S3策略中指定IP地址的實例。

但是,您還有其他問題。如果您的EC2實例已經可以訪問S3,則可以將該存儲桶公開,或者您已將角色分配給授予權限的實例。首先回顧一下。首先找到你的安全漏洞。

下面是使用IP S3爲例政策涉及到允許或拒絕訪問:

{ 
    "Version": "2012-10-17", 
    "Id": "S3PolicyId1", 
    "Statement": [ 
    { 
     "Sid": "IPAllow", 
     "Effect": "Allow", 
     "Principal": "*", 
     "Action": "s3:*", 
     "Resource": "arn:aws:s3:::examplebucket/*", 
     "Condition": { 
     "IpAddress": {"aws:SourceIp": "54.240.143.0/24"}, 
     "NotIpAddress": {"aws:SourceIp": "54.240.143.188/32"} 
     } 
    } 
    ] 
} 
+0

我們可以只提到一個IP地址(連接到實例 的彈性IP)而不是一系列IP地址? –

+0

是的,您可以指定一個CIDR格式的單個IP地址:54.240.143.188/32 –

0

只是爲了更清楚:如所提到的,你應該:

  • 取下水桶策略
  • 改爲創建EC2角色
  • 將該角色附加到您想要訪問的實例
  • 編輯的角色政策

樣品低於:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "s3:DeleteObject", 
       "s3:GetObject", 
       "s3:PutObject" 
      ], 
      "Resource": "arn:aws:s3:::bucket_name/*" 
     }, 
     { 
      "Effect": "Allow", 
      "Action": "s3:ListBucket", 
      "Resource": "arn:aws:s3:::bucket_name" 
     }, 
     { 
      "Effect": "Allow", 
      "Action": "s3:ListAllMyBuckets", 
      "Resource": "arn:aws:s3:::" 
     } 
    ] 
} 

隨意編輯的第一條語句添加/刪除必要的行動。

+0

感謝您的努力。但通過將他的策略作爲角色附加到ec2實例,我只能將相應的ec2實例限制爲只訪問策略中提到的存儲桶,而不能阻止其他實例訪問的存儲桶。我想要的是我的桶應該只能訪問我想要的實體而不能訪問任何其他實體。有沒有辦法? –

+0

您應該從存儲桶中刪除訪問策略(除非您有其他必要)。對於*這個*任務,反對者根本不需要有任何政策。刪除它,其他實例將無法訪問。這是我列表中的第一步。 – Putnik

相關問題