使用 SCP(服务控制策略)在 AWS 组织内强制实施 EBS 加密

使用 SCP(服务控制策略)在 AWS 组织内强制实施 EBS 加密

是否可以强制要求 AWS 组织内的所有账户只能创建加密的 EBS 卷?

我知道你可以使用以下方法强制执行IAM 角色,但我想知道是否可以用 SCP 来完成。

这是我目前想到的办法,但不起作用。我已将其附加到我组织内的一个帐户,但我可以创建加密卷和非加密卷。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "ec2:CreateVolume",
            "Resource": "*",
            "Condition": {
                "Bool": {
                    "ec2:Encrypted": "false"
                }
            }
        }
    ]
}

答案1

2020 年 9 月更新

下面链接的 AWS 页面上的信息已更改。EC2 和 root 用户的限制似乎已被删除。以下策略应该有效

{
  "Effect": "Deny",
  "Action": "ec2:CreateVolume",
  "Resource": "*",
  "Condition": {
    "Bool": {
      "ec2:Encrypted": "false"
    }
  }
},
{
  "Sid": "PreventEc2MountUnencryptedVolume",
  "Effect": "Deny",
  "Action": "ec2:RunInstances",
  "Resource": "arn:aws:ec2:*:*:volume/*",
  "Condition": {
    "Bool": {
      "ec2:Encrypted": "false"
     }
   }
}

您可以(并且可能应该)使用类似以下策略来更广泛地限制 root 用户这一页. 不应使用 root 用户进行日常管理,但让他们可用并具有执行关键任务的权限作为突破口是明智的。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "RestrictEC2ForRoot",
      "Effect": "Deny",
      "Action": [
        "ec2:*",
        "s3:*",
        "kms:*"
      ],
      "Resource": [
        "*"
      ],    
      "Condition": {
        "StringLike": {
          "aws:PrincipalArn": [
            "arn:aws:iam::*:root"
          ]
        }
      }
    }
  ]
}

原始答案 2019 年 4 月

事实证明,SCP 确实按预期工作,但有一个问题——根据此 AWS 页面“使用根凭证时,所有以“ec2”开头的条件键都不会被评估”。

由于对卷进行加密的要求在条件键内,因此当我以 root 身份登录时,不会强制执行该要求。当我以 IAM 用户身份登录时,SCP 会按预期执行。

以下是 AWS 文档的全文。

AWS 文档

目前,当使用根用户凭证发出 Amazon EC2 请求时,资源和条件策略元素无法按以下方式按预期运行:

Resource ARNs – If you specify an AWS resource ARN in an SCP's resource element, it won't match the resource the root user performs

在策略评估期间,Amazon EC2 操作将被禁用。这意味着,此操作的指定限制不适用于根用户。为 Amazon EC2 操作指定所有资源 ("Resource": "*") 的拒绝语句将为根用户正确评估。

Amazon EC2 condition keys – All condition keys that start with "ec2" aren't evaluated when using root credentials. Because policy

由于未正确评估根用户的条件,具有根凭证的用户可能会意外访问 Amazon EC2 操作。

此问题不会影响 IAM 用户和角色或除 Amazon EC2 之外的任何 AWS 服务。只有根用户会受到此问题的影响。如果您不希望根用户有权访问 Amazon EC2 操作,请附加一个 SCP,例如限制根用户对 Amazon EC2 的访问示例到您的组织根目录。

这是他们链接的 SCP

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "RestrictEC2ForRoot",
      "Effect": "Deny",
      "Action": [
        "ec2:*"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringLike": {
          "aws:PrincipalArn": [
            "arn:aws:iam::*:root"
          ]
        }
      }
    }
  ]
}

答案2

我想更新这一点。以下文件显示https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html#not-restricted-by-scp

SCP 策略现在包括 root 用户,因此无需额外设置拒绝策略来限制 root 用户

相关内容