創建或更新自定義管控策略前,您需要了解管控策略的基本元素。管控策略由效果(Effect)、操作(Action)、資源(Resource)和條件(Condition)等基本元素組成。
元素名稱 | 描述 |
效果(Effect) | 授權效果包括兩種:允許(Allow)和拒絕(Deny)。 |
操作(Action) | 操作是指對具體資源的操作。 |
資源(Resource) | 資源是指被授權的具體對象。 |
條件(Condition) | 條件是指授權生效的條件。 |
效果(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元素的具體說明如下:
邏輯說明
條件滿足:一個條件關鍵字可以指定一個或多個值,在條件檢查時,如果條件關鍵字的值與指定值中的某一個相同(OR),即可判定條件滿足。
條件子句滿足:同一條件操作類型的條件子句下,若有多個條件關鍵字,所有條件關鍵字必須同時滿足(AND),才能判定該條件子句滿足。
條件塊滿足:條件塊下的所有條件子句同時滿足(AND)的情況下,才能判定該條件塊滿足。
條件操作類型
條件操作類型包括:字符串類型(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:CurrentTime
Date and time
Web Server接收到請求的時間。
說明使用UTC時間并按照ISO 8601標準。
例如:北京時間2023年01月10日20點00分00秒,表示為
2023-01-10T20:00:00+08:00
或2023-01-10T12:00:00Z
。acs:SecureTransport
Boolean
發送請求是否使用了安全信道。例如:HTTPS。
acs:SourceIp
IP address
發送請求時的客戶端IP地址。
說明acs:SourceIp
的取值支持具體IP地址和CIDR形式的IP地址段。 禁止將具體IP地址寫成CIDR形式,例如:10.0.0.1不能寫成10.0.0.1/32。acs:MFAPresent
Boolean
用戶登錄時是否使用了多因素認證(MFA)。
說明如果RAM用戶安全設置中的登錄時必須使用MFA為僅異常登錄時使用,那么
acs:MFAPresent
條件就會失效。更多信息,請參見管理RAM用戶安全設置。acs:PrincipalARN
String
請求主體的身份。僅限在資源目錄管控策略和RAM角色信任策略中使用。例如:
acs:ram:*:*:role/*resourcedirectory*
。說明目前,只支持指定RAM角色的ARN,且必須為小寫英文字母。(您可以在RAM控制臺的角色詳情頁面查看RAM角色的ARN)。
acs:PrincipalRDId
String
請求主體所屬云賬號所在的資源目錄ID。僅限在RAM角色信任策略和OSS Bucket Policy中使用。
acs:PrincipalRDPath
String
請求主體所屬云賬號所在的資源目錄中的路徑。僅限在RAM角色信任策略和OSS Bucket Policy中使用。
acs:RequestTag/<tag-key>
String
請求中傳遞的標簽信息。<tag-key>為標簽鍵,請在使用時替換為實際值。支持的云服務及資源類型,請參見支持標簽的云服務中的資源類型鑒權信息。
acs:ResourceTag/<tag-key>
String
請求訪問的資源上綁定的標簽信息。<tag-key>為標簽鍵,請在使用時替換為實際值。支持的云服務及資源類型,請參見支持標簽的云服務中的資源類型鑒權信息。
阿里云服務級別條件關鍵字命名格式:
<ram-code>:<condition-key>
。例如:OSS的條件關鍵字
oss:Delimiter
,用于ListObjects請求時,對Object名字進行分組的字符。各云服務的條件關鍵字,請參見各云服務的授權信息文檔。
條件示例
一條授權語句中的條件是同時滿足(AND)的關系,如果您想設置的條件是或(OR)的關系,您需要將條件分別寫在兩條授權語句中。
示例1:限制只有開啟了MFA且從IP地址203.0.113.2發起訪問的RAM用戶才能訪問ECS實例。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "ecs:*", "Resource": "*", "Condition": { "IpAddress": { "acs:SourceIp": [ "203.0.113.2" ] }, "Bool": { "acs:MFAPresent": [ "true" ] } } } ] }
示例2:限制只有開啟了MFA的RAM用戶或從IP地址203.0.113.2發起訪問的RAM用戶才能訪問ECS實例。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "ecs:*", "Resource": "*", "Condition": { "IpAddress": { "acs:SourceIp": [ "203.0.113.2" ] } } }, { "Effect": "Allow", "Action": "ecs:*", "Resource": "*", "Condition": { "Bool": { "acs:MFAPresent": [ "true" ] } } } ] }
相關文檔
管控策略語法和結構與RAM的基本相同。更多信息,請參見權限策略語法和結構。