微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AWS IAM:条件上下文键“aws:RequestTag”如何工作?

如何解决AWS IAM:条件上下文键“aws:RequestTag”如何工作?

我有一个附加了角色的 EC2 实例。我的目标是提供对 AWS 服务(例如 Lambda)的完全访问,但仅限于某些资源(基于标签)。我发现 if (document.getElementById("ui-toolbar__item bh dm mp mq mr ms ap aq ar as cg ch ci cj ck mt dk bx cq bz cr b dq eb dz mu dx dy ed ee ef eg eh ei ej ek el em en ls lt lu lv es et eu ev ew ex ey ez fb fc fd fe ff fg fh fi fj lw lx ly lz fo fp fq fr fs ft fu fv fw fx mv mw mx my mz na nb")) { document.getElementById("ui-toolbar__item bh dm mp mq mr ms ap aq ar as cg ch ci cj ck mt dk bx cq bz cr b dq eb dz mu dx dy ed ee ef eg eh ei ej ek el em en ls lt lu lv es et eu ev ew ex ey ez fb fc fd fe ff fg fh fi fj lw lx ly lz fo fp fq fr fs ft fu fv fw fx mv mw mx my mz na nb").click() } 是这样做的方法

以下是附加到角色的 IAM 策略。

aws:RequestTag

我在所需的 lambda 函数添加标签 "Version": "2012-10-17","Statement": [ { "Sid": "Stmt1614664562621","Action": "lambda:*","Effect": "Allow","Resource": "*","Condition": { "StringLike": { "aws:ResourceTag/app": "prod" } } } ] } ,但是当我尝试列出 lambda 时,我收到了 app:prod 错误。以下是错误信息

调用时发生错误 (AccessDeniedException) ListFunctions 操作: 用户: arn:aws:sts::123456789:assumed-role/iam-role-name/i-01abcd456abcd 是 无权执行:lambda:ListFunctions on resource: *

如何使 AccessDeniedException 工作?我哪里出错了?

以下类似问题:(该解决方案对我不起作用) aws:RequestTag on s3 bucket is not working (while assuming a role)

解决方法

您可能希望在条件中使用 aws:ResourceTag 并标记此策略应允许访问的资源(即 Lambda 函数)。

aws:RequestTag 用于控制在 AWS API 调用中可以携带哪些标签,例如在资源上添加/编辑/删除资源标签或在会话上添加会话标签(通过 sts:TagSession 调用)。它们并不是为了保护对具有特定标签的资源的访问。

此外,在您的角色上添加标签并不意味着任何调用者身份(即假定的会话角色)都会将此标签作为请求/会话标签。因此,它不会控制对带有该标签的资源的任何授权/访问。您标记的 IAM 角色只是另一个 AWS 资源,现在应用了资源标签。

此外,当 EC2 代入您在 EC2 实例中的角色时,您甚至无法控制会话标签,因此您无法控制 EC2 实例的会话/请求标签。

编辑:不过,在您使用 lambda:ListFunctions 的特定示例中,不是 特定于资源的操作,您无法通过允许使用特定资源标签的 Lambda 函数来控制/过滤列表由 API 调用方的政策决定。

在使用多个环境/阶段时,拥有多个 AWS 账户(每个环境/阶段一个)实际上是最佳实践。如果您还没有使用多个 AWS 账户,您甚至可以使用 AWS Organizations 进行整合账单等。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。