权限指在某种条件下,允许(Allow) 或拒绝(Deny)对某些资源执行某些操作。

权限的载体是授权策略。自定义权限,即在自定义授权策略时定义某些权限。在RAM控制台,策略管理页面,单击新建授权策略开始创建自定义授权策略。创建自定义授权策略时,请选择模板为空白模板。

授权策略是JSON格式的字符串,需包含以下参数。

参数 说明
Action 表示要授权的操作。物联网络管理平台的操作都以linkwan:开头。定义方式和示例,请参见本文档中Action和Resource的定义。
Effect 表示授权类型,取值:Allow、Deny。
Resource 表示要授权操作的资源。物联网络管理平台的资源都以acs:linkwan:*:*:开头。定义方式和示例,请参见本文档中Action和Resource的定义。
Condition 表示鉴权条件。详细信息,请参见本文档中Condition的定义。

Action是API方法的名称。在创建物联网络管理平台的授权策略时,每个Action前缀均为linkwan:,多个Action以逗号分隔。支持使用星号通配符。

Resource是API方法操作的资源的名称。每个Resource前缀均为acs:linkwan:*:*:,多个Resource以逗号分隔。支持使用星号通配符。

物联网络管理平台API方法名称的定义、对应资源名称的定义请参见物联网络管理平台 API 授权映射表

下面介绍一些典型的策略配置示例。

  • 全部权限
    {
        "Statement": [
            {
                "Action": "linkwan:*",
                "Effect": "Allow",
                "Resource": "*"
            }
        ],
        "Version": "1"
    }
                    
  • 只读权限
    {
        "Statement": [
            {
                "Action": [
                    "linkwan:Get*",
                    "linkwan:Count*",
                    "linkwan:List*",
                    "linkwan:Describe*",
                    "linkwan:Check*"
                ],
                "Effect": "Allow",
                "Resource": [
                    "*"
                ]
            }
        ],
        "Version": "1"
    }
                    
  • 网关管理权限
    {
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "linkwan:CreateGateway",
                    "linkwan:DeleteGateway",
                    "linkwan:UpdateGateway",
                    "linkwan:UpdateGatewayEnablingState",
                    "linkwan:GetGateway",
                    "linkwan:ListGateways",
                    "linkwan:CountGateways",
                    "linkwan:ListGatewaysGisInfo"
                ],
                "Resource": [
                    "acs:linkwan:*:*:gateway/*"
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "linkwan:ListGatewayTransferPackets",
                    "linkwan:GetGatewayTransferPacketsDownloadUrl",
                    "linkwan:ListGatewayTransferFlowStats",
                    "linkwan:ListGatewayOnlineRecords",
                    "linkwan:GetGatewayStatusStat",
                    "linkwan:GetGatewayPacketStat",
                    "linkwan:ListActiveGateways"
                ],
                "Resource": [
                    "acs:linkwan:*:*:gateway/*",
                    "acs:linkwan:*:*:diagram/*"
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "linkwan:GetFreqBandPlanGroup",
                    "linkwan:ListFreqBandPlanGroups"
                ],
                "Resource": [
                    "acs:linkwan:*:*:freq-band-plan/*"
                ]
            }
        ],
        "Version": "1"
    }
                    

Condition的定义

RAM授权策略支持访问IP限制、是否通过HTTPS访问、是否通过MFA(多因素认证)访问、访问时间限制等多种鉴权条件。物联网络管理平台API支持这些条件。

