【发布时间】:2016-06-08 14:57:52
【问题描述】:
我喜欢使用 EC2 的一个原因是我可以选择允许哪些 IP 通过哪些端口相互通信。但是当我查看 Amazon DynamoDb 时,我看不到这样的东西。只是用户类型的访问,这完全是一种不同的安全性。
有谁知道我们是否可以使用 EC2 安全组通过 IP 限制 DynamoDB 访问?如果没有,是否还有其他亚马逊数据存储可以以这种方式工作?
【问题讨论】:
标签: amazon-ec2 amazon-dynamodb
我喜欢使用 EC2 的一个原因是我可以选择允许哪些 IP 通过哪些端口相互通信。但是当我查看 Amazon DynamoDb 时,我看不到这样的东西。只是用户类型的访问,这完全是一种不同的安全性。
有谁知道我们是否可以使用 EC2 安全组通过 IP 限制 DynamoDB 访问?如果没有,是否还有其他亚马逊数据存储可以以这种方式工作?
【问题讨论】:
标签: amazon-ec2 amazon-dynamodb
如您所述,DynamoDB 不使用安全组,它使用 IAM 用户/角色进行访问。无法将安全组添加到 DynamoDB。默认情况下,没有任何人可以访问您的 DynamoDB 表。要授予来自某些 EC2 实例或 Lambda 函数的访问权限,您需要修改分配给这些服务器/函数的 IAM 角色以授予他们访问权限。
如果没有,是否还有其他亚马逊数据存储可以以这种方式工作?
如果这确实是您对数据存储的唯一要求,那么请查看 RDS 或自己在 EC2 服务器上运行一些东西。
【讨论】:
问题和接受的答案都发生在很久以前。我今天(2021 年)遇到了同样的要求,我可以确认我们现在能够通过“源 IP 地址”限制对 DynamoDB 的访问。决定记下我的发现,以防它对那里的人有所帮助:)
请注意,该过程本身没有记录,但它实际上对我有用:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"dynamodb:BatchGetItem",
"dynamodb:BatchWriteItem",
"dynamodb:PutItem",
"dynamodb:DeleteItem",
"dynamodb:GetItem",
"dynamodb:Query",
"dynamodb:UpdateItem"
],
"Resource": "arn:aws:dynamodb:<region>:<account-id>:table/<table-name>",
"Condition": {
"ForAnyValue:IpAddress": {
"aws:SourceIp": [
"xx.yy.zz.ww",
"some.ip.addre.ss"
]
}
}
}
]
}
创建一个 IAM 用户,将上述策略分配给该用户(或其组)。确保此用户可以以编程方式访问 AWS 资源(例如,使用 AWS 访问密钥 ID 和秘密访问密钥)
像往常一样从您的应用程序代码连接到您的 DynamoDB。您现在会注意到:如果您的应用程序代码是从 IP 地址在您的策略(上)中提供的白名单aws:SourceIp 之外的机器上运行的,则 DynamoDB 操作将失败(尽管错误响应中没有给出具体原因):
再说一次,截至 2021 年 6 月,这种方法要么没有记录,要么记录在某处,但我只是没能找到它。如果您尝试过但对您不起作用,请随时发表评论,(如果当时我还活着)我会尽力帮助调查!
【讨论】: