网关指南: https://help.aliyun.com/document_detail/29487.html?spm=5176.doc48835.6.550.23Oqbl
网关控制台: https://apigateway.console.aliyun.com/?spm=5176.doc42740.2.2.Q4z5ws#/cn-hangzhou/apis/list
使用RAM管理API
API 网关结合阿里云访问控制(RAM)来实现企业内多职员分权管理 API。API 提供者可以为员工建立子账户,并控制不同职员负责不同的 API 管理。
- 使用 RAM 可以允许子帐号,查看、创建、管理、删除 API 分组、API、授权、流控策略等。但子帐号不是资源的所有者,其操作权限随时都可以被主帐号收回。
- 在查看本文前,请确保您已经祥读了 RAM 帮助手册 和API 网关 API 手册.
- 若您不无此业务场景, 请跳过此章节。
第一部分:策略管理
授权策略(Policy),来描述授权的具体内容,授权内容主要包含效力( Effect )、资源( Resource )、对资源所授予的操作权限( Action )以及限制条件( Condition )这几个基本元素。
系统授权策略
API 网关已经预置了两个系统权限,AliyunApiGatewayFullAccess和AliyunApiGatewayReadOnlyAccess,可以到 RAM 的在 RAM 控制台-策略管理进行查看。
- AliyunApiGatewayFullAccess: 管理员权限,拥有主帐号下包含 API 分组、API、流控策略、应用等所有资源的管理权限。
- AliyunApiGatewayReadOnlyAccess:可以查看主帐号下包含 API 分组、API、流控策略、应用等所有资源,但不可以操作。
自定义授权策略
您可以根据需要自定义管理权限,支持更为精细化的授权,可以为某个操作,也可以是某个资源。如:API GetUsers 的编辑权限。可以在RAM 控制台-策略管理-自定义授权策略查看已经定义好的自定义授权:自定义授权查看、创建、修改、删除方法请参照:授权策略管理。
授权策略内容填写方法请参照:Policy 基本元素和Policy 语法结构和下文的授权策略。
第二部分:授权策略
授权策略是一组权限的集合,它以一种策略语言来描述。通过给用户或群组附加授权策略,用户或群组中的所有用户就能获得授权策略中指定的访问权限。
授权策略内容填写方法请参照:Policy 基本元素和 Policy 语法结构。
示例:
{
"Version": "1",
"Statement": [
{
"Action": "apigateway:Describe*",
"Resource": "*",
"Effect": "Allow"
}
]
}
此示例表示:允许所有的查看操作
Action(操作名称列表)格式为:
"Action":"<service-name>:<action-name>"
其中:
- service-name 为:阿里云产品名称,请填写 apigateway
- action-name 为:API 接口名称,请参照下表, 支持通配符 *
"Action": "apigateway:Describe*" 表示所有的查询操作
" Action": "apigateway:*" 表示 API 网关所有操作
第三部分:Resource(操作对象列表)
Resource 通常指操作对象, API 网关中的 API 分组、流控策略、应用都被称为 Resource,书写格式:
acs:<service-name>:<region>:<account-id>:<relative-id>
其中:
- acs: Alibaba Cloud Service 的首字母缩写,表示阿里云的公有云平台
- service-name 为:阿里云产品名称,请填写 apigateway
- region: 地区信息,可以使用通配符*号来代替,*表示所有区域
- account-id: 账号 ID,比如 1234567890123456,也可以用*代替
- relative-id: 与 API 网关相关的资源描述部分,这部分的格式描述支持类似于一个文件路径的树状结构。
示例:
acs:apigateway:$regionid:$accountid:apigroup/$groupId
书写:
acs:apigateway:*:$accountid:apigroup/
请结合 API 网关的API 手册来查看下表
action-name | 资源( Resource ) |
---|---|
AbolishApi | acs:apigateway:$regionid:$accountid:apigroup/$groupId |
AddTrafficSpecialControl | acs:apigateway:$regionid:$accountid:trafficcontrol/$trafficcontrolid |
CreateApi | acs:apigateway:$regionid:$accountid:apigroup/$groupId |
CreateApiGroup | acs:apigateway:$regionid:$accountid:apigroup/* |
CreateTrafficControl | acs:apigateway:$regionid:$accountid:trafficcontrol/* |
DeleteAllTrafficSpecialControl | acs:apigateway:$regionid:$accountid:trafficcontrol/$trafficcontrolid |
DeleteApi | acs:apigateway:$regionid:$accountid:apigroup/$groupId |
DeleteApiGroup | acs:apigateway:$regionid:$accountid:apigroup/$groupId |
DeleteDomain | acs:apigateway:$regionid:$accountid:apigroup/$groupId |
DeleteDomainCertificate | acs:apigateway:$regionid:$accountid:apigroup/$groupId |
DeleteTrafficControl | acs:apigateway:$regionid:$accountid:trafficcontrol/$trafficcontrolId |
DeleteTrafficSpecialControl | acs:apigateway:$regionid:$accountid:trafficcontrol/$trafficcontrolId |
DeployApi | acs:apigateway:$regionid:$accountid:apigroup/$groupId |
DescribeApi | acs:apigateway:$regionid:$accountid:apigroup/$groupId |
DescribeApiError | acs:apigateway:$regionid:$accountid:apigroup/$groupId |
DescribeApiGroupDetail | acs:apigateway:$regionid:$accountid:apigroup/$groupId |
DescribeApiGroups | acs:apigateway:$regionid:$accountid:apigroup/* |
DescribeApiLatency | acs:apigateway:$regionid:$accountid:apigroup/$groupId |
DescribeApiQps | acs:apigateway:$regionid:$accountid:apigroup/$groupId |
DescribeApiRules | acs:apigateway:$regionid:$accountid:apigroup/$groupId |
DescribeApis | acs:apigateway:$regionid:$accountid:apigroup/$groupId |
DescribeApisByRule | acs:apigateway:$regionid:$accountid:trafficcontrol/$trafficcontrolId oracs:apigateway:$regionid:$accountid:secretkey/$secretKeyId |
DescribeApiTraffic | acs:apigateway:$regionid:$accountid:apigroup/$groupid |
DescribeAppsByApi | acs:apigateway:$regionid:$accountid:apigroup/$groupId |
AddBlackList | acs:apigateway:$regionid:$accountid:blacklist/* |
DescribeBlackLists | acs:apigateway:$regionid:$accountid:blacklist/* |
DescribeDeployedApi | acs:apigateway:$regionid:$accountid:apigroup/$groupId |
DescribeDeployedApis | acs:apigateway:$regionid:$accountid:apigroup/$groupId |
DescribeDomain | acs:apigateway:$regionid:$accountid:apigroup/$groupId |
DescribeDomainResolution | acs:apigateway:$regionid:$accountid:apigroup/$groupId |
DescribeHistoryApi | acs:apigateway:$regionid:$accountid:apigroup/$groupId |
DescribeHistoryApis | acs:apigateway:$regionid:$accountid:apigroup/* |
DescribeRulesByApi | acs:apigateway:$regionid:$accountid:group/$groupId |
DescribeSecretKeys | acs:apigateway:$regionid:$accountid:secretkey/* |
DescribeTrafficControls | acs:apigateway:$regionid:$accountid:trafficcontrol/* |
ModifyApi | acs:apigateway:$regionid:$accountid:apigroup/$groupId |
ModifyApiGroup | acs:apigateway:$regionid:$accountid:apigroup/$groupId |
ModifySecretKey | acs:apigateway:$regionid:$accountid:secretkey/$secretKeyId |
RecoverApiFromHistorical | acs:apigateway:$regionid:$accountid:apigroup/$groupId |
RefreshDomain | acs:apigateway:$regionid:$accountid:apigroup/$groupId |
RemoveAccessPermissionByApis | acs:apigateway:$regionid:$accountid:apigroup/$groupId |
RemoveAccessPermissionByApps | acs:apigateway:$regionid:$accountid:apigroup/$groupId |
RemoveAllBlackList | acs:apigateway:$regionid:$accountid:blacklist/* |
RemoveApiRule | acs:apigateway:$regionid:$accountid:apigroup/$groupId(acs:apigateway:$regionid:$accountid:secretkey/$secretKeyId oracs:apigateway:$regionid:$accountid:trafficcontrol/$trafficcontrolId) |
RemoveAppsFromApi | acs:apigateway:$regionid:$accountid:apigroup/$groupId |
RemoveBlackList | acs:apigateway:$regionid:$accountid:blacklist/$blacklistid |
SetAccessPermissionByApis | acs:apigateway:$regionid:$accountid:apigroup/$groupId |
SetAccessPermissions | acs:apigateway:$regionid:$accountid:apigroup/$groupId |
SetApiRule | acs:apigateway:$regionid:$accountid:apigroup/$groupId(acs:apigateway:$regionid:$accountid:secretkey/$secretKeyId oracs:apigateway:$regionid:$accountid:trafficcontrol/$trafficcontrolId) |
SetDomain | acs:apigateway:$regionid:$accountid:apigroup/$groupId |
SetDomainCertificate | acs:apigateway:$regionid:$accountid:apigroup/$groupId |
SwitchApi | acs:apigateway:$regionid:$accountid:apigroup/$groupId |
CreateSecretKey | acs:apigateway:$regionid:$accountid:secretkey/* |
DeleteSecretKey | acs:apigateway:$regionid:$accountid:secretkey/$secretKeyId |