建立或更新自訂管控策略前,您需要瞭解管控策略的基本元素。管控策略由效果(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的基本相同。更多資訊,請參見權限原則文法和結構。