全部產品
Search
文件中心

:自訂許可權

更新時間:Jun 30, 2024

您可以建立自訂權限原則,實現精微調權限管理。

背景資訊

許可權指在特定條件下 ,允許(Allow)或拒絕(Deny)對指定資源執行的相關操作。許可權的載體是授權策略。自訂許可權,即在自訂授權策略時定義某些許可權。

建立自訂權限原則方式,請參見建立方式。本文介紹通過指令碼編輯模式建立自訂權限原則的操作步驟。

操作步驟

  1. 使用Resource Access Management員登入RAM控制台

  2. 在左側導覽列,選擇許可權管理 > 權限原則

  3. 權限原則頁面,單擊建立權限原則

  4. 建立權限原則頁面,單擊指令碼編輯頁簽。

  5. 輸入權限原則內容,然後單擊繼續編輯基本資料

    關於權限原則文法結構的詳情,請參見權限原則文法和結構

    權限原則中包含參數如下:

    • Action:表示要授權的操作。IoT操作都以iot:開頭。定義方式和樣本,請參見本文檔中Action定義。

    • Effect : 表示授與類型,取值:Allow(允許)、Deny(拒絕)。

    • Resource :表示要授權的資源。

      如果為RAM使用者授予訪問您的所有物聯網平台資源的許可權,取值為*

    • Condition :表示鑒權條件,請參見本文檔中Condition定義。

    關於權限原則元素的詳情,請參見權限原則基本元素

  6. 輸入權限原則名稱備忘

  7. 檢查並最佳化權限原則內容。

    • 基礎權限原則最佳化

      系統會對您添加的權限原則語句自動進行基礎最佳化。基礎權限原則最佳化會完成以下任務:

      • 刪除不必要的條件。

      • 刪除不必要的數組。

    • 可選:進階權限原則最佳化

      您可以將滑鼠懸浮在可選:進階策略最佳化上,單擊執行,對權限原則內容進行進階最佳化。進階權限原則最佳化功能會完成以下任務:

      • 拆分不相容操作的資源或條件。

      • 收縮資源到更小範圍。

      • 去重或合并語句。

  8. 單擊確定

Action 定義

Action是API的名稱。在建立IoT授權策略時,每個Action首碼均為iot:,多個Action以英文逗號(,)分隔,支援使用星號(*)萬用字元。IoT API名稱定義,請參見IoT授權映射表

下面介紹一些典型的Action定義樣本。

  • 定義單個API。

    "Action": "iot:CreateProduct"
  • 定義多個API。

    "Action": [
    "iot:UpdateProduct",
    "iot:QueryProduct"
    ]
  • 定義所有隻讀API,包含規則引擎資料流轉目標產品的許可權。

    {
      "Version": "1", 
      "Statement": [
        {
          "Action": [
            "iot:Query*", 
            "iot:List*", 
            "iot:Get*", 
            "iot:BatchGet*", 
            "iot:Check*"
          ], 
          "Resource": "*", 
          "Effect": "Allow"
        }, 
        {
          "Action": [
            "rds:DescribeDBInstances", 
            "rds:DescribeDatabases", 
            "rds:DescribeAccounts", 
            "rds:DescribeDBInstanceNetInfo"
          ], 
          "Resource": "*", 
          "Effect": "Allow"
        }, 
        {
          "Action": "ram:ListRoles", 
          "Resource": "*", 
          "Effect": "Allow"
        }, 
        {
          "Action": [
            "mns:ListTopic", 
            "mns:GetTopicRef"
          ], 
          "Resource": "*", 
          "Effect": "Allow"
        }, 
        {
          "Action": [
            "ots:ListInstance", 
            "ots:GetInstance", 
            "ots:ListTable", 
            "ots:DescribeTable"
          ], 
          "Resource": "*", 
          "Effect": "Allow"
        }, 
        {
          "Action": [
            "fc:ListServices", 
            "fc:GetService", 
            "fc:GetFunction", 
            "fc:ListFunctions"
          ], 
          "Resource": "*", 
          "Effect": "Allow"
        }, 
        {
          "Action": [
            "log:ListShards", 
            "log:ListLogStores", 
            "log:ListProject"
          ], 
          "Resource": "*", 
          "Effect": "Allow"
        }, 
        {
          "Action": [
            "cms:QueryMetricList"
          ], 
          "Resource": "*", 
          "Effect": "Allow"
        }
      ]
    }
  • 定義所有讀寫API,包含規則引擎資料流轉目標產品的許可權。

    {
      "Version": "1", 
      "Statement": [
        {
          "Action": "iot:*", 
          "Resource": "*", 
          "Effect": "Allow"
        }, 
        {
          "Action": [
            "rds:DescribeDBInstances", 
            "rds:DescribeDatabases", 
            "rds:DescribeAccounts", 
            "rds:DescribeDBInstanceNetInfo", 
            "rds:ModifySecurityIps"
          ], 
          "Resource": "*", 
          "Effect": "Allow"
        }, 
        {
          "Action": "ram:ListRoles", 
          "Resource": "*", 
          "Effect": "Allow"
        }, 
        {
          "Action": [
            "mns:ListTopic", 
            "mns:GetTopicRef"
          ], 
          "Resource": "*", 
          "Effect": "Allow"
        }, 
        {
          "Action": [
            "ots:ListInstance", 
            "ots:ListTable", 
            "ots:DescribeTable", 
            "ots:GetInstance"
          ], 
          "Resource": "*", 
          "Effect": "Allow"
        }, 
        {
          "Action": [
            "fc:ListServices", 
            "fc:GetService", 
            "fc:GetFunction", 
            "fc:ListFunctions"
          ], 
          "Resource": "*", 
          "Effect": "Allow"
        }, 
        {
          "Action": [
            "log:ListShards", 
            "log:ListLogStores", 
            "log:ListProject"
          ], 
          "Resource": "*", 
          "Effect": "Allow"
        }, 
        {
          "Action": "ram:PassRole", 
          "Resource": "*", 
          "Effect": "Allow", 
          "Condition": {
            "StringEquals": {
              "acs:Service": "iot.aliyuncs.com"
            }
          }
        }, 
        {
          "Action": [
            "cms:QueryMetricList"
          ], 
          "Resource": "*", 
          "Effect": "Allow"
        }
      ]
    }

