我已經在Amazon S3上用CannedChannelList作爲PublicRead上傳了幾個文件。請記住,只有該文件具有公共讀取權限,而不是整個存儲桶或文件夾。用戶將能夠使用給定的URL訪問該文件。但是這裏有一個安全問題,用戶可以操縱給定的URL來訪問相同或不同文件夾中的其他文件。 有沒有什麼方法可以讓用戶在點擊該URL時發送一些驗證密鑰,同時閱讀該文件,以及如何讓用戶知道他們必須使用哪個驗證密鑰? 我已閱讀關於IAM用戶,但是這是爲了上傳文件和所有。我只想在使用URL讀取數據時進行一些身份驗證。Amazon S3上的用戶級別權限公開閱讀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);