IAM权限简介
如果您需要对您的对象存储(ZOS)资源进行精细的权限管理,您可以使用统一身份认证(Identity and Access Management,简称IAM)服务。IAM是一种基于用户的授权策略。通过设置IAM策略,您可以控制用户访问您名下哪些资源的权限,例如限制您的用户只拥有对某一个桶的读权限等。
如果当前的天翼云账号已经能满足您的要求,您可以跳过本章节,不需要创建独立的IAM用户,不影响您使用ZOS的其它功能。
默认情况下,天翼云主账号拥有对资源的完全控制权限,而主账号创建的IAM用户没有任何权限。主账号将IAM用户加入用户组,并给用户组授予策略或角色之后,IAM用户获得相应的权限,这一过程称为授权。授权后,IAM用户就可以基于被授予的权限对云服务进行操作。
使用场景
以下场景,您可以使用IAM进行权限控制。
- 对同一账号下的不同IAM用户授予相同权限。
- 对所有ZOS资源或者多个桶配置相同权限。
- 配置ZOS服务级别的权限,例如列举某一账号下的所有桶。
约束与限制
- 对象存储IAM权限管理支持的区域请参见产品能力地图。
- 当前仅支持通过JSON视图创建自定义策略。
操作步骤
- 创建用户组和授权
在IAM控制台创建用户组,并授予权限。 - 创建IAM用户和登录
在IAM控制台创建用户,并将其加入上一步创建的用户组。
IAM策略
在向用户组授权时,您需要选择授权策略。授权策略有两种:系统策略和自定义策略。
IAM中为各云服务预置了系统策略,方便您快速完成基础权限配置。ZOS为您预置了zos admin和zos viewer两个系统策略。其中,zos admin拥有对ZOS资源的完全控制权限,zos viewer拥有对ZOS资源的GET和LIST类权限。
如果系统预置的系统权限不满足您的授权要求,您还可以创建自定义策略。
注意由于ZOS为全局级云服务,您在创建自定义策略时,策略的作用范围需要选择全局级。如选择资源池级,策略可能会不生效。
为帮助您创建自定义策略,下面将介绍IAM策略语法和自定义策略中可以添加的ZOS授权项(Action)。
策略语法
策略结构:包括Version(策略版本号)和Statement(策略权限语句)两部分,其中Statement可以有多个,表示不同的授权项。
策略参数:包含Version和Statement两部分,下面介绍策略参数详细说明。了解策略参数后,您可以根据场景自定义策略。
关于策略结构和参数的详细介绍,请参考IAM关于策略语法的介绍。
以下为策略语法的示例,该策略允许对ZOS的所有资源进行GET类操作。
{
"Version": "1.1",
"Statement": [
{
"Action": [
"zos:*:Get"
],
"Effect": "Allow"
}
]
}
授权项(Action)
Action分为Service级别、Bucket级别以及Object级别。
- Service级别
权限 | S3 API | Action |
---|---|---|
列举全部桶 | ListBuckets | zos:AllMyBuckets:List |
创建桶 | CreateBucket | zos:Bucket:Create |
获取AK/SK | 无 | zos:Keys:Get |
资源包管理 | 无 | zos:ResourceBundles:Get |
接入管理(VPC) | 无 | zos:VPC:Get |
用户数据统计 | 无 | zos:UserUsage:Get |
获取桶数据统计 | 无 | zos:BucketUsage:Get |
查询Endpoint | 无 | zos:Endpoint:Get |
- Bucket级别
权限 | S3 API | Action |
---|---|---|
查询桶详情 | 无 | zos:BucketInfo:Get |
删除桶 | DeleteBucket | zos:Bucket:Delete |
删除桶策略 | DeleteBucketPolicy | zos:BucketPolicy:Delete |
删除桶静态网站托管配置 | DeleteBucketWebsite | zos:BucketWebsite:Delete |
删除桶跨域复制规则 | DeleteReplicationConfiguration | zos:ReplicationConfiguration:Delete |
获取桶ACL | GetBucketAcl | zos:BucketAcl:Get |
获取桶CORS配置 | GetBucketCORS | zos:BucketCORS:Get |
获取桶加密配置 | GetBucketEncryption | zos:BucketEncryption:Get |
获取桶日志记录 | GetBucketLogging | zos:BucketLogging:Get |
获取桶事件通知配置 | GetBucketNotification | zos:BucketNotification:Get |
获取桶合规保留策略 | GetBucketObjectLockConfiguration | zos:BucketObjectLockConfiguration:Get |
获取桶策略 | GetBucketPolicy | zos:BucketPolicy:Get |
获取桶标签 | GetBucketTagging | zos:BucketTagging:Get |
获取桶版本状态 | GetBucketVersioning | zos:BucketVersioning:Get |
获取桶静态网站托管配置/数据回源 | GetBucketWebsite | zos:BucketWebsite:Get |
获取桶清单配置 | GetInventoryConfiguration | zos:InventoryConfiguration:Get |
获取桶生命周期规则 | GetLifecycleConfiguration | zos:LifecycleConfiguration:Get |
获取桶跨域复制规则 | GetReplicationConfiguration | zos:ReplicationConfiguration:Get |
设置桶ACL | PutBucketAcl | zos:BucketAcl:Put |
设置桶CORS配置 | PutBucketCORS | zos:BucketCORS:Put |
设置桶加密配置 | PutBucketEncryption | zos:BucketEncryption:Put |
设置桶日志记录 | PutBucketLogging | zos:BucketLogging:Put |
设置桶事件通知配置 | PutBucketNotification | zos:BucketNotification:Put |
设置桶合规保留策略 | PutBucketObjectLockConfiguration | zos:BucketObjectLockConfiguration:Put |
设置桶策略 | PutBucketPolicy | zos:BucketPolicy:Put |
设置桶标签 | PutBucketTagging | zos:BucketTagging:Put |
设置桶多版本 | PutBucketVersioning | zos:BucketVersioning:Put |
设置桶静态网站托管配置 | PutBucketWebsite | zos:BucketWebsite:Put |
设置桶请求者付费配置 | PutBucketRequestPayment | zos:BucketRequestPayment:Put |
设置桶清单配置 | PutInventoryConfiguration | zos:InventoryConfiguration:Put |
设置桶生命周期规则 | PutLifecycleConfiguration | zos:LifecycleConfiguration:Put |
设置桶跨域复制规则 | PutReplicationConfiguration | zos:ReplicationConfiguration:Put |
列举桶内对象 | ListBucket | zos:Bucket:List |
列举桶内多版本对象 | ListBucketVersions | zos:BucketVersions:List |
- Object级别
权限 | S3 API | Action |
---|---|---|
获取对象内容及元数据 | GetObject | zos:Object:Get |
上传对象 | PutObject | zos:Object:Put |
删除对象 | DeleteObject | zos:Object:Delete |
删除对象标签 | DeleteObjectTagging | zos:ObjectTagging:Delete |
删除指定版本对象 | DeleteObjectVersion | zos:ObjectVersion:Delete |
删除指定版本对象标签 | DeleteObjectVersionTagging | zos:ObjectVersionTagging:Delete |
获取对象ACL | GetObjectAcl | zos:ObjectAcl:Get |
设置对象ACL | PutObjectAcl | zos:ObjectAcl:Put |
获取对象依法保留 | GetObjectRetention | zos:ObjectRetention:Get |
设置对象依法保留 | PutObjectRetention | zos:ObjectRetention:Put |
获取指定版本对象内容及元数据 | GetObjectVersion | zos:ObjectVersion:Get |
获取指定版本对象ACL | GetObjectVersionAcl | zos:ObjectVersionAcl:Get |
设置指定版本对象ACL | PutObjectVersionAcl | zos:ObjectVersionAcl:Put |
获取对象标签 | GetObjectTagging | zos:ObjectTagging:Get |
设置对象标签 | PutObjectTagging | zos:ObjectTagging:Put |
获取指定版本对象标签 | GetObjectVersionTagging | zos:ObjectVersionTagging:Get |
设置指定版本对象标签 | PutObjectVersionTagging | zos:ObjectVersionTagging:Put |
列举已上传未合并段 | ListMultipartUploadParts | zos:MultipartUploadParts:List |
取消分段上传任务 | AbortMultipartUpload | zos:MultipartUpload:Abort |
解冻归档存储对象 | RestoreObject | zos:Object:Restore |