网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络 ANC
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
态势感知 SA
认证测试中心 CTC
边缘安全 EdgeSec
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts盘古助手
华为云Astro大屏应用
计算
弹性云服务器 ECS
Flexus云服务
裸金属服务器 BMS
云手机服务器 CPH
专属主机 DeH
弹性伸缩 AS
镜像服务 IMS
函数工作流 FunctionGraph
云耀云服务器(旧版)
VR云渲游平台 CVR
Huawei Cloud EulerOS
云化数据中心 CloudDC
网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络 ANC
CDN与智能边缘
内容分发网络 CDN
智能边缘云 IEC
智能边缘平台 IEF
CloudPond云服务
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
态势感知 SA
认证测试中心 CTC
边缘安全 EdgeSec
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
可信智能计算服务 TICS
推荐系统 RES
云搜索服务 CSS
数据可视化 DLV
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
数据治理中心 DataArts Studio
湖仓构建 LakeFormation
智能数据洞察 DataArts Insight
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
开天aPaaS
应用平台 AppStage
开天企业工作台 MSSE
开天集成工作台 MSSI
API中心 API Hub
云消息服务 KooMessage
交换数据空间 EDS
云地图服务 KooMap
云手机服务 KooPhone
组织成员账号 OrgID
云空间服务 KooDrive
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
区块链
区块链服务 BCS
数字资产链 DAC
华为云区块链引擎服务 HBS
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
价格
成本优化最佳实践
专属云商业逻辑
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
其他
管理控制台
消息中心
产品价格详情
系统权限
客户关联华为云合作伙伴须知
公共问题
宽限期保留期
奖励推广计划
活动
云服务信任体系能力说明
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts盘古助手
华为云Astro大屏应用
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
高性能弹性文件服务 SFS Turbo
弹性文件服务 SFS
存储容灾服务 SDRS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
云存储网关 CSG
专属分布式存储服务 DSS
数据工坊 DWR
地图数据 MapDS
键值存储服务 KVS
容器
云容器引擎 CCE
云容器实例 CCI
容器镜像服务 SWR
云原生服务中心 OSC
应用服务网格 ASM
华为云UCS
数据库
云数据库 RDS
数据复制服务 DRS
文档数据库服务 DDS
分布式数据库中间件 DDM
云数据库 GaussDB
云数据库 GeminiDB
数据管理服务 DAS
数据库和应用迁移 UGO
云数据库 TaurusDB
人工智能
AI开发平台ModelArts
华为HiLens
图引擎服务 GES
图像识别 Image
文字识别 OCR
自然语言处理 NLP
内容审核 Moderation
图像搜索 ImageSearch
医疗智能体 EIHealth
企业级AI应用开发专业套件 ModelArts Pro
人脸识别服务 FRS
对话机器人服务 CBS
语音交互服务 SIS
人证核身服务 IVS
视频智能分析服务 VIAS
城市智能体
自动驾驶云服务 Octopus
盘古大模型 PanguLargeModels
IoT物联网
设备接入 IoTDA
全球SIM联接 GSL
IoT数据分析 IoTA
路网数字化服务 DRIS
IoT边缘 IoTEdge
设备发放 IoTDP
企业应用
域名注册服务 Domains
云解析服务 DNS
企业门户 EWP
ICP备案
商标注册
华为云WeLink
华为云会议 Meeting
隐私保护通话 PrivateNumber
语音通话 VoiceCall
消息&短信 MSGSMS
云管理网络
SD-WAN 云服务
边缘数据中心管理 EDCM
云桌面 Workspace
应用与数据集成平台 ROMA Connect
ROMA资产中心 ROMA Exchange
API全生命周期管理 ROMA API
政企自服务管理 ESM
视频
实时音视频 SparkRTC
视频直播 Live
视频点播 VOD
媒体处理 MPC
视频接入服务 VIS
数字内容生产线 MetaStudio
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
迁移中心 MGC
专属云
专属计算集群 DCC
开发者工具
SDK开发指南
API签名指南
DevStar
华为云命令行工具服务 KooCLI
Huawei Cloud Toolkit
CodeArts API
云化转型
云架构中心
云采用框架
用户服务
账号中心
费用中心
成本中心
资源中心
企业管理
工单管理
客户运营能力
国际站常见问题
支持计划
专业服务
合作伙伴支持计划
我的凭证
华为云公共事业服务云平台
工业软件
工业数字模型驱动引擎
硬件开发工具链平台云服务
工业数据转换引擎云服务

