在 Lambda 中使用基于属性的访问控制
借助基于属性的访问权限控制(ABAC),您可以使用标签来控制对 Lambda 资源的访问。您可以将标签附加到某些 Lambda 资源,附加到某些 API 请求,或附加到发出请求的 AWS Identity and Access Management(IAM)主体。有关 AWS 如何授予基于属性的访问权限的更多信息,请参阅《IAM 用户指南》中的使用标签控制对 AWS 资源的访问。
您可以使用 ABAC 授予最低权限,而无需在 IAM policy 中指定 Amazon 资源名称 (ARN) 或 ARN 模式。相反,您可以在 IAM policy 的条件元素中指定一个标签来控制访问。使用 ABAC 可以更轻松地进行扩展,因为您无需在创建新资源时更新 IAM 策略。相反,将标签添加到新资源即可控制访问权限。
在 Lambda 中,标签可用于以下资源:
函数 – 有关标记函数的更多信息,请参阅在 Lambda 函数上使用标签。
代码签名配置 – 有关标记代码签名配置的更多信息,请参阅在代码签名配置上使用标签。
事件源映射 – 有关标记事件源映射的更多信息,请参阅在事件源映射上使用标签。
层不支持标签。
可以使用以下条件键根据标签编写 IAM 策略规则:
-
aws:ResourceTag/tag-key:根据附加到 Lambda 资源的标签控制访问权限。
-
aws:RequestTag/tag-key:要求请求中存在标签,例如在创建新函数时。
-
aws:PrincipalTag/tag-key:根据附加到其 IAM 用户或角色的标签,控制允许 IAM 主体(发出请求的人)执行的操作。
-
aws:TagKeys:控制是否可以在请求中使用特定的标签键。
只能为支持这些条件的操作指定条件。有关各 Lambda 操作支持的条件列表,请参阅《Service Authorization Reference》中的 Actions, resources, and condition keys for AWS Lambda。有关 aws:ResourceTag/tag-key 支持,请参阅该文档中的“Resource types defined by AWS Lambda”。有关 aws:RequestTag/tag-key 和 aws:TagKeys 支持,同样请参阅该文档中的“Actions defined by AWS Lambda”。