RAM中使用权限策略描述授权的具体内容,权限策略由效果(Effect)、操作(Action)、资源(Resource)、条件(Condition)和授权主体(Principal)等基本元素组成。
|
元素名称 |
描述 |
|
效果(Effect) |
授权效果包括两种:允许(Allow)和拒绝(Deny)。 |
|
操作(Action) |
操作是指对具体资源的操作。 |
|
资源(Resource) |
资源是指被授权的具体对象。 |
|
条件(Condition) |
条件是指授权生效的条件。 |
|
授权主体(Principal) |
授权主体是指允许或拒绝访问资源的主体,仅适用于基于资源的策略。例如:RAM角色的信任策略。 |
效果(Effect)
Effect元素用于指定授权的效果是允许或拒绝,是必选元素。Effect元素的取值:Allow和Deny。
当权限策略中既有Allow又有Deny时,遵循Deny优先原则。
示例如下:
"Effect": "Allow"
操作(Action)
Action元素用于描述允许或拒绝的特定操作,是必选元素。Action元素的取值:云服务所定义的API操作名称。
Action元素的格式为
<ram-code>:<action-name>
。
-
ram-code:云服务的RAM代码。更多信息,请参见 支持RAM的云服务 的 RAM代码 列。 -
action-name:相关的API操作接口名称。
Action元素的值在大部分情况下不区分大小写,但为了保持业务行为的一致性,请按照云服务提供的鉴权文档使用准确的操作前缀
<ram-code>
和操作名称
<action-name>
。
示例如下:
"Action": [
"oss:ListBuckets",
"ecs:Describe*",
"rds:Describe*"
]
资源(Resource)
Resource元素用于描述被授权的一个或多个对象,适用于基于身份的策略,是必选元素。Resource元素的取值:云服务所定义的资源ARN(Aliyun Resource Name)。
Resource元素的格式为
acs:<ram-code>:<region>:<account-id>:<relative-id>
,请按照云服务提供的鉴权文档使用准确的资源ARN。格式说明如下:
-
acs:Alibaba Cloud Service的首字母缩写,表示阿里云的公共云平台。 -
ram-code:云服务RAM代码。更多信息,请参见 支持RAM的云服务 的 RAM代码 列。 -
region:地域信息。对于全局资源(无需指定地域就可以访问的资源),该字段用星号(*)表示。 更多信息,请参见 地域和可用区 。 -
account-id:阿里云账号ID。例如:123456789012****。 -
relative-id:与服务相关的资源描述部分,其语义由具体云服务指定。这部分的格式支持树状结构(类似文件路径)。以OSS为例,表示一个OSS对象的格式为:relative-id = “mybucket/dir1/object1.jpg”。
示例如下:
"Resource": [
"acs:ecs:*:*:instance/inst-001",
"acs:ecs:*:*:instance/inst-002",
"acs:oss:*:*:mybucket",
"acs:oss:*:*:mybucket/*"
]
条件(Condition)
Condition元素用于指定授权生效的限制条件,是可选元素。Condition元素也称为条件块(Condition Block),它是由一个或多个条件子句构成。一个条件子句由条件操作类型、条件关键字和条件值组成。
因为Condition元素为可选元素,所以系统不会强制校验Condition元素的存在性。如要使用Condition元素指定授权生效的限制条件,请使用正确的拼写并注意区分大小写。
条件关键字的 名称(key) 严格区分大小写, 条件值(value) 是否区分大小写取决于您使用的条件运算符。例如:针对字符串类型的条件关键字,如果使用StringEquals运算符,则会将策略内容中的值和请求中的值进行匹配,区分大小写。如果使用StringEqualsIgnoreCase运算符,则会将策略内容中的值和请求中的值进行匹配,忽略大小写。
Condition元素的具体说明如下:
-
逻辑说明
-
条件满足:一个条件关键字可以指定一个或多个值,在条件检查时,如果条件关键字的值与指定值中的某一个相同,即可判定条件满足。
-
条件子句满足:同一条件操作类型的条件子句下,若有多个条件关键字,所有条件关键字必须同时满足,才能判定该条件子句满足。
-
条件块满足:条件块下的所有条件子句同时满足的情况下,才能判定该条件块满足。
-
-
条件操作类型
条件操作类型包括:字符串类型(String)、数字类型(Number)、日期类型(Date and time)、布尔类型(Boolean)和IP地址类型(IP address)。
条件操作类型
支持类型
字符串类型(String)
-
StringEquals
-
StringNotEquals
-
StringEqualsIgnoreCase
-
StringNotEqualsIgnoreCase
-
StringLike
-
StringNotLike
数字类型(Number)
-
NumericEquals
-
NumericNotEquals
-
NumericLessThan
-
NumericLessThanEquals
-
NumericGreaterThan
-
NumericGreaterThanEquals
日期类型(Date and time)
-
DateEquals
-
DateNotEquals
-
DateLessThan
-
DateLessThanEquals
-
DateGreaterThan
-
DateGreaterThanEquals
布尔类型(Boolean)
Bool
IP地址类型(IP address)
-
IpAddress
-
NotIpAddress
-
-
条件关键字
-
阿里云通用条件关键字命名格式:
acs:<condition-key>。通用条件关键字
类型
描述
acs:CurrentTimeDate and time
Web Server接收到请求的时间。以ISO 8601格式表示,例如:
2012-11-11T23:59:59Z。acs:SecureTransportBoolean
发送请求是否使用了安全信道。例如:HTTPS。
acs:SourceIpIP address
发送请求时的客户端IP地址。
说明acs:SourceIp的取值支持具体IP地址和CIDR形式的IP地址段。 禁止将具体IP地址写成CIDR形式,例如:10.0.0.1不能写成10.0.0.1/32。acs:MFAPresentBoolean
用户登录时是否使用了多因素认证(MFA)。
说明如果RAM用户安全设置中的 登录时必须使用MFA 为 仅异常登录时使用 ,那么
acs:MFAPresent条件就会失效。更多信息,请参见 管理RAM用户安全设置 。acs:PrincipalARNString
请求主体的身份。仅限在资源目录管控策略和RAM角色信任策略中使用。例如:
acs:ram:*:*:role/*resourcedirectory*。说明目前,只支持指定RAM角色的ARN,且必须为小写英文字母。(您可以在RAM控制台的角色详情页面查看RAM角色的ARN)。
acs:PrincipalRDIdString
请求主体所属云账号所在的资源目录ID。仅限在RAM角色信任策略和OSS Bucket Policy中使用。
acs:PrincipalRDPathString
请求主体所属云账号所在的资源目录中的路径。仅限在RAM角色信任策略和OSS Bucket Policy中使用。
acs:RequestTag/<tag-key>String
请求中传递的标签信息。<tag-key>为标签键,请在使用时替换为实际值。支持的云服务及资源类型,请参见 支持标签的云服务 中的 资源类型鉴权 信息。
acs:ResourceTag/<tag-key>String
请求访问的资源上绑定的标签信息。<tag-key>为标签键,请在使用时替换为实际值。支持的云服务及资源类型,请参见 支持标签的云服务 中的 资源类型鉴权 信息。
-
阿里云服务级别条件关键字命名格式:
<ram-code>:<condition-key>。服务级别条件关键字
云服务名称
类型
描述
rds:ResourceTag/<tag-key>RDS
String
RDS资源的标签关键字。<tag-key>为标签键,请在使用时替换为实际值。
oss:DelimiterOSS
String
OSS对Object名字进行分组的分隔符。
oss:PrefixOSS
String
OSS Object名称的前缀。
-
授权主体(Principal)
Principal元素用于指定允许或拒绝访问资源的主体,仅适用于基于资源的策略。例如:在RAM角色的信任策略中,使用Principal元素指定允许扮演该角色的对象。在基于资源的策略中,Principal元素是必选元素。
基于身份的策略中无法使用Principal元素。基于身份的策略是授予给RAM身份(RAM用户、用户组或RAM角色)的权限策略,被授予的RAM身份即为授权主体。
Principal元素中可以添加多种主体类型,也可以对每个主体类型指定多个主体。多种主体类型间使用半角逗号(,)分隔,同一主体类型包含多值时,使用方括号([ ])并用半角逗号(,)分隔。多个主体间是 或 的关系,即策略中的所有主体都是被授权的对象。
授权主体示例:
"Principal": {
"RAM": [
"acs:ram::123456789012****:root",
"acs:ram::987654321098****:root"
"Service": "ecs.aliyuncs.com"
}
授权主体是经过身份验证的RAM实体,包含以下几种类型:
-
阿里云账号
您可以在Principal元素中设置授权主体为阿里云账号,这意味着为该阿里云账号下的RAM用户和RAM角色授权。在指定阿里云账号时,您需要使用阿里云账号ARN(
acs:ram::<account-id>:root)。示例如下:"Principal": { "RAM": "acs:ram::123456789012****:root" }说明Principal元素中使用的阿里云账号ARN不包含该账号的主账号身份。
-
RAM用户
您可以在Principal元素中设置授权主体为RAM用户,您需要指定RAM用户的ARN(
acs:ram::<account-id>:user/<user-name>),<user-name>需要与RAM用户的名称保持一致。示例如下:"Principal": { "RAM": [ "acs:ram::123456789012****:user/<user1-name>", "acs:ram::123456789012****:user/<user2-name>" }当在Principal元素中指定RAM用户时,不能使用通配符星号(*)进行部分匹配,需要明确指明该RAM用户。
重要在RAM角色信任策略中,如果Principal元素中包含指定RAM用户的ARN,则在保存信任策略时系统会将此ARN转换为ID(例如:29695932303672****)。您通常不会感知这个ID,只有当该RAM用户被删除时,才会在信任策略中展示该ID。此时,您可以删除该ID或者修改为正确的RAM用户ARN。该方案将有助于降低安全风险,同时,您在创建或更新信任策略时,无需关注
<user-name>大小写,系统会自动帮您转化为标准的ARN。 -
RAM角色
您可以在Principal元素中设置授权主体为RAM角色,您需要指定RAM角色的ARN(
acs:ram::<account-id>:role/<role-name>)。<role-name>需要与RAM角色的名称保持一致。示例如下:"Principal": { "RAM": [ "acs:ram::123456789012****:role/<role-name>" }当在Principal元素中指定RAM角色时,不能使用通配符星号(*)进行部分匹配,需要明确指明该RAM角色。
重要在RAM角色信任策略中,如果Principal元素中包含指定RAM角色的ARN,则在保存信任策略时系统会将此ARN转换为ID(例如:38915594982675****)。您通常不会感知这个ID,只有当该RAM角色被删除时,才会在信任策略中展示该ID。此时,您可以删除该ID或者修改为正确的RAM角色ARN。该方案将有助于降低安全风险,同时,您在创建或更新信任策略时,无需关注
<role-name>大小写,系统会自动帮您转化为标准的ARN。 -
阿里云服务
您可以在Principal元素中设置授权主体为阿里云服务,您需要指定阿里云服务对应的服务名称。服务名称是云服务的标识,通常采用的格式为(
<service-name>.aliyuncs.com)。<service-name>的取值请参见云服务提供的完整服务名称。示例如下:"Principal": { "Service": [ "ecs.aliyuncs.com" } -
身份提供商
您可以在Principal元素中设置授权主体为身份提供商,您需要指定身份提供商的ARN。阿里云支持基于SAML 2.0和OIDC的SSO(Single Sign On,单点登录)。使用SAML协议的SSO需要创建SAML身份提供商,对应的ARN为
acs:ram::<account-id>:saml-provider/<provider-name>。使用OIDC协议的SSO需要创建OIDC身份提供商,对应的ARN为acs:ram::<account-id>:oidc-provider/<provider-name>。Principal元素中,ARN的值区分大小写, 请使用系统提供的身份提供商的标准ARN信息。"Principal": { "Federated": [ "acs:ram::123456789012****:saml-provider/<provider-name>" }