授予用户对 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 操作,但AddPermission
和PutFunctionConcurrency
除外。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 托管策略中。