全部產品
Search
文件中心

Resource Management:管控策略語言

更新時間:Jun 30, 2024

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