2016-09-07 8 views
0

CannedChannelListをPublicReadとしてAmazon s3にアップロードしたファイルはほとんどありません。このファイルには、バケットまたはフォルダ全体ではなく、一般的な読み取り権限があることを覚えておいてください。ユーザーは指定されたURLを使用してそのファイルにアクセスできます。しかし、ここではセキュリティ上の懸念があります。ユーザーは、そのURLを操作して同じフォルダまたは別のフォルダ内の他のファイルにアクセスできます。 ファイルを読み取っているときに、ユーザーがそのURLにアクセスしているときに認証キーを送信する必要があります。どの認証キーを使用する必要があるかをユーザーに知らせるにはどうすればよいですか? 私はIAMユーザーについて読んだことがありますが、それはファイルをアップロードするためのものです。 URLを使用してデータを読み取っている間、認証をしたいだけです。Public read URLのAmazon s3に対するユーザーレベルのアクセス許可

1人の管理者がデータをアップロードしましたが、すべてのユーザーが自分のサーバーにデータを送信しましたが、S3のすべてのユーザーをアップロードするために1人の管理者ユーザーを使用しています。

これは私が管理者用に使用しているポリシーです。

if(isBucketExist(bucketName)){ 
       Statement allowPublicReadStatement = new  Statement(Statement.Effect.Allow) 
         .withPrincipals(Principal.AllUsers) 
         .withActions(S3Actions.GetObject) 
         .withResources(new S3ObjectResource(bucketName, "*")); 
Policy policy = new Policy() 
         .withStatements(allowPublicReadStatement 
                 ); 
amazonS3.setBucketPolicy(bucketName, policy.toJson()); 
      } 

とアップロードデータ

InitiateMultipartUploadRequest(bucketName, folderName).withCannedACL(CannedAccessControlList.PublicRead); 

答えて

1

は、あなたが「S3:GetObject関数」を使ってみましたが、これはCannedChannelListあるIAMポリシーにアクションをして、あなたは「ARNのようなリソースARN指定することができます。AWSを:s3 ::: examplebucket/* "またはユーザーに読み取りアクセスを許可する特定の接頭辞。

IAMポリシーの例は次のようになります:

{ 
"Version": "2012-10-17", 
"Statement": [ 
    { 
     "Sid": "AllowListingOfS3", 
     "Action": [ 
      "s3:ListBucket" 
     ], 
     "Effect": "Allow", 
     "Resource": [ 
      "arn:aws:s3:::bucket-name" 
     ], 
     "Condition": { 
      "StringLike": { 
       "s3:prefix": [ 
        "folder/sub-folder/*" 
       ] 
      } 
     } 
    }, 
    { 
     "Sid": "AllowAllS3ActionsInFolder", 
     "Effect": "Allow", 
     "Action": [ 
      "s3:GetObject" 
     ], 
     "Resource": [ 
      "arn:aws:s3:::bucket-name/folder/sub-folder/*" 
     ] 
    } 
] 
} 
関連する問題