Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 如何使用JavaSDK检查用户是否具有S3权限?_Amazon Web Services_Amazon S3_Amazon Iam - Fatal编程技术网

Amazon web services 如何使用JavaSDK检查用户是否具有S3权限?

Amazon web services 如何使用JavaSDK检查用户是否具有S3权限?,amazon-web-services,amazon-s3,amazon-iam,Amazon Web Services,Amazon S3,Amazon Iam,如何确定特定的访问密钥和密钥是否必须允许S3操作?Amazon S3 SDK具有AmazonS3Client,它是S3的网关。它有一些方法可用于探索对S3存储桶和对象的访问权限,但是S3的访问权限基于基于资源的策略(即ACL-访问控制列表),该策略告诉S3哪些用户可以访问存储桶/对象,以及如何访问存储桶/对象以及基于用户的策略,这些策略是授予用户的权限 因此,这意味着,在S3的访问权限管理中没有对密钥对的本机理解。虽然您不能给SDK一个密钥对,并期望它返回一个关于该密钥对是否可以访问资源的真/假

如何确定特定的访问密钥和密钥是否必须允许S3操作?

Amazon S3 SDK具有AmazonS3Client,它是S3的网关。它有一些方法可用于探索对S3存储桶和对象的访问权限,但是S3的访问权限基于基于资源的策略(即ACL-访问控制列表),该策略告诉S3哪些用户可以访问存储桶/对象,以及如何访问存储桶/对象以及基于用户的策略,这些策略是授予用户的权限

因此,这意味着,在S3的访问权限管理中没有对密钥对的本机理解。虽然您不能给SDK一个密钥对,并期望它返回一个关于该密钥对是否可以访问资源的真/假,但我可以想到两个想法

1) 设计应用程序时,不要使用IAM角色(这是在EC2上运行时首选的身份验证方式),应用程序可以使用运行时提供的任何密钥对,因此,应用程序的用户需要向应用程序提供密钥信息,应用程序将进行身份验证,然后尝试访问资源。如果可以,很好,如果没有,它没有许可。根据您的用例,这可能是过度使用。您还需要确保关键信息的安全性。这将是S3客户机所要做的(只需谷歌“S3客户机”,你会发现一些)

2) 与其尝试确定特定密钥是否具有访问对象的权限,不如确定AWS帐户(用户名)是否具有权限。由于访问策略以用户为中心,请让您的应用程序通过IAM角色(同样,如果应用程序在EC2上运行)或具有所有S3读取权限的IAM用户(如果未在EC2上运行)进行身份验证,并轮询用户想要访问的对象,检查与该bucket或对象关联的授权,并相应地通知用户。如果您的应用程序只需检查用户是否拥有对象的权限,而不做任何进一步的操作(例如,提供对象、进行任何更改等),这可能是一种方法

您可能希望探索的一些方法:

public AccessControlList getObjectAcl(String bucketName, String key)
                  throws AmazonClientException, AmazonServiceException

public BucketPolicy getBucketPolicy(GetBucketPolicyRequest getBucketPolicyRequest)
                   throws AmazonClientException, AmazonServiceException

public AccessControlList getBucketAcl(GetBucketAclRequest getBucketAclRequest)
                   throws AmazonClientException, AmazonServiceException
这两个get*Acl方法返回一个AccessControlList,然后您可以使用它来查看分配给该Acl的授权。

use 1.安装aws cli;这里的文档-> 2.使用此命令

AWS_ACCESS_KEY_ID=<your_id> AWS_SECRET_ACCESS_KEY=<your_key> aws s3 cp <your_file> s3://<your_bucket>
AWS\u访问\u密钥\u ID=AWS\u机密\u访问\u密钥=AWS s3 cp s3://
替换为正确的详细信息

cp是Linux/BSD/Macs中的副本。您可能需要在Windows中使用“复制”