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

Restricting AWS API key to access KMS from only EB Environment or VPC

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

通过为我的测试 EC2 使用 public IP,我在某种程度上让它工作了,但是,这对未来没有好处,因为 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 环境中访问?

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

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