我想限制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环境中进行访问?
答案 0 :(得分:2)
我想你能做的就是为你的VPC创建一个公共和私有子网。然后将公共资源(例如负载平衡器和NAT)添加到公有子网。在私有子网中启动EC2实例。然后将NAT IP添加到您的条件中,如下所示:
"StringEquals": {
"aws:SourceIp": ["54.0.0.1", "54.0.0.2"]
}