Condition定義

目前RAM使用者授權策略支援訪問IP限制、是否通過HTTPS訪問、是否通過MFA(多因素認證)訪問、訪問時間限制等多種鑒權條件。物聯網平台的所有API均支援上述條件。

  • 訪問IP限制。

    存取控制可以限制訪問IoT的源IP地址,並且支援根據網段進行過濾。以下是典型的使用情境樣本。

    • 限制單個IP地址和IP網段。例如,只允許IP地址為192.0.2.1或198.51.100.0/24網段的請求訪問。

      {
        "Statement": [
          {
            "Effect": "Allow", 
            "Action": "iot:*", 
            "Resource": "*", 
            "Condition": {
              "IpAddress": {
                "acs:SourceIp": [
                  "192.0.2.1", 
                  "198.51.100.0/24"
                ]
              }
            }
          }
        ], 
        "Version": "1"
      }
    • 限制多個IP地址。例如,只允許IP地址為192.0.2.1和198.51.100.1的請求訪問。

      {
        "Statement": [
          {
            "Effect": "Allow", 
            "Action": "iot:*", 
            "Resource": "*", 
            "Condition": {
              "IpAddress": {
                "acs:SourceIp": [
                  "192.0.2.1", 
                  "198.51.100.1"
                ]
              }
            }
          }
        ], 
        "Version": "1"
      }
  • HTTPS訪問限制。

    存取控制可以限制是否通過HTTPS訪問。

    樣本:限制必須通過HTTPS請求訪問。

    {
      "Statement": [
        {
          "Effect": "Allow", 
          "Action": "iot:*", 
          "Resource": "*", 
          "Condition": {
            "Bool": {
              "acs:SecureTransport": "true"
            }
          }
        }
      ], 
      "Version": "1"
    }
  • MFA訪問限制。

    存取控制可以限制是否通過MFA(多因素認證)訪問。MFA訪問適用於控制台登入,使用API訪問無需MFA碼。

    樣本:限制必須通過MFA請求訪問。

    {
      "Statement": [
        {
          "Effect": "Allow", 
          "Action": "iot:*", 
          "Resource": "*", 
          "Condition": {
            "Bool": {
              "acs:MFAPresent ": "true"
            }
          }
        }
      ], 
      "Version": "1"
    }
  • 訪問時間限制。

    存取控制可以限制請求的訪問時間,即只允許或拒絕在某個時間點範圍之前的請求。

    樣本:使用者可以在北京時間2019年01月01日淩晨之前訪問,之後則不能訪問。

    {
      "Statement": [
        {
          "Effect": "Allow", 
          "Action": "iot:*", 
          "Resource": "*", 
          "Condition": {
            "DateLessThan": {
              "acs:CurrentTime": "2019-01-01T00:00:00+08:00"
            }
          }
        }
      ], 
      "Version": "1"
    }

典型使用情境

結合以上對Action、Resource和Condition的定義,下面介紹一些典型使用情境的授權策略定義和授權方法。

  • 允許訪問的授權策略樣本。

    情境:定義訪問IP地址為192.0.2.1/24網段的使用者訪問IoT的許可權,且要求只能在2019-01-01 00:00:00之前訪問和通過HTTPS訪問。

    {
      "Statement": [
        {
          "Effect": "Allow", 
          "Action": "iot:*", 
          "Resource": "*", 
          "Condition": {
            "IpAddress": {
              "acs:SourceIp": [
                "192.0.2.1/24"
              ]
            }, 
            "DateLessThan": {
              "acs:CurrentTime": "2019-01-01T00:00:00+08:00"
            }, 
            "Bool": {
              "acs:SecureTransport": "true"
            }
          }
        }
      ], 
      "Version": "1"
    }
  • 拒絕訪問的授權策略樣本。

    情境:拒絕訪問IP地址為198.51.100.1的使用者對IoT執行讀操作。

    {
      "Statement": [
        {
          "Effect": "Deny", 
          "Action": [
            "iot:Query*", 
            "iot:List*", 
            "iot:Get*", 
            "iot:BatchGet*"
          ], 
          "Resource": "*", 
          "Condition": {
            "IpAddress": {
              "acs:SourceIp": [
                "198.51.100.1"
              ]
            }
          }
        }
      ], 
      "Version": "1"
    }

授權策略建立成功後,將此許可權授予RAM使用者,獲得授權的RAM使用者就可以進行許可權中定義的操作。建立RAM使用者和授權操作,請參見RAM使用者訪問