更新时间:2025-08-18 15:58:39
IAM权限政策(IAM Policy)是身份和访问管理中的一个关键要素,用于定义用户、用户组或者角色对资源的访问权限。其作用是通过一系列权限规则来精细化地控制谁(用户或实体)可以访问哪些资源、可以执行哪些具体操作。IAM政策的核心目的是确保资源的安全,防止未经授权的访问,同时提供灵活的权限管理以满足不同业务需求。通过这样的方式,企业可以有效管理用户权限,遵循最小权限原则,降低潜在的安全风险。它们通常采用JSON格式,详细描述了允许或拒绝的特定操作。例如,一个IAM政策可以允许某个用户组访问特定的存储桶,或者限制其仅能进行读取操作。
权限策略的格式形如:
{
"version": "1",
"statement": [
{
"action": [
"wos:GetBucket"
],
"resource": [
"wsc:wos:*:*:testbucket"
],
"effect": "allow"
},
{
"action": [
"wos:PutObject",
"wos:GetObject",
"wos:DeleteObject"
],
"resource": [
"wsc:wos:*:*:testbucket/*"
],
"effect": "allow"
}
]
}
主帐号可以通过这样的策略在IAM系统中授权给子帐号。在该策略中有一个声明(statement)(一个策略中可以有多个声明)。声明中指定了相应的操作(action)、资源(resource)和效力(effect)。
此策略配置的权限:列出空间testbucket中的所有文件信息;上传文件到testbucket空间;下载testbucket空间中的文件;删除testbucket空间中的文件。
version定义了权限策略的版本,目前支持的版本是“1”。
通过声明来描述授权语义,根据业务场景可以包含多条语义,每条包含操作(action)、效力(effect)和资源(resource)的描述。每次请求时,系统会逐一进行匹配和检查。所有成功匹配的声明会根据效果设置分为允许(allow)和拒绝(deny),其中拒绝优先。如果所有匹配均通过,则请求会被认证;如匹配成功但有禁止项或没有条目成功匹配,请求将被禁止访问。
Action指的是wos提供的S3 API或控制台的操作。操作规则为wos:{action_name},支持 * 通配符,可以用 * 代表0个或多个任意英文字符。例如,wos:List*表示所有wos提供的action_name以List开头的S3 API或控制台操作。
Action是一个列表,可以选择一个或多个操作,所有的action_name必须以"wos:"为前缀。可以有多个操作。
操作分为三类:
1. Service级操作 。与wos:GetService等操作类似。
具体操作与S3 API的对应关系如下:
| S3 API | action |
|---|---|
| GetService | wos:GetService |
具体操作与控制台操作的对应关系如下:
| 控制台操作 | action |
|---|---|
| 存储空间 | |
| 查看 | wos:GetService |
| 存储空间-空间管理-基础数据 / 鉴定统计 / 概览 | |
| 查看 | wos:GetBucketAnalysis |
注意:
- 如果将GetService权限分配给子账号,子账号可以获取其所属主账号拥有的所有空间。(对于子账号创建的空间,其所有者是其主账号)
- 所有使用控制台的子账号必须具备GetService权限,否则控制台上的其他操作可能无法正常使用。
- 如果将GetBucketAnalysis权限分配给子账号,子账号可以查看统计分析下的所有菜单项。
2. Bucket级操作。与wos:PutBucketLifecycle、wos:GetBucket等操作类似。操作对象是Bucket。
具体操作与S3 API的对应关系如下:
| S3 API | action |
|---|---|
| GetBucket(ListObjects) | wos: GetBucket |
| GetBucketLifecycle | wos: GetBucketLifecycle |
| PutBucketLifecycle | wax: PutBucketLifecycle |
| DeleteBucketLifecycle | wos:DeleteBucketLifecycle |
| ListMultipartUploads | wos: ListMultipartUploads |
具体操作与控制台操作的对应关系如下:
| 控制台操作 | action |
|---|---|
| 存储空间 | |
| 新增空间 | wos:PutBucket |
| 存储空间-空间管理-文件管理 | |
| 查询(查看) | wos:GetBucket |
| 存储空间-空间管理-基本设置 | |
| 查看-镜像回源 | wos:GetBucketMirror |
| 编辑-镜像回源 | wos:PutBucketMirror |
| 删除-镜像回源 | wos:DeleteBucketMirror |
| 查看-生命周期设置 | wos:GetBucketLifecycle |
| 创建规则-生命周期设置 | wos:PutBucketLifecycle |
| 编辑-生命周期设置 | wos:PutBucketLifecycle |
| 清空全部规则-生命周期设置 | wos:DeleteBucketLifecycle |
| 删除-生命周期设置 | wos:DeleteBucketLifecycle |
| 创建规则-跨域设置 | wos:PutBucketCors |
| 编辑-跨域设置 | wos:PutBucketCors |
| 查看-跨域设置 | wos:GetBucketCors |
| 删除-跨域设置 | wos:DeleteBucketCors |
| 清除所有规则-跨域设置 | wos:DeleteBucketCors |
| 删除空间 | wos:DeleteBucket |
| 存储空间-空间管理-域名管理 | |
| 查看-域名 | wos:GetBucketDomain |
| 绑定自定义域名 | wos:PutBucketDomain |
| 修改协议 | wos:PutBucketDomain |
| 删除-域名 | wos:DeleteBucketDomain |
3. Object级操作。与wos:GetObject、wos:PutObject、wos:DeleteObject和wos:AbortMultipartUpload等操作类似。操作对象是Object。
具体操作与S3 API的对应关系如下:
| S3 API | action |
|---|---|
| GetObject | wos:GetObject |
| HeadObject | wos:HeadObject |
| PutObject | wos:PutObject |
| PostObject | wos:PutObject |
| InitiateMultipartUpload | wos:PutObject |
| UploadPart | wos:PutObject |
| CompleteMultipartUpload | wos:PutObject |
| DeleteObject | wos:DeleteObject |
| MultiDelete | wos:DeleteObject |
| AbortMultipartUpload | wos:AbortMultipartUpload |
| ListParts | wos:ListParts |
| CopyObject | wos:GetObject,wos:PutObject |
| RestoreObject | wos:RestoreObject |
具体操作与控制台操作的对应关系如下:
| 控制台操作 | action |
|---|---|
| 存储空间-空间管理-文件管理 | |
| 新建文件夹 | wos:PutFolder |
| 上传文件 | wos:PutObject |
| 删除 | wos:DeleteObject |
| 重命名 | wos:PutObject |
| 解冻 | wos:RestoreObject |
| 设置过期时间 | wos:DeleteObject |
资源指的是存储在wos上的资源。资源规则为wsc:wos:{region}:{bucket_owner}:{bucket_name}/{object_name},支持通配符。可以用代表0个或多个任意英文字符。region字段暂不支持,设置为"*".
resource也是一个列表,可以包含一个或多个资源。可以有多个资源。
效力代表本文中声明授权的结果,定义授权结果优先级。分为允许(allow)和拒绝(deny)两类,分别指通过和禁止。当多个声明同时成功匹配时,拒绝优先级更高。
例如,期望禁止用户删除某个目录,但对其他文件拥有全部权限:
{
"version": "1",
"statement": [
{
"effect": "allow",
"action": [
"wos:*"
],
"resource": [
"wsc:wos:*:*:bucketname/*"
]
},
{
"effect": "deny",
"action": [
"wos:DeleteObject"
],
"resource": [
"wsc:wos:*:*:bucketname/test/*"
]
}
]
}