我正在学习 AWS SCP 的工作原理,我从正在学习的课程中听到的解释是这样的:您首先在组织的根目录中使用默认的“允许一切”SCP 策略,然后根据需要删除权限。在任何级别删除的任何内容都会导致无法通过内部帐户策略授予删除的权限。很好。
然而,教练接着说,也可以反过来开始。也就是说,给根帐户一个“空”SCP,它不拒绝任何内容,但也(或多或少)不授予任何内容。从那里您可以根据需要添加权限。因此,您可以首次向组织树中的 3 个节点授予 EC2 权限。
因此,出于学习目的,我想尝试一下。我创建了几个新的 SCP。
名称:无操作
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Action": [
"iam:GetLoginProfile"
],
"Resource": "*"
}
]
}
(我授予了所示的 iam 权限,因为我不知道如何定义一个真正的无操作 SCP,事实上,它既不授予也不否认任何内容。)
我将此无操作策略添加到组织根帐户中。现在有 2 项政策,我被允许删除标准一项,为了完整起见,我将在此处提供:
名称:FullAWSAccess
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "*",
"Resource": "*"
}
]
}
接下来我创建了另一个策略,只是为了玩玩。
名称:Allow-EC2
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Action": [
"ec2:*"
],
"Resource": "*"
}
]
}
最后,我进入一个 OU 节点,并以在账户中拥有完全权限(具体来说是 AWS 策略 AdministratorAccess)的用户身份登录到一个账户(我们将其称为 Fun-One)。
我无法在 Fun-One 中列出 EC2 实例,更不用说创建 EC2 实例了。太棒了。
现在我回到 Fun-One 并向其中添加了一个新的 SCP:Allow-EC2。
我现在返回 Fun-One,希望看到我的管理员用户能够列出和创建 EC2。不是这样的。
我尝试了很多事情。什么都没起作用。最后,出于无奈,我将Allow-EC2 SCP 添加到根OU。现在 Root 有两项策略,其中一项授予 EC2 权限。
我回去了,嘿,现在我的管理员用户可以列出并创建 EC2。
但这不是我听到的故事版本。
需要明确的是,我不想捍卫使用黑名单 SCP 方法启动 AWS 组织的“需求”,这种方法仅在下游添加权限。我很乐意随波逐流。 但为了
理解AWS SCP 逻辑,我遇到了困难。看起来 AWS 的设计初衷就是从授予的所有权限开始,然后如果我们选择的话,我们可以删除下游的权限。但反过来呢?也许不是。 我做的事情看起来有什么不对吗?还是我对AWS SCP的理解有缺陷?还是那位在线老师所讲的内容有误?