限制AWS API密钥以仅从EB环境或VPC访问KMS

时间:2017-03-15 12:31:17

标签: amazon-web-services amazon-iam aws-kms

我想限制API密钥仅在我的Elastic Beanstalk环境中工作。我尝试使用VPC条件,但这不起作用,并且文档说它并不总是可用(所以我猜不在EB中)。

我在一定程度上通过将公共IP用于我的测试EC2而得到了它的工作,然而,随着EB的扩展,这不会很好。

这是我当前的主要政策,它适用于单一IP限制:

{
  "Version": "2012-10-17",
  "Id": "key-consolepolicy-3",
  "Statement": [
    {
      "Sid": "Allow access for Key Administrators",
      <snip>
    },
    {
      "Sid": "Allow use of the key by EB user",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<account_id>:user/<my eb user>"
      },
      "Action": [
        "kms:Encrypt",
        "kms:Decrypt"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:SourceIp": "<my test ec2 public ip>"
        }
      }
    }
  ]
}

我该怎么做?实际上是否可以通过VPC进行限制,或者是否有其他方式只允许从我的EB环境中进行访问?

1 个答案:

答案 0 :(得分:2)

我想你能做的就是为你的VPC创建一个公共和私有子网。然后将公共资源(例如负载平衡器和NAT)添加到公有子网。在私有子网中启动EC2实例。然后将NAT IP添加到您的条件中,如下所示:

"StringEquals": {
    "aws:SourceIp": ["54.0.0.1", "54.0.0.2"]
}