本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
控制對 Lambda 函數 URL 的存取
注意
從 2025 年 10 月開始,新的函數 URLs 將需要 lambda:InvokeFunctionUrl和 lambda:InvokeFunction許可。
您可以使用 AuthType 參數搭配連接至特定函數的資源型政策,來控制對 Lambda 函數 URLs 的存取。這兩個元件的組態能決定誰可以對函數 URL 呼叫或執行其他管理動作。
AuthType 參數決定 Lambda 如何對函數 URL 的請求執行身分驗證或授權。設定函數 URL 時,您必須指定以下任一 AuthType 選項:
-
AWS_IAM– Lambda 使用 AWS Identity and Access Management (IAM) 根據 IAM 主體的身分政策和函數的資源型政策來驗證和授權請求。如果您只想要已驗證的使用者和角色使用函數 URL 叫用函數,請選擇此選項。
-
NONE– Lambda 不會在呼叫函數前執行任何身分驗證。然而,函數的資源型政策永遠有效,而且您必須授予公有存取權,您的函數 URL 才能接收請求。選擇此選項,即可允許使用者公開存取函數 URL,而且不必完成身分驗證。
如需安全性的其他洞見,您可以使用 AWS Identity and Access Management Access Analyzer 來取得對函數 URL 的外部存取的完整分析。IAM Access Analyzer 也能監控您 Lambda 函數新增或更新的許可,以協助您識別授予公有和跨帳戶存取權的許可。您可以使用 IAM Access Analyzer 免費。若要開始使用 IAM Access Analyzer,請參閱使用 AWS IAM Access Analyzer。
此頁面包含兩種身分驗證類型的資源型政策範例,以及如何使用 AddPermission API 操作或 Lambda 主控台建立這些政策。如需有關如何在設定許可後叫用函數 URL 的資訊,請參閱 呼叫 Lambda 函數 URL。
使用 AWS_IAM 驗證類型
如果您選擇身分驗證類型,需要叫用 Lambda AWS_IAM 函數 URL 的使用者必須擁有 lambda:InvokeFunctionUrl和 lambda:InvokeFunction許可。視提出調用請求的人員而定,您可能必須使用以資源為基礎的政策授予此許可。
如果提出請求的委託人與函數 URL AWS 帳戶 位於相同位置,則委託人必須在其身分型政策中具有 lambda:InvokeFunctionUrl和 lambda:InvokeFunction 許可,或在函數的資源型政策中將許可授予他們。換言之,如果使用者在其身分型政策中已有 lambda:InvokeFunctionUrl和 lambda:InvokeFunction許可,則資源型政策為選用。政策評估遵循政策評估邏輯中概述的規則。
如果提出請求的委託人位於不同的 帳戶中,則委託人必須同時擁有以身分為基礎的政策,在他們嘗試叫用之函數的資源型政策中授予他們lambda:InvokeFunctionUrl和lambda:InvokeFunction許可。政策評估遵循判斷是否允許跨帳戶請求中概述的規則。
下列資源型政策允許 中example AWS 帳戶 444455556666的角色叫用與函數 相關聯的函數 URLmy-function。lambda:InvokedViaFunctionUrl 內容金鑰會將lambda:InvokeFunction動作限制為函數 URL 呼叫。這表示委託人必須使用函數 URL 來叫用函數。如果您不包含 lambda:InvokedViaFunctionUrl,則主體除了函數 URL 之外,還可以透過其他叫用方法叫用函數。
範例 — 跨帳戶資源型政策
您可以使用下列步驟,透過 主控台建立此資源型政策:
將 URL 呼叫許可授予其他帳戶 (主控台)
-
開啟 Lambda 主控台中的函數頁面
。 -
選擇您要授予 URL 呼叫許可的函數名稱。
-
依序選擇 Configuration (組態) 索引標籤和 Permissions (許可)。
-
在 Resource-based policy (資源型政策) 底下,選擇 Add permissions (新增許可)。
-
選擇 Function URL (函數 URL)。
-
針對 Auth type (驗證類型) 選擇 AW_IAM。
-
輸入政策陳述式的陳述式 ID。
-
針對委託人,輸入您要授予許可的使用者或角色的帳戶 ID 或 Amazon Resource Name (ARN)。例如:
444455556666。 -
選擇儲存。
或者,您可以使用下列 add-permissionlambda:InvokeFunctionUrl和 lambda:InvokeFunction陳述式。例如:
aws lambda add-permission --function-name my-function \ --statement-id UrlPolicyInvokeURL \ --actionlambda:InvokeFunctionUrl\ --principal 444455556666 \ --function-url-auth-type AWS_IAM
aws lambda add-permission --function-name my-function \ --statement-id UrlPolicyInvokeFunction \ --actionlambda:InvokeFunction\ --principal 444455556666 \ --invoked-via-function-url
使用 NONE 驗證類型
重要
當您的函數 URL 身分驗證類型為 NONE且您具有授予公有存取權的資源型政策時,任何具有函數 URL 的未驗證使用者都可以叫用您的函數。
在某些情況下,您可能希望您的函數 URL 公開。例如,您可能希望為直接透過 Web 瀏覽器提出的請求提供服務。如要允許使用者公開存取您的函數 URL,請選擇 NONE 驗證類型。
如果您選擇 NONE 驗證類型,Lambda 就不會使用 IAM 對存取函數 URL 的請求執行身分驗證。不過,您的函數必須具有允許 lambda:InvokeFunctionUrl和 的資源型政策lambda:InvokeFunction。當您NONE使用主控台或 AWS Serverless Application Model (AWS SAM) 建立具有身分驗證類型的函數 URL 時,Lambda 會自動為您建立以資源為基礎的政策。如果您直接使用 AWS CloudFormation AWS CLI或 Lambda API,則必須自行新增政策。
建議您在使用 身分驗證類型時,在資源型政策中包含 lambda:InvokedViaFunctionUrl NONE 內容金鑰。此內容索引鍵可確保函式只能透過函式 URL 叫用,而不能透過其他叫用方法叫用。
請注意下列有關此政策的事項:
-
所有實體都可以呼叫
lambda:InvokeFunctionUrl和lambda:InvokeFunction。這表示擁有您的函數 URL 的任何人都可以叫用您的函數。 -
lambda:FunctionUrlAuthType條件索引鍵值為NONE。這表示只有在函數 URL 的身分驗證類型也是 時,政策陳述式才允許存取NONE。 -
lambda:InvokedViaFunctionUrl條件可確保函式只能透過函式 URL 叫用,而不能透過其他叫用方法叫用。
範例 — NONE 驗證類型的預設資源型政策
使用 建立資源型政策 AWS CLI
除非您使用 主控台或 AWS SAM 建立身分驗證類型為 的函數 URLNONE,否則您必須自行新增資源型政策。使用下列命令來建立 lambda:InvokeFunctionUrl和 lambda:InvokeFunction許可的陳述式。每個陳述式都必須在個別命令中新增。
aws lambda add-permission \ --function-name UrlTestFunction \ --statement-id UrlPolicyInvokeURL \ --actionlambda:InvokeFunctionUrl\ --principal * \ --function-url-auth-type NONE
aws lambda add-permission \ --function-name UrlTestFunction \ --statement-id UrlPolicyInvokeFunction \ --actionlambda:InvokeFunction\ --principal * \ --invoked-via-function-url
注意
如果您刪除具有驗證類型 NONE 的函數 URL,Lambda 不會自動刪除關聯的資源型政策。如果您想要刪除此政策,則必須手動執行。
如果函數的資源型政策未授予 lambda:invokeFunctionUrl和 lambda:InvokeFunction許可,使用者在嘗試叫用函數 URL 時會收到 403 禁止錯誤代碼。即使函數 URL NONE 使用身分驗證類型,也會發生這種情況。
控管和存取權控制
除了函數 URL 呼叫許可之外,您也可以控制函數 URL 設定動作的存取權。Lambda 支援以下適用於函數 URL 的 IAM 政策動作:
-
lambda:InvokeFunctionUrl– 使用函數 URL 呼叫 Lambda 函數。 -
lambda:CreateFunctionUrlConfig– 建立函數 URL 並設定其AuthType。 -
lambda:UpdateFunctionUrlConfig– 更新函數 URL 組態及其AuthType。 -
lambda:GetFunctionUrlConfig– 檢視函數 URL 的詳細資訊。 -
lambda:ListFunctionUrlConfigs– 列出函數 URL 組態。 -
lambda:DeleteFunctionUrlConfig– 刪除函數 URL。
若要允許或拒絕其他 AWS 實體的函數 URL 存取,請在 IAM 政策中包含這些動作。例如,下列政策授予 example角色 AWS 帳戶 更新my-function帳戶 中函數的函數 URL 的444455556666許可123456789012。
範例 跨帳戶函數 URL 政策
條件索引鍵
如需精細控制函數 URLs存取控制,請使用條件內容索引鍵。Lambda 支援函數 URLs下列內容索引鍵:
-
lambda:FunctionUrlAuthType– 定義描述函數 URL 使用的身分驗證類型的列舉值。此值可以是AWS_IAM或NONE。 -
lambda:InvokedViaFunctionUrl– 將lambda:InvokeFunction動作限制為透過函數 URL 進行的呼叫。這可確保只能使用函數 URL 叫用函數,而不是透過其他叫用方法叫用函數。如需使用lambda:InvokedViaFunctionUrl內容金鑰的資源型政策範例,請參閱 使用 AWS_IAM 驗證類型和 中的範例使用 NONE 驗證類型。
您可以在與您的 函數相關聯的政策中使用這些內容索引鍵。例如,您可能希望限制哪些人可以變更函數 URL 的組態。若要針對 URL 驗證類型為 NONE 的所有函數拒絕所有 UpdateFunctionUrlConfig 請求,您可以定義以下政策:
範例 明確拒絕請求的函數 URL 政策
若要授予 example角色 AWS 帳戶 444455556666許可,以對 URL 驗證類型為 的函數提出 CreateFunctionUrlConfig和 UpdateFunctionUrlConfig請求AWS_IAM,您可以定義下列政策:
範例 明確允許請求的函數 URL 政策
您也可以在服務控制政策(SCP) 中使用此條件索引鍵。在 AWS Organizations中使用 SCP 管理整個組織的許可。例如,若要拒絕使用者建立或更新使用 AWS_IAM 以外驗證類型的函數 URL,請使用以下服務控制政策: