AWS s3访问权限

AWS s3访问权限

1.1基础策略字段

通过json来控制S3桶的访问权限,以下示例策略用于访问存储桶。该策略允许用户仅对 MY-BUCKET 执行 s3:ListBucket、s3:PutObject 和 s3:GetObject 操作:

(下面我将对下面策略的字段进行解释)

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "s3:ListBucket"
         ],
         "Resource":"arn:aws:s3:::MY-BUCKET"
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:PutObject",
            "s3:GetObject"
         ],
         "Resource":"arn:aws:s3:::MY-BUCKET/*"
      }
   ]
}
  • Version 策略版本号(一般为时间戳)
  • Statement 策略的声明(列表的形式,里面定义了访问策略对象)
  • Effect 策略的效果(权限的拒绝或者允许,Deny,Allow)
  • Action 操作(定义操作,可以为字符串数组,也可以是字符串,如果为"s3:*" ,那么为全部操作)
  • Resource 策略附加到的资源(可以为字符串数组,也可以是字符串,AWS中每个资源都有对应的arn)

其他例子

{
    "Version":"2012-10-17",
    "Statement": [
        {
            "Sid":"GrantAnonymousReadPermissions",
            "Effect":"Allow",
            "Principal": "*",
            "Action":["s3:GetObject"],
            "Resource":["arn:aws:s3:::awsexamplebucket1/*"]
        }
    ]
}
  • Sid 策略的ID标识(一般为描述信息)
  • Principal 用于指定被允许或拒绝访问资源的用户、账户、服务或其他实体(“Principal”:"*"匿名访问,及授予每个人权限)
1.2 S3的条件键Condition
{ 
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "statement1",
      "Effect": "Allow",
      "Action": "s3:PutObject",
      "Resource": [
        "arn:aws:s3:::awsexamplebucket1/*"
      ],
      "Condition": {
        "StringEquals": {
          "s3:x-amz-acl": "public-read"
        }
      }
    }
  ]
}
  • Condition 指定策略生效时的条件

可以指定以下这些条件,如:

指定IP访问范围

"Condition" : {
    "IpAddress" : {
    	"aws:SourceIp": "192.0.2.0/24" 
    },
    "NotIpAddress" : {
    	"aws:SourceIp": "192.0.2.188/32" 
    } 
} 

要求用户上传对象时需具有特定访问权限

"Condition": {
        "StringEquals": {
          "s3:x-amz-grant-full-control": "id=AccountA-CanonicalUserID"
        }
}

更多条件字段请查阅官方文档:https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/dev/list_amazons3.html.

2.将亚马逊 AWS S3 存储桶的访问权限到一个特定 IAM 角色

其中111111111111为账户号,ROLENAME为角色名。

//使用Principal指定111111111111账户中的ROLENAME
//拥有对MyExampleBucket桶的ListBucket权限
{
    "Effect": "Allow",
    "Principal": {
    	"AWS": "arn:aws:iam::111111111111:role/ROLENAME"
    },
    "Action": "s3:ListBucket",
    "Resource": "arn:aws:s3:::MyExampleBucket"
}



//通过Condition指定角色
{
	"Effect": "Deny",
	"Principal": "*",
	"Action": "s3:*",
	"Resource": [
	"arn:aws:s3:::MyExampleBucket",
	"arn:aws:s3:::MyExampleBucket/*"
	],
	"Condition": {
		"StringNotLike": {
			"aws:userId": [
			"AROAEXAMPLEID:*",
			"111111111111"
			]
		}
	}
}


//通过Principal给role/ROLENAME和user/USERNAME权限
{
    "Effect": "Allow",
    "Principal": [
        {
            "AWS": [
                "arn:aws:iam::222222222222:role/ROLENAME",
                "arn:aws:iam::222222222222:user/USERNAME"
            ]
        }
    ],
    "Action": "s3:ListBucket",
    "Resource": "arn:aws:s3:::MyExampleBucket"
}

演练:使用用户策略控制对存储桶的访问的官方文档------------
https://aws.amazon.com/cn/blogs/china/securityhow-to-restrict-amazon-s3-bucket-access-to-a-specific-iam-role/.

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值