

# 在 Amazon Lambda 中管理权限
<a name="lambda-permissions"></a>

您可以使用 Amazon Lambda（IAM）管理 Amazon Identity and Access Management 中的权限。使用 Lambda 函数时需要考虑两类主要权限：
+ 您的 Lambda 函数执行 API 操作和访问其他 Amazon 资源所需的权限
+ 其他 Amazon 用户和实体访问您的 Lambda 函数所需的权限

Lambda 函数通常需要访问其他 Amazon 资源，并对这些资源执行各种 API 操作。例如，您可能会有想通过更新 Amazon DynamoDB 数据库中的条目来响应事件的 Lambda 函数。在这种情况下，您的函数需要访问数据库的权限，以及在该数据库中放置或更新项目的权限。

您可以在名为[执行角色](lambda-intro-execution-role.md)的特殊 IAM 角色中定义 Lambda 函数所需的权限。在此角色中，您可以附加一个策略，该策略定义您的函数访问其他 Amazon 资源以及从事件源读取所需的所有权限。每个 Lambda 函数都必须有一个执行角色。您的执行角色必须至少有权访问 Amazon CloudWatch，因为默认情况下，Lambda 函数会记录到 CloudWatch Logs 中。您可以将 [`AWSLambdaBasicExecutionRole` 托管策略](https://docs.amazonaws.cn/aws-managed-policy/latest/reference/AWSLambdaBasicExecutionRole.html)附加到执行角色以满足此要求。

要授予其他 Amazon Web Services 账户 账户、组织和服务访问 Lambda 资源的权限，您有以下几种选择：
+ 您可以使用[基于身份的策略](access-control-identity-based.md)授予其他用户访问 Lambda 资源的权限。基于身份的策略可以直接应用于用户，也可以应用于与用户相关的组和角色。
+ 您可以使用[基于资源的策略](access-control-resource-based.md)授予其他账户和 Amazon Web Services 服务 权限以访问您的 Lambda 资源。当用户尝试访问 Lambda 资源时，Lambda 会同时考虑用户的基于身份的策略和资源的基于资源的策略。当 Amazon Simple Storage Service（Amazon S3）等 Amazon 服务调用您的 Lambda 函数时，Lambda 仅考虑基于资源的策略。
+ 您可以使用[基于属性的访问权限控制（ABAC）](attribute-based-access-control.md)模型来控制对 Lambda 函数的访问。使用 ABAC，您可以将标签附加到 Lambda 函数，在某些 API 请求中传递它们，或将它们附加到发出请求的 IAM 主体。在 IAM 策略的条件元素中指定相同的标签来控制功能访问。

在 Amazon 中，最佳实践是仅授予执行任务所需的权限（[最低权限](https://docs.amazonaws.cn/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)）。要在 Lambda 中实现这一点，建议从 [Amazon 托管策略](permissions-managed-policies.md)开始。您可以按原样使用这些托管策略，也可以作为编写自己的限制性更强策略的起点。

为了帮助您微调最低权限访问的权限，Lambda 提供了一些您可以包含在策略中的其他条件。有关更多信息，请参阅 [微调策略的“资源和条件”部分](lambda-api-permissions-ref.md)。

有关 IAM 的更多信息，请参阅《IAM 用户指南》*[https://docs.amazonaws.cn/IAM/latest/UserGuide/introduction.html](https://docs.amazonaws.cn/IAM/latest/UserGuide/introduction.html)*。