控制調用的訪問 API - Amazon API Gateway

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

控制調用的訪問 API

在本節中,您將瞭解控制API使用權限存取權限的IAM權限模型。我們展示了一個模板IAM政策聲明和政策聲明參考。政策聲明參考包括與API執行服務相關的格式ActionResource字段。使用這些參考來建立您的IAM政策聲明。建立IAM政策聲明時,您可能需要考慮 API Gateway 資源策略對授權工作流程的影響。如需詳細資訊,請參閱API Gateway 資源政策如何影響授權工作流程

對於 privateAPIs,您應該使用API閘道資源策略和VPC端點策略的組合。如需詳細資訊,請參閱下列主題:

控制哪些人可以使用IAM政策呼叫API閘道API方法

若要控制誰可以或不能呼叫API使用IAM權限部署的人員,請建立具有所需權限的IAM原則文件。這類政策文件的範本如下所示。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Permission", "Action": [ "execute-api:Execution-operation" ], "Resource": [ "arn:aws:execute-api:region:account-id:api-id/stage/METHOD_HTTP_VERB/Resource-path" ] } ] }

在這裡,將Permission被替換Allow或取Deny決於您是否要授予或撤銷包含的權限。 Execution-operation將由API執行服務支援的作業取代。 METHOD_HTTP_VERB代表由指定資源支持的HTTP動詞。 Resource-path是支援上述項目的已部署APIResource執行個體URL路徑的預留位置METHOD_HTTP_VERB。如需詳細資訊,請參閱API在API閘道中執行之IAM政策的陳述式參考

注意

若要讓IAM原則生效,您必須透過設定APIAWS_IAM方法的authorizationType內容來啟用方法的IAM驗證。如果不這樣做,將使這些API方法可公開訪問。

例如,若要授予使用者檢視指定寵物清單的權限API,但若要拒絕使用者將寵物新增至清單的權限,您可以在IAM政策中加入下列陳述式:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "execute-api:Invoke" ], "Resource": [ "arn:aws:execute-api:us-east-1:account-id:api-id/*/GET/pets" ] }, { "Effect": "Deny", "Action": [ "execute-api:Invoke" ], "Resource": [ "arn:aws:execute-api:us-east-1:account-id:api-id/*/POST/pets" ] } ] }

若要授予使用者檢視由設定為暴露的特定寵物API的權限GET /pets/{petId},您可以在IAM政策中包含下列陳述式:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "execute-api:Invoke" ], "Resource": [ "arn:aws:execute-api:us-east-1:account-id:api-id/*/GET/pets/a1b2" ] } ] }

API在API閘道中執行之IAM政策的陳述式參考

下列資訊說明執行的存取權限IAM原則陳述式的動作與資源格式API。

API在API閘道中執行的權限動作格式

API-execution Action 表達式具有以下一般格式:

execute-api:action

where action 是一個可用的API執行動作:

  • *,表示下列所有動作。

  • 調用,用於API根據客戶端請求調用。

  • InvalidateCache,用於在客戶端請求時使API緩存失效。

API在API閘道中執行的權限資源格式

API-execution Resource 表達式具有以下一般格式:

arn:aws:execute-api:region:account-id:api-id/stage-name/HTTP-VERB/resource-path-specifier

其中:

  • region 是對應*於方法部署API的 AWS 區 AWS 域 (例如所有區域的us-east-1或所有區域)。

  • account-id 是RESTAPI擁有者的 12 位數 AWS 帳號 ID。

  • api-id 是API閘道為方法指派給API的識別碼。

  • stage-name 是與方法相關聯的階段名稱。

  • HTTP-VERB 是該方法的HTTP動詞。它可以是下列其中一項:GET、POST、PUT、、DELETE、PATCH。

  • resource-path-specifier 是所需方法的路徑。

注意

如果您指定萬用字元 (*),則 Resource 表達式會將萬用字元套用至表達式的其餘部分。

一些範例資源表達式包括:

  • arn:aws:execute-api:*:*:*針對任何階段中的任何資源路徑,適用於任何 AWS 區域API中的任何資源。

  • arn:aws:execute-api:us-east-1:*:*針對任何階段中的任何資源路徑,適用於 AWS 區域API中的任何資源路徑us-east-1

  • arn:aws:execute-api:us-east-1:*:api-id/*對於任何階段中的任何資源路徑,API用於 api-id 在 us-east-1 的 AWS 地區。

  • arn:aws:execute-api:us-east-1:*:api-id/test/*針對階段中的任何資源路徑test,針對API具有識別元 api-id 在 us-east-1 的 AWS 地區。

如需進一步了解,請參閱 API Gateway Amazon Resource Name (ARN) 參考資料