使用執行角色定義 Lambda 函數許可 - AWS Lambda

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

使用執行角色定義 Lambda 函數許可

Lambda 函數的執行角色是一種 AWS Identity and Access Management (IAM) 角色,可授與函數存取 AWS 服務和資源的權限。例如,您可以建立執行角色,該角色具有將日誌傳送到 Amazon CloudWatch 和將追蹤資料上傳到的權限 AWS X-Ray。本頁提供有關如何建立、檢視和管理 Lambda 函數執行角色的資訊。

當您調用函數時,Lambda 會自動擔任您的執行角色。您應該避免在函數代碼中手動調用sts:AssumeRole以承擔執行角色。如果您的使用案例請求角色擔任自己,則您必須將角色本身作為受信任主體包含在角色的信任政策中。如需如何修改角色信任政策的詳細資訊,請參閱《IAM 使用者指南》中的修改角色信任政策 (主控台)

為了讓 Lambda 能夠正確承擔您的執行角色,角色的信任政策必須將 Lambda 服務主體 (lambda.amazonaws.com) 指定為受信任的服務。

在 IAM 主控台中建立執行角色

根據預設,當您在 Lambda 主控台中建立函數時,Lambda 會建立具有最低許可的執行角色。具體而言,此執行角色包括受AWSLambdaBasicExecutionRole管政策,該政策為您的函數提供將事件記錄到 Amazon CloudWatch Logs 的基本許可。

您的函數通常需要額外的權限才能執行更有意義的工作。例如,您可能有一個 Lambda 函數,可透過更新 Amazon DynamoDB 資料庫中的項目來回應事件。您可以使用 IAM 主控台建立具有必要許可的執行角色。

若要在 IAM 主控台中建立執行角色
  1. 在 IAM 主控台中開啟 角色頁面

  2. 選擇 建立角色

  3. 受信任的實體類型下,選擇 AWS  服務

  4. 使用案例 下,選擇 Lambda

  5. 選擇下一步

  6. 選取您要附加至角色的 AWS 受管理原則。例如,如果您的函數需要存取 DynamoDB,請選取AWSLambdaDynamoDBExecutionRole受管理的原則。

  7. 選擇下一步

  8. 輸入 角色名稱 ,然後選擇 建立角色

如需詳細指示,請參閱《IAM 使用者指南》中的為 AWS 服務建立角色 (主控台)

創建執行角色後,將其附加到您的函數。在 Lambda 主控台中建立函數時,您可以將先前建立的任何執行角色附加至該函數。如果您要將新的執行角色附加至現有函數,請遵循中的步驟。

建立和管理角色 AWS CLI

若要使用 AWS Command Line Interface (AWS CLI) 建立執行角色,請使用create-role指令。使用此命令時,您可以指定內嵌信任政策。角色的信任政策授予指定主體擔任該角色的許可。在下列範例中,您授予 Lambda 服務主體擔任您的角色的許可。注意,JSON 字串中轉義引號的請求有所不同,這取決於您的 shell。

aws iam create-role --role-name lambda-ex --assume-role-policy-document '{"Version": "2012-10-17","Statement": [{ "Effect": "Allow", "Principal": {"Service": "lambda.amazonaws.com"}, "Action": "sts:AssumeRole"}]}'

您也可使用單獨的 JSON 檔案來定義角色的信任政策。在下列範例中,trust-policy.json 為當前目錄中的檔案。

範例 trust-policy.json
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
aws iam create-role --role-name lambda-ex --assume-role-policy-document file://trust-policy.json

您應該會看到下列輸出:

{ "Role": { "Path": "/", "RoleName": "lambda-ex", "RoleId": "AROAQFOXMPL6TZ6ITKWND", "Arn": "arn:aws:iam::123456789012:role/lambda-ex", "CreateDate": "2020-01-17T23:19:12Z", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } } }

使用 attach-policy-to-role 命令將許可新增至角色。下列命令會將AWSLambdaBasicExecutionRole受管理的原則新增至lambda-ex執行角色。

aws iam attach-role-policy --role-name lambda-ex --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole

創建執行角色後,將其附加到您的函數。在 Lambda 主控台中建立函數時,您可以將先前建立的任何執行角色附加至該函數。如果您要將新的執行角色附加至現有函數,請遵循中的步驟。

為 Lambda 執行角色授予最低權限存取權

當您第一次為 Lambda 函數建立 IAM 角色時,有時可能會授予超出所需的許可。在生產環境中發佈您的函數之前,最佳實務是調整政策以僅包含必要的許可。如需詳細資訊,請參閱《IAM 使用者指南》中的套用最低權限許可

使用 IAM Access Analyzer 來協助識別 IAM 執行角色政策的必要許可。IAM Access Analyzer 會檢閱您指定的日期範圍內的日 AWS CloudTrail 誌,並產生政策範本,並且僅使用該功能在該期間使用的許可來產生政策範本。您可以使用範本建立具有精細許可的受管政策,然後將其連接至 IAM 角色。如此一來,您只會針對特定使用案例授與角色與 AWS 資源互動所需的權限。

如需詳細資訊,請參閱《IAM 使用者指南》中的根據存取活動產生政策