我喜欢使用EC2,我喜欢如何选择允许哪些IP通过哪些端口相互通信。但是当我查看Amazon DynamoDb时,我看不到这样的事情。只是用户类型访问,这是一种不同的安全性。
有人知道我们是否可以使用EC2安全组限制IP的DynamoDB访问?如果没有,是否有另一个亚马逊数据存储以这种方式工作?
答案 0 :(得分:2)
如您所知,DynamoDB不使用安全组,它使用IAM用户/角色进行访问。无法将安全组添加到DynamoDB。默认情况下,无法访问DynamoDB表。要授予某些EC2实例或Lambda函数的访问权限,您可以修改分配给这些服务器/函数的IAM角色,以授予其访问权限。
如果没有,是否有其他亚马逊数据存储以这种方式工作?
如果这确实是您对数据存储的唯一要求,那么请查看RDS或在EC2服务器上自行运行。
答案 1 :(得分:1)
问题和接受的答案都发生在很久以前。我今天(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 月,这种方法要么没有记录,要么在某处有记录,但我没找到。如果您尝试了它但它对您不起作用,请随时发表评论(如果我当时还活着)我会尽力帮助调查!