授予使用者對 Lambda 函數的存取權 - AWS Lambda

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

授予使用者對 Lambda 函數的存取權

使用身分型政策以允許使用者、使用者群組或角色對 Lambda 函數執行操作。

注意

對於定義為容器映像的函數,存取映像的使用者許可必須在 Amazon Elastic Container Registry (Amazon ECR) 中設定。如需範例,請參閱 Amazon ECR 儲存庫政策

以下顯示具受限範圍之許可政策的範例。這可讓使用者建立和管理以指定字首 (intern-) 命名並以指定執行角色設定的 Lambda 函數。

範例 函數開發政策
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadOnlyPermissions", "Effect": "Allow", "Action": [ "lambda:GetAccountSettings", "lambda:GetEventSourceMapping", "lambda:GetFunction", "lambda:GetFunctionConfiguration", "lambda:GetFunctionCodeSigningConfig", "lambda:GetFunctionConcurrency", "lambda:ListEventSourceMappings", "lambda:ListFunctions", "lambda:ListTags", "iam:ListRoles" ], "Resource": "*" }, { "Sid": "DevelopFunctions", "Effect": "Allow", "NotAction": [ "lambda:AddPermission", "lambda:PutFunctionConcurrency" ], "Resource": "arn:aws:lambda:*:*:function:intern-*" }, { "Sid": "DevelopEventSourceMappings", "Effect": "Allow", "Action": [ "lambda:DeleteEventSourceMapping", "lambda:UpdateEventSourceMapping", "lambda:CreateEventSourceMapping" ], "Resource": "*", "Condition": { "StringLike": { "lambda:FunctionArn": "arn:aws:lambda:*:*:function:intern-*" } } }, { "Sid": "PassExecutionRole", "Effect": "Allow", "Action": [ "iam:ListRolePolicies", "iam:ListAttachedRolePolicies", "iam:GetRole", "iam:GetRolePolicy", "iam:PassRole", "iam:SimulatePrincipalPolicy" ], "Resource": "arn:aws:iam::*:role/intern-lambda-execution-role" }, { "Sid": "ViewLogs", "Effect": "Allow", "Action": [ "logs:*" ], "Resource": "arn:aws:logs:*:*:log-group:/aws/lambda/intern-*" } ] }

會根據許可支援的資源和條件來將此政策中的許可組織為陳述式。

  • ReadOnlyPermissions - Lambda 主控台會在您瀏覽和檢視函數時使用這些許可。他們不支援資源模式或條件。

    "Action": [ "lambda:GetAccountSettings", "lambda:GetEventSourceMapping", "lambda:GetFunction", "lambda:GetFunctionConfiguration", "lambda:GetFunctionCodeSigningConfig", "lambda:GetFunctionConcurrency", "lambda:ListEventSourceMappings", "lambda:ListFunctions", "lambda:ListTags", "iam:ListRoles" ], "Resource": "*"
  • DevelopFunctions - 使用會對字首為 intern- 的函數進行操作的 Lambda 動作 (除了 AddPermissionPutFunctionConcurrency)。AddPermission 會在該函數中修改以資源為基礎的政策,並且可能會產生安全隱憂。PutFunctionConcurrency 會為某函數保留擴展容量並可從其他函數取走容量。

    "NotAction": [ "lambda:AddPermission", "lambda:PutFunctionConcurrency" ], "Resource": "arn:aws:lambda:*:*:function:intern-*"
  • DevelopEventSourceMappings – 在字首為 intern- 的函數上管理事件來源映射。這些動作會在事件來源映射上操作,但您可以使用條件來依函數進行限制。

    "Action": [ "lambda:DeleteEventSourceMapping", "lambda:UpdateEventSourceMapping", "lambda:CreateEventSourceMapping" ], "Resource": "*", "Condition": { "StringLike": { "lambda:FunctionArn": "arn:aws:lambda:*:*:function:intern-*" } }
  • PassExecutionRole - 檢視並僅傳遞名為 intern-lambda-execution-role 的角色,必須由具有 IAM 許可的使用者建立和管理該角色。當您將執行角色指派至函數時就會用到 PassRole

    "Action": [ "iam:ListRolePolicies", "iam:ListAttachedRolePolicies", "iam:GetRole", "iam:GetRolePolicy", "iam:PassRole", "iam:SimulatePrincipalPolicy" ], "Resource": "arn:aws:iam::*:role/intern-lambda-execution-role"
  • ViewLogs - 使用 CloudWatch Logs 來檢視字首為 intern- 的函數的日誌。

    "Action": [ "logs:*" ], "Resource": "arn:aws:logs:*:*:log-group:/aws/lambda/intern-*"

此政策可讓使用者開始使用 Lambda,而不需使其他使用者的資源承受風險。此政策不允許使用者將函數設定為可被觸發或呼叫其他 AWS 服務,這需要較廣泛的 IAM 許可。這也不包含對不支援 CloudWatch 和 X-Ray 這類範圍受限政策之服務的許可。對這些服務使用唯讀政策來為使用者提供指標和追蹤資料的存取。

當您為函式設定觸發時,您需要存取來使用會調用函式的 AWS 服務。例如,若要設定 Amazon S3 觸發,您需要使用 Amazon S3 動作的許可來管理儲存貯體通知。這些許可包含在 AWSLambda_FullAccess 受管政策中。