1

根据公司合规政策,我正在寻找解决方案来阻止客户端(100 多个 aws 帐户)创建具有公共 IP 的 ec2 实例,或者在创建后尝试在其上附加弹性 IP。

我正在考虑使用AWS Organization SCP来实现它,所以我不需要在个人账户中设置它。但无法获得正确的 SCP 政策来执行此操作。

供您参考的 SCP 策略,我可以使用以下策略阻止 s3 公共访问,我需要类似于 ec2 实例。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "s3:PutAccountPublicAccessBlock"
            ],
            "Resource": "*",
            "Effect": "Deny"
        }
    ]
}

理想情况下,使用适当的 SCP 策略,当客户在其帐户中的 Orgainzation OU 下,如果他们允许公共 IP,则他们无法创建 ec2 实例,或者在创建 ec2 后,当他们尝试附加弹性 IP 时,scp 应该阻止它。

更新

谢谢,@约翰

让我试试这个政策

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "ec2:AssociateAddress"
            ],
            "Resource": "*",
            "Effect": "Deny"
        }
    ]
}

更新#2

以上 scp 策略不起作用,我仍然可以使用公共 IP 创建新实例

4

3 回答 3

2

最后我得到了 AWS 支持的帮助。

方向,@john 目标,部分正确,真正的 scp 策略如下

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "ec2:RunInstances"
      ],
      "Condition": {
        "BoolIfExists": {
          "ec2:AssociatePublicIpAddress": "true"
        }
      },
      "Resource": "arn:aws:ec2:*:*:network-interface/*"
    },
    {
      "Action": [
        "ec2:AssociateAddress"
      ],
      "Resource": "*",
      "Effect": "Deny"
    }
  ]
}

解释

  • 第一条语句阻止客户端使用公共 IP ( aws ec2 run-instances --associate-public-ip-address xxxx ) 创建新的 ec2 实例
  • 第二条语句阻止客户端将 EIP 附加到 ec2 实例。
于 2021-11-22T00:19:39.257 回答
1

要阻止分配弹性 IP 地址,您将拒绝他们的ec2:AssociateAddress权限。

我在 Amazon EC2 的操作、资源和条件键中找不到 - 服务授权参考因为它会在启动实例时限制公共 IP 地址的关联(即随机地址,而不是弹性 IP 地址)。ConditionRunInstances

于 2021-11-18T23:13:41.040 回答
0

如果用户选择分配公共 IP,以下策略声明将阻止 EC2 (runInstances) 的实例化。但是,要使此策略生效,应将子网配置为不自动分配公共 IP。

{
  "Condition": {
    "StringEquals": {
      "ec2:AssociatePublicIpAddress": true
    }
  },
  "Action": "ec2:RunInstances",
  "Resource": "*",
  "Effect": "Deny",
  "Sid": ""
}
于 2022-01-29T02:22:57.733 回答