全部產品
Search
文件中心

:使用 RAM 管理 API

更新時間:Jul 13, 2024

API Gateway結合阿里雲存取控制(RAM)來實現企業內多職員分權管理 API。API 提供者可以為員工建立子賬戶,並控制不同職員負責不同的 API 管理。

說明

若您無此業務情境,請跳過此章節。

  • 使用 RAM 可以允許子帳號,查看、建立、管理、刪除 API 分組、API、外掛程式等。但子帳號不是資源的所有者,其操作許可權隨時都可以被主帳號收回。

  • 可以根據文檔,利用標籤鑒權實現主子帳號的資源隔離。

  • 在查看本文前,請確保您已經詳讀了RAM協助手冊和API GatewayAPI 手冊。

第一部分:策略管理

授權策略(Policy),來描述授權的具體內容,授權內容主要包含效力(Effect)、資源(Resource)、對資源所授予的操作許可權(Action)以及限制條件(Condition)這幾個基本元素。

1. 系統授權策略

API Gateway已經預置了兩個系統許可權,AliyunApiGatewayFullAccess和AliyunApiGatewayReadOnlyAccess,可以到 RAM控制台-許可權管理-權限原則 進行查看。 image

  • AliyunApiGatewayFullAccess:管理員權限,擁有主帳號下包含 API 分組、API、流控策略、應用等所有資源的系統管理權限。

  • AliyunApiGatewayReadOnlyAccess:可以查看主帳號下包含 API 分組、API、流控策略、應用等所有資源,但不可以操作。

2. 自訂授權策略

您可以根據需要自訂系統管理權限,支援更為精細化的授權,可以為某個操作,也可以是某個資源。如:API GetUsers 的編輯許可權。可以在RAM控制台-策略管理中選擇策略類型自訂策略,查看已經定義好的自訂授權。

第二部分:授權策略

授權策略是一組許可權的集合,它以一種策略語言來描述。通過給使用者或群組附加授權策略,使用者或群組中的所有使用者就能獲得授權策略中指定的存取權限。

樣本:

{
  "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 Gateway所有操作。

第三部分:Resource(操作對象列表)

Resource 通常指操作對象, API Gateway中的 API 分組、流控策略、應用都被稱為 Resource,書寫格式:

acs:<service-name>:<region>:<account-id>:<relative-id>

其中:

  • acs:Alibaba Cloud Service 的首字母縮寫,表示阿里雲的公用雲端平台。

  • service-name 為:阿里雲產品名稱,請填寫 apigateway。

  • region:地區資訊,可以使用萬用字元*號來代替,*表示所有地區。

  • account-id:帳號 ID,比如123456789012****,也可以用*代替。

  • relative-id:與 API Gateway相關的資源描述部分,這部分的格式描述支援類似於一個檔案路徑的樹狀結構。

格式:

acs:apigateway:$regionid:$accountid:apigroup/$groupId

樣本:

acs:apigateway:*:*:apigroup/cbd157704e624ab58a204fd3e0b5ad79

請結合 API Gateway的API 手冊來查看下錶:

action-name

介面描述

資源(Resource)

CreateApiGroup

建立分組

acs:apigateway:$regionid:$accountid:apigroup/*

ModifyApiGroup

修改分組

acs:apigateway:$regionid:$accountid:apigroup/$groupId

DeleteApiGroup

刪除分組

acs:apigateway:$regionid:$accountid:apigroup/$groupId

DescribeApiGroups

查詢分組列表

acs:apigateway:$regionid:$accountid:apigroup/*

CreateApi

建立API

acs:apigateway:$regionid:$accountid:apigroup/$groupId

DeployApi

發布API

acs:apigateway:$regionid:$accountid:apigroup/$groupId

AbolishApi

下線API

acs:apigateway:$regionid:$accountid:apigroup/$groupId

DeleteApi

刪除API

acs:apigateway:$regionid:$accountid:apigroup/$groupId

DescribeApis

查詢API列表

acs:apigateway:$regionid:$accountid:apigroup/*

CreatePlugin

建立外掛程式

acs:apigateway:$regionid:$accountid:plugin/*

ModifyPlugin

修改外掛程式

acs:apigateway:$regionid:$accountid:plugin/$pluginId

DeletePlugin

刪除外掛程式

acs:apigateway:$regionid:$accountid:plugin/$pluginId

AttachPlugin

將外掛程式綁定到API上

acs:apigateway:$regionid:$accountid:plugin/$pluginId

DetachPlugin

將外掛程式和API解除綁定

acs:apigateway:$regionid:$accountid:plugin/$pluginId

DescribePluginsByApi

查詢API上綁定的外掛程式列表

acs:apigateway:$regionid:$accountid:plugin/$pluginId

CreateApp

建立應用

acs:apigateway:$regionid:$accountid:app/*

ModifyApp

修改應用

acs:apigateway:$regionid:$accountid:app/$appId

DeleteApp

刪除應用

acs:apigateway:$regionid:$accountid:app/$appId

DescribeAppAttributes

查詢應用列表

acs:apigateway:$regionid:$accountid:app/$appId

SetApisAuthorities

給APP授權API存取權限

acs:apigateway:$regionid:$accountid:apigroup/$groupId

DescribeAuthorizedApps

查詢API授權列表

acs:apigateway:$regionid:$accountid:apigroup/$groupId

SetVpcAccess

添加VPC授權

acs:apigateway:$regionid:$accountid:vpcaccess/*

RemoveVpcAccess

刪除VPC授權

acs:apigateway:$regionid:$accountid:vpcaccess/*

DescribeVpcAccesses

查詢VPC授權

acs:apigateway:$regionid:$accountid:vpcaccess/*

DescribeInstances

查詢專享執行個體列表授權

acs:apigateway:$regionid:$accountid:instance/$instanceId

部分情境樣本

授權所有API的查詢操作:

{
          "Version": "1",
          "Statement": [
            {
                      "Action": "apigateway:Describe*",
                      "Resource":"acs:apigateway:$regionid:$accountid:apigroup/*",
                      "Effect": "Allow"
            }
          ]
}                        

授權打了標籤 `version:v1` 的分組查詢操作:

{
	  "Version": "1",
	  "Statement": [
	    {
      		"Action": "apigateway:Describe*",
	      	"Resource":"acs:apigateway:$regionid:$accountid:apigroup/*",
	      	"Effect": "Allow",
                 "Condition": {
                        "StringEquals": {
                             "apigateway:tag/version": "v1"
                        }
                 }
             }
	  ]
}			

授權某個分組下所有API的管理操作:

{
          "Version": "1",
          "Statement": [
            {
                      "Action": "apigateway:*",
                      "Resource": [
                              "acs:apigateway:$regionid:$accountid:apigroup/$groupId",
                              "acs:apigateway:$regionid:$accountid:app/$appId",
                              "acs:apigateway:$regionid:$accountid:vpcaccess/*"
                      ],
                      "Effect": "Allow"
            }
          ]
}

備忘:以上樣本中,變數部分可以根據需要配置成*。