Java 限制对amazon s3 bucket的读取访问,仅限于特定的一个客户端或有限的列出的客户端

Java 限制对amazon s3 bucket的读取访问,仅限于特定的一个客户端或有限的列出的客户端,java,amazon-web-services,security,amazon-s3,aws-sdk,Java,Amazon Web Services,Security,Amazon S3,Aws Sdk,我的客户机有一个S3存储桶,他们在其中写入了一些文件,并共享了accessKey和secretKey,我可以从cyberduck S3 UI客户机访问这些文件,但我需要自动执行读取文件的过程,因此我使用aws-S3 sdkJAR编写了Java代码来访问该存储桶,但访问被拒绝例外情况,已与客户讨论授予权限,以便我们可以对bucket进行只读访问,但他们说我们仅限制对cyberduck UI客户的访问。我做了一些研究和开发,发现对s3存储桶的访问可以限制在特定的http引用者身上,但不确定是否可以限

我的客户机有一个S3存储桶,他们在其中写入了一些文件,并共享了accessKey和secretKey,我可以从cyberduck S3 UI客户机访问这些文件,但我需要自动执行读取文件的过程,因此我使用aws-S3 sdkJAR编写了Java代码来访问该存储桶,但访问被拒绝例外情况,已与客户讨论授予权限,以便我们可以对bucket进行只读访问,但他们说我们仅限制对cyberduck UI客户的访问。我做了一些研究和开发,发现对s3存储桶的访问可以限制在特定的http引用者身上,但不确定是否可以限制在cyberduck类型的UI客户端或任何特定的受限客户端上。还可以启用s3 bucket上允许的操作,我正在使用listObjects()getObject()(根据我的客户端启用)。我想我的客户对他们所做的事情不是很确定。因此,我试图从Dragon Disk s3 UI客户端访问它,但遇到了相同的访问被拒绝异常。我正试图通过我的白名单IP地址访问

异常堆栈跟踪为:-

com.amazonaws.services.s3.model.amazons3异常:拒绝访问(服务:Amazon s3;状态代码:403;错误代码:AccessDenied;请求ID:96924E9AF7DDBA9E),s3扩展请求ID:ARS0Z2JHKV8TWHYHLV9K0WYJ/MyUMWCRWCDGK2FRJTSEAGTV6//brhfofGQr/UBIOCMgA= 在com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1586) 在com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1254) 在com.amazonaws.http.AmazonHttpClient$RequestExecutor.executehelp(AmazonHttpClient.java:1035) 在com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:747) 在com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:721) 位于com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:704) 在com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:672) 在com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:654) 在com.amazonaws.http.AmazonHttpClient.execute上(AmazonHttpClient.java:518) 位于com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4137) 位于com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4079) 位于com.amazonaws.services.s3.AmazonS3Client.listObjects(AmazonS3Client.java:819) 位于com.amazonaws.services.s3.AmazonS3Client.listObjects(AmazonS3Client.java:791)


如果有人可以对此发表评论或分享一些东西,如果有可能限制对一个客户端的访问,或者如何实现这一点,我将非常有帮助,这样我就可以知道我的客户端可能设置了什么bucket策略,这样我就可以要求他以这种方式启用权限

你有解决这个问题的办法吗?我陷入了类似的困境issues@user123475我想出来了,但不一样。我上面提到的在S3安全桶策略中是不可能的。您可以限制来自某个IP地址的读、写访问,或者如果您想限制或允许特定的客户端,那么您还可以提到HttpReferrer值。