文档首页 > > 控制台指南> 权限控制> 权限控制方式介绍> IAM权限

IAM权限

分享
更新时间: 2020/07/14 GMT+08:00

通过IAM,您可以在云账号中创建IAM用户,并使用策略来控制IAM用户对云资源的访问范围。

IAM权限是作用于云资源的,IAM权限定义了允许和拒绝的访问操作,以此实现云资源权限访问控制。

对于OBSIAM权限OBS权限是作用于OBS所有的桶和对象的。如果要授予IAM用户操作OBS资源的权限,则需要向用户所属的用户组授予一个或多个OBS权限集。

IAM权限的OBS权限详情请参见权限管理

IAM权限应用场景

IAM权限主要面向对同账号下IAM用户授权的场景:

  • 使用策略控制账号下整个云资源的权限时,使用IAM权限授权。
  • 使用策略控制账号下OBS所有的桶和对象的权限时,使用IAM权限授权。
  • 使用策略控制账号下OBS指定资源的权限时,使用IAM权限授权。

策略结构&语法

策略结构包括:Version(策略版本号)和Statement(策略权限语句),其中Statement可以有多个,表示不同的授权项。

图1 策略结构

策略语法,示例:

{
	"Version": "1.1",
	"Statement": [
                {
			"Effect": "Allow",
			"Action": [
				"obs:bucket:HeadBucket",
				"obs:bucket:ListBucket",
				"obs:bucket:GetBucketLocation"
			],
			"Resource": [
				"obs:*:*:bucket:*"
			],
			"Condition": {
				"StringEndWithIfExsits": {
					"g:UserName": ["specialCharactor"]
				},
				"Bool": {
					"g:MFAPresent": ["true"]
				}
			}
		}
	]
}
表1 策略语法参数

参数

说明

Version

标识策略的版本号:
  • 1.0:RBAC策略。RBAC策略是将服务作为一个整体进行授权,授权后,用户可以拥有这个服务的所有权限。
  • 1.1:细粒度策略。相比RBAC策略,细粒度策略基于服务的API接口进行权限拆分,授权更加精细,可以精确到具体操作和具体资源。例如:您可以限制子用户只能访问某一个OBS桶中某一个目录下的对象。

Statement

策略授权语句,描述策略的详细信息,包含Effect(作用)、Action(授权项)、Resource(资源)和Condition(条件)。其中Condition为可选。

  • Effect(作用)

    作用包含两种:Allow(允许)和Deny(拒绝),系统预置策略仅包含允许的授权语句,自定义策略中可以同时包含允许和拒绝的授权语句,当策略中既有允许又有拒绝的授权语句时,遵循Deny优先的原则。

  • Action(授权项)

    对资源的具体操作权限,格式为:服务名:资源类型:操作,支持单个或多个操作权限,支持通配符号*,通配符号表示所有。OBS只有两种资源类型:bucket和object。

    详细的Action描述请参见桶相关授权项对象相关授权项

  • Resource(资源)

    策略所作用的资源,格式为:服务名:region:domainId:资源类型:资源路径,支持通配符号*,通配符号表示所有。在JSON视图中,不带Resource表示对所有资源生效。

    Resource支持以下字符:-_0-9a-zA-Z*./\,如果Resource中包含不支持的字符,请采用通配符号*。

    OBS是全局级服务,region填“*”;domainId表示资源拥有者的账号ID,建议填写“*”简单地表示所填资源的账号ID。

    示例:

    • "obs:*:*:bucket:*": 表示所有的OBS桶。
    • "obs:*:*:object:my-bucket/my-object/*": 表示桶my-bucket中“my-object”目录下的所有对象。
  • Condition(条件)

    使策略生效的特定条件,可选。格式为:条件运算符: {条件名:[条件值1, 条件值2]}

    条件包含全局条件名和云服务条件名,OBS支持的条件名与桶策略中的Condition一致,在IAM配置时,需要加上“obs:”。详细的Condition介绍如条件所示。

    Condition的条件值仅支持以下字符:-,./ a-zA-Z0-9_@#$%&,如果条件值中包含不支持的字符,请考虑使用模糊匹配的条件运算符,如:StringLike,StringStartWith等。

    示例:

    • "StringEndWithIfExists":{"g:UserName":["specialCharactor"]}:表示当用户输入的用户名以"specialCharactor"结尾时该条statement生效。
    • "StringLike":{"obs:prefix":["private/"]}:表示在列举桶内对象时,需要指定prefix为private/或者包含private/这一子字符串。
  • Resource(资源)级别细粒度授权特性会逐步在各个区域上线,需要使用该特性时请确保桶所在区域已经支持。
  • 使用Resource(资源)级别细粒度授权特性前,请提交工单到OBS,申请开通Resource(资源)级别细粒度授权特性白名单。

IAM权限鉴权

IAM权限遵循Deny优先的原则。在用户访问资源时,权限检查逻辑如下:

图2 系统鉴权逻辑图

每条策略做评估时,Action之间是或(or)的关系。

  1. 用户访问系统,发起操作请求。
  2. 系统评估用户被授予的访问策略,鉴权开始。
  3. 在用户被授予的访问策略中,系统将优先寻找显式拒绝指令。如找到一个适用的显式拒绝,系统将返回Deny决定。
  4. 如果没有找到显式拒绝指令,系统将寻找适用于请求的任何Allow指令。如果找到一个显式允许指令,系统将返回Allow决定。
  5. 如果找不到显式允许,最终决定为Deny,鉴权结束。
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问