本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
控制調用的訪問 API
在本節中,您將瞭解控制API使用權限存取權限的IAM權限模型。我們展示了一個模板IAM政策聲明和政策聲明參考。政策聲明參考包括與API執行服務相關的格式Action
和Resource
字段。使用這些參考來建立您的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
決於您是否要授予或撤銷包含的權限。
將由API執行服務支援的作業取代。 Execution-operation
代表由指定資源支持的HTTP動詞。 METHOD_HTTP_VERB
是支援上述項目的已部署APIResource-path
Resource
執行個體URL路徑的預留位置
。如需詳細資訊,請參閱API在API閘道中執行之IAM政策的陳述式參考。METHOD_HTTP_VERB
注意
若要讓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/
,您可以在IAM政策中包含下列陳述式:{petId}
{ "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用於api-id
/*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) 參考資料。