2013-07-20 65 views
8

我期待鎖定一個S3桶出於安全目的 - 我將部署映像存儲在存儲桶中。亞馬遜S3桶策略:如何鎖定只訪問您的EC2實例

我想要做的是創建一個存儲桶策略,該存儲桶策略僅支持通過我的帳戶中的EC2實例通過http 進行匿名下載。

有沒有辦法做到這一點?

,我試圖使用策略的一個例子(它不會允許自己被應用):

{ 
    "Statement": [ 
    { 
     "Effect": "Allow", 
     "Principal": { 
     "AWS": "*" 
     }, 
     "Action": "s3:GetObject", 
     "Resource": "arn:aws:s3:::[my bucket name]", 
     "Condition": { 
     "ArnEquals": { 
      "aws:SourceArn": "arn:aws:ec2:us-east-1:[my account id]:instance/*" 
     } 
     } 
    } 
    ] 
} 
+0

爲什麼只有匿名訪問? –

+0

因爲在PowerShell或批處理腳本中實現起來更簡單。我已經通過在請求中使用一個非常長的UserAgent並通過這種方式鎖定它來解決這個問題。 – Doug

+0

你可以請你發佈你如何做到這一點? – David

回答

3

我想弄清楚這是怎麼正常完成。您可以創建IAM策略,將其附加到新角色或現有角色,然後用該角色修飾ec2實例。下面

詳情:

  1. S3桶是默認拒絕除了我的主人。所以你創建你的存儲桶並上傳數據。您可以通過瀏覽器驗證通過嘗試https://s3.amazonaws.com/MyBucketName/file.ext無法訪問這些文件。在xml中應該返回錯誤代碼「Access Denied」。如果您收到「NoSuchBucket」錯誤代碼,則說明您的網址錯誤。

  2. 根據arn:aws:iam :: aws:policy/AmazonS3ReadOnlyAccess創建IAM策略。開始看起來像下面的剪輯。看看「資源」鍵,並注意它被設置爲通配符。您只需修改這是您的桶的阿爾恩,所以行變成例如:「資源」:「阿爾恩:AWS:S3 ::: MyBucketName/*」

  3. 現在你有政策,有什麼你想要做的是用一個IAM角色來修飾你的實例,並自動授予它這個策略。所有沒有任何驗證密鑰必須在實例中。因此,轉到角色,創建新角色,創建Amazon EC2角色,查找剛創建的策略以及角色已準備就緒。

  4. 最後,您將創建您的實例並添加您剛剛創建的IAM角色。如果機器已經有了自己的角色,那麼只需將兩個角色合併爲一個新機器即可。如果機器已經在運行,在重新啓動之前它不會獲得新的角色。

  5. 現在你應該很好去。該機器有權訪問s3共享。現在您可以使用以下命令將文件複製到您的實例。請注意,您必須指定區域

    AWS S3 CP --region美國東1 S3://MyBucketName/MyFileName.tgz /家庭/ Ubuntu的

請注意,該短語「默默無聞的安全」只是電影中的一件事。要麼是證明是安全的,要麼是不安全的。