桶策略参数说明

更新时间:2024-11-25 GMT+08:00
分享

一个Policy由JSON描述,格式定义为:

{ 
"Statement" : [{
     statement1
  },
  {
     statement2
  },
  ......
 ]
}
实例如下所示:
{ 
"Statement" : [{
     "Sid": "ExampleStatementID1",
     "Principal": "*",
     "Effect": "Allow",   
     "Action": ["ListBucket"],
     "Resource": "examplebucket",
     "Condition": "some conditions"
  },
  {
     "Sid": "ExampleStatementID2",
     "Principal": "*",
     "Effect": "Allow",   
     "Action": ["PutObject"],
     "Resource": "examplebucket",
     "Condition": "some conditions"
  },
......
]
}

Policy由多条statement组成,也可以是一条。每条statement的结构包括下表内容:

表1 statement结构

元素

描述

是否必选

Sid

statement Id,可选关键字,描述statement的字符串。

可选

Principal

可选关键字,被授权人,指定本条statement权限针对的Domain以及User,支持通配符“*”,表示所有用户。当对Domain下所有用户授权时,Principal格式为domain/domainid:user/*当对某个User进行授权时,Principal格式为domain/domainid:user/userId或者domain/domainid:user/userName。

如果通过控制台进行桶清单配置,控制台会自动生成目标桶的桶策略。目标桶的桶策略中Principal取值则固定为{"Service": "obs"}。关于桶清单的详细介绍请参见桶清单说明

可选,Principal与NotPrincipal选其一

NotPrincipal

可选关键字,不被授权人,statement匹配除此之外的其他人。取值同Principal。

可选,NotPrincipal与Principal选其一

Action

可选关键字,指定本条statement作用的操作,Action字段为OBS支持的所有操作集合,以字符串形式表示,不区分大小写。支持通配符“*”,表示该资源能进行的所有操作。例如:"Action":["List*", "Get*"]。

可选,Action与NotAction选其一

NotAction

可选关键字,指定一组操作,statement匹配除该组操作之外的其他操作。 取值同Action。

可选,NotAction与Action选其一

Effect

必选关键字,效力,指定本条statement的权限是允许还是拒绝,Effect的值必须为Allow或者Deny。

必选

Resource

可选关键字,指定statement起作用的一组资源,支持通配符“*”,表示所有资源。

可选,Resource与NotResource选其一

NotResource

可选关键字,指定一组资源,statement匹配除该组资源之外的其他资源。 取值同Resource。

可选,NotResource与Resource选其一

Condition

可选关键字,本条statement生效的条件。

可选

说明:

在单条statement中,Action与NotAction必须二选一,Resource与NotResource必须二选一,Principal与NotPrincipal必须二选一。

Principal / NotPrincipal

OBS支持的Principal或NotPrincipal有所有账号、特定租户、特定用户、联合身份用户,委托用户。

  • 所有人(所有账号)
    "Principal": {"ID": "*"}

    在示例中,使用星号 (*) 作为Everyone/Anonymous的占位符。我们还强烈建议您不要在角色的信任策略中的Principal元素里使用通配符,除非您在该策略中通过Condition元素对访问进行了限制。

  • 特定租户

    当在策略中使用租户标识符作为授权人时,可将策略语句中的权限授给该租户中包含的所有身份。这包括该租户下所有用户。以下示例演示了将租户指定为授权人的不同方法。

    "Principal": { "ID": " domain/domainIdxxxx:user/*" }

    您可以授权给多个租户,如以下示例所示:

    "Principal": { 
      "ID": [
        "domain/domainIDxx1:user/useridxxxx",
        "domain/domainIDxx2:user/*"
      ]
    }
  • 特定用户

    在 Principal 元素中,用户名区分大小写。

    "Principal": {"ID": "domain/domainIDxxx:user/user-name" }
    "Principal": {
      "ID": [
        "domain/domainIDxxx:user/UserID1", 
        "domain/domainIDxxx:user/UserID2"
      ]
    }
  • 联合身份用户 (使用SAML身份提供商)
    "Principal": { "Federated": "domain/domainIDxxx:identity-provider/provider-name" }
    "Principal": { "Federated": "domain/domainIDxxx:group/groupname" }
  • 委托用户
    *表示对应租户下的所有委托
    "Principal": { "ID": "domain/domainIDxxx:agency/agencyname" }
    "Principal": { "ID": "domain/domainIDxxx:agency/*" }

如果通过控制台进行桶清单配置,控制台会自动生成目标桶的桶策略。目标桶的桶策略中Principal为:

"Principal":{"Service": "obs"}

关于桶清单的详细介绍请参见桶清单说明

OBS控制台支持的被授权用户指桶策略作用的用户,这里的用户可以是账号,也可以是IAM用户。被授权用户可以通过排除策略来指定:

(可选项)排除以上被授权用户:桶策略对除指定用户外的其他用户生效。

说明:
  • 不勾选:表示桶策略对指定的用户生效。
  • 勾选:表示桶策略对除指定用户外的其他用户生效。

指定当前账号的子用户

当桶策略的“被授权用户”选择“子用户”时,可以选择配置当前账号下的子用户(即IAM用户),即为当前账号的IAM用户授权桶策略(可多选)。

指定其他账号

当桶策略的“被授权用户”类型设置“其他账号”时,可以设置一个或多个其他账号。如果只想为其他账号下的IAM用户授权,则需再配置IAM用户ID,可以指定多个IAM用户。

说明:

账号ID和IAM用户ID需要由被授权用户使用IAM用户登录至控制台,前往“我的凭证”页面获取。

指定委托账号

当桶策略的“被授权用户”类型设置“委托账号”时,可以设置一个或多个委托账号。创建成功后可以将账号中的资源操作权限委托给其他账号,被委托的账号可以根据权限代替您进行资源运维工作。

说明:

当勾选“其他账号”后才可添加委托账号。

指定任何人(所有账号)

要将桶访问权限授予给任何人,桶策略的“被授权用户”类型设置“所有账号”。

须知:

为所有账号设置桶访问权限需谨慎使用。如果您授予所有账号桶访问权限,则意味着世界上任何人都可以访问您的桶。在一定要使用的情况下,我们建议您在条件中对访问请求进行限制,比如限制只能某一个IP地址的用户可以访问。

Action / NotAction

桶策略动作与资源相关,当资源为当前整个桶时,桶策略动作需配置为桶相关的动作;当资源为桶内对象时,桶策略动作需配置为对象相关的动作。

桶策略动作可以通过排除策略来指定:

(可选项)排除以上授权操作:桶策略对除指定动作外的其他动作生效。

说明:
  • 不勾选:表示桶策略对指定的动作生效。
  • 勾选:表示桶策略对除指定动作外的其他动作生效。
  • 对于桶策略模板,“桶读写”模板默认勾选,其他模板默认不勾选。桶策略模板中的动作排除策略不支持修改。

与桶相关的动作

表2 桶相关动作含义

类型

描述

通用(General)

*

通配符,表示该资源能进行的所有操作。

Get*

表示该资源能进行的所有的获取操作。

Put*

表示该资源能进行的所有的设置操作。

List*

表示该资源能进行的所有的列举操作。

桶(Bucket)

HeadBucket

判断桶是否存在,获取桶元数据。

CreateBucket

创建桶。

DeleteBucket

删除桶。

ListBucket

列举桶内对象,获取桶元数据。

ListBucketVersions

列举桶内多版本对象。

ListBucketMultipartUploads

列举多段上传任务。

GetBucketAcl

获取桶ACL的相关信息。

PutBucketAcl

设置桶ACL。

GetBucketCORS

获取桶CORS配置的相关信息。

PutBucketCORS

设置桶CORS。

GetBucketVersioning

获取桶多版本的相关信息。

PutBucketVersioning

设置多版本。

GetBucketLocation

获取桶位置。

GetBucketLogging

获取桶日志记录的相关信息。

PutBucketLogging

设置桶日志记录。

GetBucketWebsite

获取桶的静态网站配置的相关信息。

PutBucketWebsite

设置桶的静态网站托管。

DeleteBucketWebsite

删除桶的静态网站托管配置。

GetLifecycleConfiguration

获取桶生命周期规则。

PutLifecycleConfiguration

设置桶生命周期规则。

GetBucketInventoryConfiguration

获取桶清单配置。

PutBucketInventoryConfiguration

设置桶清单配置。

DeleteBucketInventoryConfiguration

删除桶清单配置。

PutBucketPolicy

设置桶策略。

说明:

风险操作,请谨慎授权。

拥有此权限的用户可以任意更改桶策略,并可以通过此权限获取其他权限,包括删除桶策略等。

GetBucketPolicy

获取桶策略。

DeleteBucketPolicy

删除桶策略。

PutBucketNotification

设置桶事件通知。

GetBucketNotification

获取桶事件通知。

PutBucketStoragePolicy

设置桶默认存储类别。

GetBucketStoragePolicy

获取桶默认存储类别。

PutReplicationConfiguration

设置桶跨区域复制配置。

GetReplicationConfiguration

获取桶跨区域复制配置。

DeleteReplicationConfiguration

删除桶跨区域复制配置。

PutBucketTagging

设置桶标签。

GetBucketTagging

获取桶标签。

DeleteBucketTagging

删除桶标签。

PutBucketQuota

设置桶配额。

GetBucketQuota

获取桶配额。

PutBucketCustomDomainConfiguration

设置桶自定义域名。

GetBucketCustomDomainConfiguration

获取桶自定义域名。

DeleteBucketCustomDomainConfiguration

删除桶自定义域名。

PutDirectColdAccessConfiguration

设置桶归档数据直读配置。

GetDirectColdAccessConfiguration

获取桶归档数据直读配置。

DeleteDirectColdAccessConfiguration

删除桶归档数据直读配置。

GetEncryptionConfiguration

获取桶默认加密配置。

PutEncryptionConfiguration

设置桶默认加密。

PutBucketObjectLockConfiguration

配置桶级默认保留策略。

GetBucketObjectLockConfiguration

获取桶级默认保留策略。

与对象相关的动作

表3 对象相关动作含义

类型

描述

通用(General)

*

通配符,表示该资源能进行的所有操作。

Get*

表示该资源能进行的所有的获取操作。

Put*

表示该资源能进行的所有的设置操作。

List*

表示该资源能进行的所有的列举操作。

对象(Object)

GetObject

可用作于获取对象内容,获取对象元数据。可作用于GET Object, HEAD Object。

GetObjectVersion

可用作于获取指定版本对象内容,获取指定版本对象元数据。

PutObject

可用作于PUT上传,POST上传,上传段,初始化上传段任务,合并段。可作用于PUT Object, POST Object, Initiate Multipart Upload,Upload Part, Complete Multipart Upload。

GetObjectAcl

获取对象ACL的相关信息。

GetObjectVersionAcl

获取指定版本对象ACL。

PutObjectAcl

设置对象ACL。

PutObjectVersionAcl

设置指定版本对象ACL。

DeleteObject

删除对象。

DeleteObjectVersion

删除对象(针对特定版本的对象)。

ListMultipartUploadParts

列举已上传段。

AbortMultipartUpload

取消多段上传任务。

ModifyObjectMetadata

修改对象元数据。

RestoreObject

恢复归档存储对象。

PutObjectRetention

配置对象保留策略。

PutObjectTagging

设置对象标签。

GetObjectTagging

获取对象标签。

DeleteObjectTagging

删除对象标签。

Resource / NotResource

OBS支持的Resource表示在相应的资源上操作:

  • bucketname(桶操作):在上面Action中有“支持的桶Action”列表,如果要对桶执行列表中的操作,则Resource中只填写桶名。
  • bucketname/objectname(对象操作):在上面Action中有“支持的对象Action”列表,如果要对桶中对象执行相应的操作,则Resource需要填写“bucketname/objectname”。objectname支持通配符,比如对桶下directory目录对象有权限,则Resource填写为“bucketname/directory/*”;如果对桶下所有对象都有权限,则Resource填写为“bucketname/*”;如果同时需要对桶和桶下对象都有权限,则Resource填写为["examplebucket/*","examplebucket"]。

以下示例策略向租户b4bf1b36d9ca43d984fbcb9491b6fce9(域ID)下的用户ID为71f3901173514e6988115ea2c26d1999的user1用户授予examplebucket的所有操作权限(包含桶操作与对象操作)。

{ 
    "Statement":[ 
    { 
      "Sid":"test", 
      "Effect":"Allow", 
      "Principal": {"ID": ["domain/b4bf1b36d9ca43d984fbcb9491b6fce9:user/71f3901173514e6988115ea2c26d1999"]}, 
      "Action":["*"], 
      "Resource":["examplebucket/*","examplebucket"]
    } 
  ] 
}

OBS控制台在指定资源时,资源可以是整个桶(包含桶内对象)、当前整个桶,也可以是指定对象。

授权资源可以通过排除策略来指定:

(可选项)排除以上授权资源:桶策略对除指定资源外的其他资源生效。

说明:
  • 不勾选:表示桶策略对指定的OBS资源生效。
  • 勾选:表示桶策略对除设置外的其他OBS资源生效。

指定资源为整个桶(包含桶内对象)

指定资源为整个桶(包含桶内对象)时,桶策略动作需配置为桶和对象相关的动作,配置方法为“资源范围”选择“整个桶(包含桶内对象)”。

指定资源为桶

指定资源为当前整个桶时,桶策略动作需配置为桶相关的动作,配置方法为“资源范围”选择“当前桶”。

指定资源为对象

指定资源为桶内对象时,桶策略动作需配置为对象相关的动作,配置方法为“资源范围”选择“指定对象”,配置格式如下:

  • 对象:直接输入对象名称(包括文件夹名称)。例如,指定的资源是桶中imgs-folder文件夹下的example.jpg文件,则在资源输入框中输入以下内容。

    imgs-folder/example.jpg

  • 对象集:当指定给对象集时,使用通配符“*”。通配符“*”表示0个或多个字符的任意组合。其输入格式为:
    • 仅使用一个通配符“*”,表示桶中所有对象。
    • 使用“对象名称前缀”+“*”,表示桶中所有以此前缀开头的对象。示例:

      imgs*

    • 使用“*”+“对象名后缀”,表示桶中所有以此后缀结尾的对象。示例:

      *.jpg

Condition

除了指定效力、被授权用户、资源、动作外,桶策略还可以指定生效条件。只有当条件设置的表达式与访问请求中的值匹配时,桶策略才生效。条件是可选参数,用户可以根据业务需要选择是否使用。

例如,账号A拥有example桶,账号B会向账号A的example桶中上传对象,账号A想要拥有账号B向example桶中上传对象的完全控制权限(因为默认情况下对象由上传该对象的账号B拥有),则可以指定上传请求中必须包含x-obs-acl键,以及显式授予完全控制权限,完整的条件表达式如下:

条件运算符

StringEquals

x-obs-acl

bucket-owner-full-control

条件由条件运算符、条件键、条件值三部分组成,最终组成一个条件表达式,决定桶策略生效的条件。同一个条件运算符中,如果存在多个相同的键,则只会保留最后一个键。条件运算符、键两者之间存在互相限制的关联关系,例如:条件运算符选择了一个String类型的,比如StringEquals,键就只能选择String类型的,比如UserAgent。键选择了一个Date类型,比如CurrentTime,条件运算符就只能选择Date类型的,比如DateEquals。

  • 条件运算符

    运算符与条件键、条件值一起构成完整的条件判断语句,当请求信息满足该条件时,策略才能生效。Statement中可选的条件运算符参见表4,String型运算符如未增加说明,不区分大小写。

表4 各条件运算符含义

类型

关键字

说明

String

StringEquals

字符串匹配,简化为:streq

StringNotEquals

字符串不匹配,简化为:strneq

StringEqualsIgnoreCase

忽略大小写的字符串匹配,简化为:streqi

StringNotEqualsIgnoreCase

忽略大小写的字符串不匹配,简化为:strneqi

StringLike

宽松的区分大小写的匹配。这些值可以在字符串中的任何地方包括一个多字符匹配的通配符(*)和单字符匹配通配符(?)。简化为:strl

StringNotLike

非宽松区分大小写的匹配。这些值可以在字符串中的任何地方包括一个多字符匹配的通配符(*)和单字符匹配通配符(?)。简化为:strnl

Numeric

NumericEquals

相等,简化为:numeq

Numeric表示数值类型

NumericNotEquals

不相等,简化为:numneq

NumericLessThan

小于,简化为:numlt

NumericLessThanEquals

小于等于,简化为:numlteq

NumericGreaterThan

大于,简化为:numgt

NumericGreaterThanEquals

大于等于,简化为:numgteq

Date

DateEquals

日期时间相等,简化为:dateeq

DateNotEquals

日期时间不相等,简化为:dateneq

DateLessThan

日期时间小于,简化为:datelt

DateLessThanEquals

日期时间小于等于,简化为:datelteq

DateGreaterThan

日期时间大于,简化为:dategt

DateGreaterThanEquals

日期时间大于等于,简化为:dategteq

Boolean

Bool

严格布尔值相等

IP address

IpAddress

指定的IP或IP范围

NotIpAddress

除指定的IP或IP范围外所有IP

说明:

条件的关键字区分大小写。Date格式符合ISO 8601规范,例如:2015-07-01T12:00:00Z

每个条件可以包含多个key-value的组合。如下图的条件组合表示的判断条件为请求时间从2015-07-01T12:00:00Z到2018-04-16T15:00:00Z,请求的IP地址范围是192.168.176.0/24"或"192.168.143.0/24"网段的请求。

"Condition" : { 
  "DateGreaterThan" : { 
  "CurrentTime" : "2015-07-01T12:00:00Z" 
  }, 
  "DateLessThan": { 
  "CurrentTime" : "2018-04-16T15:00:00Z" 
  }, 
  "IpAddress" : { 
  "SourceIp" : ["192.168.176.0/24","192.168.143.0/24"] 
  } 
}
  • 条件键

条件中可选的键包括以下三种:动作无关的通用键、与桶动作有关的键和与对象动作有关的键。

动作无关的通用键包括:

表5 通用键

类型

描述

CurrentTime

Date

服务器接收请求的时间,格式满足ISO 8601标准。

EpochTime

Numeric

服务器接收请求的时间,格式为1970.01.01 00:00:00 UTC开始所经过的秒数,不考虑闰秒。

SecureTransport

Bool

请求是否使用SSL加密。

说明:

值为非“true”时,服务端会默认修正为“false”。

SourceIp

IP address

请求发起的源IP,即客户端IP。

UserAgent

String

请求的客户端软件代理程序。

Referer

String

请求从哪个链接发起。

SourceVpce

String

请求发起的VPC终端节点ID。

说明:

仅华南-广州、华东-上海一区域支持。

SourceVpc

String

请求发起的VPC ID。

说明:

仅华南-广州、华东-上海一区域支持。

ServiceAgency

String

IAM委托名称,委托云服务访问OBS。

条件中的键需要在一定的Action才能使用,Action和条件中的键配对使用关系如下表所示:

表6 与桶动作有关的键

Action

可选键

描述

说明

ListBucket

prefix

String类型,列举以指定的字符串prefix开头的对象。

配置prefix、delimiter、max-keys后,执行List操作时需要带上符合条件的键值对信息,桶策略才生效。

例如,某桶配置了所有账号可读的桶策略,且条件运算符=NumericEquals,键=max-keys,值=100。则所有账号列举对象时需要在桶访问域名末尾加上?max-keys=100,才能完成对象列举,且列举的对象将是按照字典顺序的前100个对象。

delimiter

String类型,用来分组桶内对象的字符串。

max-keys

Numeric类型,指定返回的最大数,返回的对象列表将是按照字典顺序的最多前max-keys个对象。

ListBucketVersions

prefix

String类型,列举以指定的字符串prefix开头的多版本对象。

delimiter

String类型,用来分组桶内多版本对象的字符串。

max-keys

Numeric类型,指定返回的最大数,返回的对象列表将是按照字典顺序的最多前max-keys个对象。

PutBucketAcl

x-obs-acl

String类型,设置桶ACL。修改桶ACL时在头域中可以包含的Canned ACL,取值范围为private|public-read|public-read-write|bucketowner-read|log-delivery-write。

表7 与对象动作相关的键

Action

可选键

描述

PutObject

x-obs-acl

String类型,设置对象ACL。上传对象时在头域中可以包含的Canned ACL,取值范围为private|public-read|public-read-write|bucketowner-read|bucket-owner-full-control|log-delivery-write。

x-obs-copy-source

String类型,用来指定复制对象时对象操作的源桶名以及源对象名。格式如/bucketname/keyname。

x-obs-metadata-directive

String类型,用来指定新对象的元数据是从元对象中复制,还是用请求中的元数据替换,取值范围为COPY|REPLACE。

x-obs-server-side-encryption

String类型,用来指定桶中对象以SSE-KMS方式加密存储,取值为kms。

PutObjectAcl

x-obs-acl

String类型,设置对象ACL。上传对象时在头域中可以包含的Canned ACL,取值范围为private|public-read|public-read-write|bucketowner-read|bucket-owner-full-control|log-delivery-write。

GetObjectVersion

versionId

String类型,获取versionId为xxx版本的对象。

GetObjectVersionAcl

versionId

String类型,获取versionId为xxx版本的对象ACL。

PutObjectVersionAcl

versionId

String类型,设置versionId。

x-obs-acl

String类型,设置versionId为xxx版本的对象ACL。上传对象时在头域中可以包含的Canned ACL,取值范围为private|public-read|public-read-write|bucketowner-read|bucket-owner-full-control|log-delivery-write。

DeleteObjectVersion

versionId

String类型,删除versionId为xxx版本的对象。

Policy权限判断逻辑

Policy在做权限判断时,每条statement会有3种结果,Explicit Deny、Allow和Default Deny。Bucket Policy对于Policy中的多条statement采用以下规则进行判定:Bucket Policy对Policy中包含的每条statement都要进行Explicit Deny、Allow和Default Deny的判断,最终的判决结果遵循Explicit Deny>Allow>Default Deny的规则;

1.如果没有显式的Deny和Allow,则请求权限判别为Default Deny

2.显式的Deny覆盖Allow;

3.Allow覆盖默认的Default Deny;

4.statement的顺序没有影响。

表8 Statement Result

名称

说明

explicit deny

显式拒绝访问,资源匹配的statement中effect="deny",表明Request无法进行访问,此时直接返回无权限失败。

allow

允许访问,资源匹配的statement中effect="allow",表明Request可以进行访问,继续下一条statement判断。

default deny

默认拒绝访问,在没有任何一条statement与Request匹配上,默认本次Request无法进行访问。

如果ACL和Bucket Policy同时使用, 则ACL对某个租户的授权结果allow,可以被Bucket Policy的显式Deny覆盖。

如果Bucket Policy和IAM Policy同时使用,同样遵循explicit deny>allow>default deny的规则。

SSE-KMS服务端加密对象,不支持Bucket ACL/Policy进行跨租户授权访问。

提示

您即将访问非华为云网站,请注意账号财产安全

文档反馈

文档反馈

意见反馈

0/500

标记内容

同时提交标记内容