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 显式拒绝失败的主要内容,如果未能解决你的问题,请参考以下文章

无法访问S3存储桶

AWS学习笔记--启用CloudTrail记录AWS 账户操作日志

使用 AWS CloudTrail 记录 IAM 和 AWS STS API 调用

AWS 用户无权通过显式拒绝访问此资源

Cloudwatch 警报到 Slack

sql 适用于CloudTrail日志的AWS Athena表