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/.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)