2013-07-20 28 views
8

セキュリティ目的でS3バケットをロックダウンしようとしています。私はバケットにデプロイメントイメージを保存しています。Amazon 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」というエラーコードが表示された場合、あなたはそのURLを間違っています。

  2. arn:aws:iam :: aws:policy/AmazonS3ReadOnlyAccessに基づいてIAMポリシーを作成します。下のスナップショットのように見えます。 "Resource"キーを見て、それがワイルドカードに設定されていることに注意してください。何を、今あなたがポリシーを持っていることを

  3. 「リソース」:「S3 ::: MyBucketName/* ARN:AWS」あなただけの行が元になって、これは、あなたのバケツのARNする修正しますこのポリシーを自動的に付与するIAMロールでインスタンスを飾ることです。すべての認証キーをインスタンスに含める必要はありません。したがって、役割に行き、新しい役割を作成し、Amazon EC2の役割を作って、今作成したポリシーを見つけ、あなたの役割は準備が整いました。

  4. 最後に、インスタンスを作成し、作成したばかりのIAMロールを追加します。マシンにすでに独自の役割がある場合は、2つの役割をマシンの新しい役割にマージするだけです。マシンがすでに実行されている場合は、再起動するまで新しいロールを取得しません。

  5. これでいいですね。マシンはs3共有にアクセスする権利を持っています。これで、次のコマンドを使用してファイルをインスタンスにコピーできます。

//MyBucketName/MyFileName.tgz /ホーム/ Ubuntuの注意:あなたが

AWS S3 CP --regionたち-東-1領域を指定するS3を持っています「暗黙のセキュリティ」という用語は、映画の中の単なるものです。何かが証明されているか、安全でないかのどちらかです。

関連する問題