【发布时间】:2016-09-07 12:45:47
【问题描述】:
我在 Amazon s3 上上传了几个文件,CannedChannelList 为 PublicRead。请记住,只有此文件具有公共读取权限,而不是整个存储桶或文件夹。并且用户将能够使用给定的 URL 访问该文件。但这是一个安全问题,即用户可以操纵给定的 URL 来访问相同或不同文件夹中的其他文件。 用户在点击该 URL、读取文件时是否需要发送一些身份验证密钥,以及如何让用户知道他们必须使用哪个身份验证密钥? 我已经阅读了有关 IAM 用户的信息,但那是为了上传文件和所有这些。我只想在使用 URL 读取数据时进行一些身份验证。
数据是由单个管理员用户上传的,但是,所有用户都将数据发送到我的服务器,我正在使用单个管理员用户在 S3 上上传所有这些数据。
这是我为管理员用户使用的策略。
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());
}
这是上传数据时的 CannedChannelList
InitiateMultipartUploadRequest(bucketName, folderName).withCannedACL(CannedAccessControlList.PublicRead);
【问题讨论】:
标签: amazon-web-services amazon-s3 permissions amazon bucket