云网牛站
所在位置:首页 > Linux云服务器 > 创建AWS S3上载和列出对象策略而不执行删除操作

创建AWS S3上载和列出对象策略而不执行删除操作

2019-02-21 11:26:14作者:叶云稿源:云网牛站

我们将了解在Amazon S3中使用用户权限,将在具有特定权限的AWS账户上创建一个存储bucket和AWS Identity and Access Management用户,我的用例是让IAM用户只能将文件上传到AWS S3存储bucket,而无需删除对象。

 

创建一个Test bucket

使用带s3选项的aws命令创建存储bucket:

$ aws s3 mb s3://backupsonly

make_bucket: backupsonly

 

创建IAM用户

以下create-user命令在当前帐户中创建名为uploadonly的IAM用户:

$ aws iam create-user --user-name uploadonly

输出:

{

"User": {

"Path": "/",

"UserName": "uploadonly",

"UserId": "AIDAJII2GMOH3OAFWCIGK",

"Arn": "arn:aws:iam::104530196855:user/uploadonly",

"CreateDate": "2019-02-21T10:51:23.600Z"

}

}

 

创建AWS用户和策略

接下来,我们需要创建一个与创建的AWS用户帐户关联的策略。

这是我们将用于策略的json文件:

$ cat aws-s3-policy.json

{

"Version": "2019-02-21",

"Statement": [

{

"Effect": "Allow",

"Action": [

"s3:Get*",

"s3:List*",

"s3:Put*"

],

"Resource": "*"

}

]

}

我们指定了以下:

列出所有bucket内容。

获取S3上所有存储bucket的列表。

将文件上传到S3 buckets。

以下命令创建名为upload-only-policy的用户管理策略:

$ aws iam create-policy --policy-name upload-only-policy \

--policy-document file://aws-s3-policy.json

你应该得到如下输出:

{

"Policy": {

"PolicyName": "upload-only-policy",

"PolicyId": "ANPAZYBH8BTU6NFCTTR46",

"Arn": "arn:aws:iam::104530196855:policy/upload-only-policy",

"Path": "/",

"DefaultVersionId": "v1",

"AttachmentCount": 0,

"IsAttachable": true,

"CreateDate": "2019-02-21T10:58:13.013Z",

"UpdateDate": "2019-02-21T10:58:13.013Z"

}

}

使用的策略是当前文件夹中的JSON文档,该文档授予对所有Amazon S3 buckets的读/写访问权限。

还可以通过更改资源部分将其限制为特定存储bucket,例:

"Resource": [

"arn:aws:s3:::bucket-name/*"

]

或者到存储bucket内的特定文件夹:

"Resource": [

"arn:aws:s3:::bucket-name/folder1/*"

]

也可以从AWS IAM Web界面执行相同操作:

创建AWS S3上载和列出对象策略而不执行删除操作

 

将AWS策略分配给IAM用户

以下attach-user-policy命令将名为upload-only-policy的AWS托管策略附加到名为uploadonly的IAM用户:

$ aws iam attach-user-policy --policy-arn \

arn:aws:iam::104530196855:policy/upload-only-policy --user-name uploadonly

此命令没有输出。

现在可以为要测试的IAM用户创建访问密钥:

$ aws iam create-access-key --user-name uploadonly

将秘密访问密钥存储在安全位置,如果丢失,则无法恢复,你必须创建新的访问密钥。

从UI转到IAM>用户>添加权限>直接附加现有策略。

 

配置AWS CLI并测试

参考:在Linux系统上安装和使用AWS CLI的方法

$ sudo pip install awscli

$ aws configure

提供:AWS访问密钥ID及AWS秘密访问密钥。

测试文件上传:

$ aws s3 cp test-demo.yml s3://backupsonly/

upload: ./test-demo.yml to s3://backupsonly/test-demo.yml

尝试删除:

$ aws s3 rm s3://backupsonly/test-demo.yml

你应该收到一条错误消息,如下:

delete failed: s3://backupsonly/test-demo.yml An error occurred (AccessDenied)

when calling the DeleteObject operation: Access Denied

如果你遇到错误消息,即为不执行删除操作。

 

相关主题

使用AWS-CLI将文件备份到Scaleway对象存储的方法

精选文章
热门文章