AWS 组织中的 Cloudtrail 显式拒绝失败
Posted
技术标签:
【中文标题】AWS 组织中的 Cloudtrail 显式拒绝失败【英文标题】:Cloudtrail explicit deny in AWS Org fails 【发布时间】:2020-06-26 15:47:22 【问题描述】:IAM 中除根账户外只有 5 个用户。此政策有明确的拒绝并附加在根级别(附加照片),但它不起作用。
“不起作用”的意思是 - 在 AWS 控制台中,我单击停止记录,它会停止记录。此外,我运行命令停止在 CLI 中登录,这也停止了记录 - 所以这个显式拒绝在某处失败。
请注意,此测试是在 IAM 成员账户而非根账户上完成的。我只使用 root 帐户来设置 SCP。 IAM 成员账户是超级用户,几乎完成了 AWS 上的所有“管理工作”。
"Version": "2012-10-17",
"Statement": [
"Sid": "DenycloudtrailStopLogging",
"Effect": "Deny",
"Action": [
"cloudtrail:StopLogging"
],
"Resource": [
"*"
]
]
IAM 用户是否也需要链接到其他地方?它们不在 OU 中,但它们仍然是 IAM 中的帐户,所以我认为它们都继承了 root 权限(上图)
还认为在所有其他政策中,明确拒绝胜过所有其他决定,那么有什么原因导致此政策不起作用?这些是仅有的 2 个服务控制策略(完全访问和拒绝 Cloudtrail 停止日志记录)。
除了创建策略并将其附加到根目录之外,是否还有其他因素 - 因为我认为这就是我们必须做的所有事情?可以放在其他地方的某种服务或角色豁免?
【问题讨论】:
“不起作用”是什么意思?您是否尝试过直接(或通过 CLI)调用 API 而没有收到拒绝访问?或者您是从其他一些操作推断 API 的使用? 更重要的是,我会将DeleteTrail
包括在拒绝列表中。
我在 AWS 控制台中单击了停止记录,但它仍然停止记录。此外,我运行命令停止在 CLI 中记录,它也停止记录。会更新帖子,谢谢。抱歉,“不起作用”的意思是,除了将策略分配给根并使用它之外,是否还有其他因素,因为我认为这就是我们必须做的。谢谢,我将在 stopLogging 工作后使用 DeleteTrail - 非常感谢
附加到根 OU 就足够了。我唯一可以建议的是在组织控制台中查看帐户本身,并验证它是否继承了 SCP。
【参考方案1】:
服务控制政策 (SCP) 不适用于付款人(又名主)账户。它们仅适用于本组织的成员帐户。这意味着,如果您想拒绝付款人账户中的特定操作,则必须以不同的方式进行。
原因是使用 SCP,您还可以限制目标帐户的 root 用户。如果它适用于付款人帐户,您可以有效地将自己锁定在整个组织及其所有帐户之外。
需要注意的一点:不应有太多活动,尽可能少的用户,并且付款人帐户中没有运行实际工作负载。它的唯一目的应该是管理组织(成员帐户、计费、SCP 和 CloudFormation StackSet),并且应该尽可能自动化。在绝对必要的情况下手动访问付款人帐户,或运行额外的工作负载会带来很大的安全风险,因为如果付款人帐户遭到入侵,可能会给您的整个组织带来麻烦。
如需安全设置,请查看AWS Control Tower,如果您所在地区尚不可用,请查看AWS Landing Zone Solution。
【讨论】:
您好,感谢您的回复。我在不是根账户的 IAM 账户上运行 cloudtrail 测试。对不起,我会把这个添加到帖子中。我同意您的说法,并且仅使用根帐户创建了一个 IAM 成员帐户,该帐户是主要执行所有操作的超级用户。我回到这个根账户来设置 SCP 以防止我的个人会员账户能够停止登录 Cloudtrail 我不确定是否存在误解。请注意,我不是在谈论 root 用户和 IAM 用户。我说的是 AWS 付款人账户(您的 AWS 组织的主账户)及其成员账户(您在组织中创建或邀请加入的其他 AWS 账户)。当然,这可能有点令人困惑,这就是为什么我们在 IAM 的上下文中将其称为 IAM 用户(或根用户),在组织的上下文中将其称为 AWS 账户。 您好 - 我使用信用卡支付 AWS 账户,并且应该拥有唯一的主根账户。我应该负责所有***帐户。也就是说,我使用主账户创建了我的 IAM 用户账户,然后我使用该账户设置了所有其他 IAM 用户账户。希望我正确理解了您的所有观点? 我在这里不是在谈论 IAM 用户。 SCP 是 AWS 组织服务的一个概念。它们适用于 AWS 账户,而不是 IAM 用户。如果您设置 SCP,它不会限制组织的付款人账户中的任何 IAM 用户。它只会限制组织成员账户中的 IAM 用户(和角色)。请理解,当我提到“帐户”时,我指的不是用户。 再次查看并认为我理解它,因为 SCP 仅适用于受邀加入 AWS 组织的成员,正如您试图解释的那样。 SCP 与 AWS 中的 IAM 用户无关,所以我最初想要设置它的方式永远行不通,因为 SCP 仅适用于组织级别和组织级别的用户。我用来在 EC2 中创建实例或将文件上传到 S3 的 AWS 账户 - 这些 SCP 不能应用于这些类型的账户。【参考方案2】:将上面的代码放入 IAM 中的新“权限边界策略”中,而不是 SCP。
IAM 中的权限边界策略限制 IAM 用户,而 AWS Organizations 中的 SCP 专门限制 AWS Organization 账户。
【讨论】:
以上是关于AWS 组织中的 Cloudtrail 显式拒绝失败的主要内容,如果未能解决你的问题,请参考以下文章
AWS学习笔记--启用CloudTrail记录AWS 账户操作日志