下面列举一些典型的Condition策略配置。

  • 限制单个IP地址和IP网段。例如,只允许IP地址为10.101.168.111或10.101.169.111/24网段的请求访问。

    {
        "Statement": [
            {
                "Action": [
                    "linkwan:Get*",
                    "linkwan:Count*",
                    "linkwan:List*",
                    "linkwan:Describe*",
                    "linkwan:Check*"
                ],
                "Effect": "Allow",
                "Resource": [
                    "*"
                ],
                "Condition": {
                    "IpAddress": {
                        "acs:SourceIp": [
                            "10.101.168.111", 
                            "10.101.169.111/24"
                        ]
                    }
                }
            }
        ], 
        "Version": "1"
    }
                        
  • 限制多个IP地址。例如,只允许IP地址为10.101.168.111和10.101.169.111的请求访问。

    {
        "Statement": [
            {
                "Action": [
                    "linkwan:Get*",
                    "linkwan:Count*",
                    "linkwan:List*",
                    "linkwan:Describe*",
                    "linkwan:Check*"
                ],
                "Effect": "Allow",
                "Resource": [
                    "*"
                ],
                "Condition": {
                    "IpAddress": {
                        "acs:SourceIp": [
                            "10.101.168.111", 
                            "10.101.169.111"
                        ]
                    }
                }
            }
        ], 
        "Version": "1"
    }
                        
  • 限制必须通过HTTPS请求访问。

    {
        "Statement": [
            {
                "Action": [
                    "linkwan:Get*",
                    "linkwan:Count*",
                    "linkwan:List*",
                    "linkwan:Describe*",
                    "linkwan:Check*"
                ],
                "Effect": "Allow",
                "Resource": [
                    "*"
                ],
                "Condition": {
                    "Bool": {
                        "acs:SecureTransport": "true"
                    }
                }
            }
        ], 
        "Version": "1"
    }
                        
  • 限制必须通过MFA请求访问。

    {
        "Statement": [
            {
                "Action": [
                    "linkwan:Get*",
                    "linkwan:Count*",
                    "linkwan:List*",
                    "linkwan:Describe*",
                    "linkwan:Check*"
                ],
                "Effect": "Allow",
                "Resource": [
                    "*"
                ],
                "Condition": {
                    "Bool": {
                        "acs:MFAPresent ": "true"
                    }
                }
            }
        ], 
        "Version": "1"
    }
                        
  • 用户可以在北京时间2019年1月20号凌晨之前访问,之后则不能访问。

    {
        "Statement": [
            {
                "Action": [
                    "linkwan:Get*",
                    "linkwan:Count*",
                    "linkwan:List*",
                    "linkwan:Describe*",
                    "linkwan:Check*"
                ],
                "Effect": "Allow",
                "Resource": [
                    "*"
                ],
                "Condition": {
                    "DateLessThan": {
                        "acs:CurrentTime": "2019-01-20T00:00:00+08:00"
                    }
                }
            }
        ], 
        "Version": "1"
    }
                        

典型使用场景

综上,我们可以利用Action、Resource、Condition来灵活配置授权策略,以下列举两个具体场景。

  • 场景1

    允许用户在2019年1月20日之前从10.101.169.111/24网段通过HTTPS对物联网络管理平台进行只读操作。

    策略配置如下:
    ```json
    {
        "Statement": [
            {
                "Action": [
                    "linkwan:Get*",
                    "linkwan:Count*",
                    "linkwan:List*",
                    "linkwan:Describe*",
                    "linkwan:Check*"
                ],
                "Effect": "Allow",
                "Resource": [
                    "*"
                ],
                "Condition": {
                    "DateLessThan": {
                        "acs:CurrentTime": "2019-01-20T00:00:00+08:00"
                    },
                    "IpAddress": {
                        "acs:SourceIp": [
                            "10.101.169.111/24"
                        ]
                    },
                    "Bool": {
                        "acs:SecureTransport": "true"
                    }
                }
            }
        ],
        "Version": "1"
    }
    ```
                            
  • 场景2

    禁止用户从IP地址10.101.168.111对物联网络管理平台进行读操作。

    策略配置如下:

    ```json
    {
        "Statement": [
            {
                "Action": [
                    "linkwan:Get*",
                    "linkwan:Count*",
                    "linkwan:List*",
                    "linkwan:Describe*",
                    "linkwan:Check*"
                ],
                "Effect": "Deny",
                "Resource": [
                    "*"
                ],
                "Condition": {
                    "IpAddress": {
                        "acs:SourceIp": [
                            "10.101.168.111"
                        ]
                    }
                }
            }
        ],
        "Version": "1"
    }
    ```
                        

授权策略创建成功后,在访问控制RAM控制台,用户管理页面,将此权限授予子账号用户。获得授权的子账号用户就可以进行权限中定义的操作。创建子账号和授权操作帮助,请参见子账号访问