我可以在Amazon Dynamodb上使用EC2类型的secuirty组吗?

时间:2016-06-08 14:57:53

标签: amazon-ec2 amazon-dynamodb

我喜欢使用EC2,我喜欢如何选择允许哪些IP通过哪些端口相互通信。但是当我查看Amazon DynamoDb时,我看不到这样的事情。只是用户类型访问,这是一种不同的安全性。

有人知道我们是否可以使用EC2安全组限制IP的DynamoDB访问?如果没有,是否有另一个亚马逊数据存储以这种方式工作?

2 个答案:

答案 0 :(得分:2)

如您所知,DynamoDB不使用安全组,它使用IAM用户/角色进行访问。无法将安全组添加到DynamoDB。默认情况下,无法访问DynamoDB表。要授予某些EC2实例或Lambda函数的访问权限,您可以修改分配给这些服务器/函数的IAM角色,以授予其访问权限。

  

如果没有,是否有其他亚马逊数据存储以这种方式工作?

如果这确实是您对数据存储的唯一要求,那么请查看RDS或在EC2服务器上自行运行。

答案 1 :(得分:1)

问题和接受的答案都发生在很久以前。我今天(2021 年)遇到了同样的要求,我可以确认我们现在能够通过“源 IP 地址”限制对我们的 DynamoDB 的访问。决定记下我的发现,以防它对那里的人有帮助:)

请注意,该过程本身没有记录,但实际上对我有用:

  1. 创建新的 IAM 政策。在此附上我使用的示例:
{
    "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"
                    ]
                }
            }
        }
    ]
}
  1. 创建一个 IAM 用户,将上述策略分配给该用户(或其组)。确保该用户可以以编程方式访问 AWS 资源(例如使用 AWS 访问密钥 ID 和秘密访问密钥)

  2. 像往常一样从您的应用程序代码连接到您的 DynamoDB。您现在会注意到:如果您的应用程序代码是从其 IP 地址在您的策略(上文)中提供的白名单 aws:SourceIp 之外的机器上运行的,DynamoDB 操作将失败(尽管在错误响应): enter image description here

再说一次,截至 2021 年 6 月,这种方法要么没有记录,要么在某处有记录,但我没找到。如果您尝试了它但它对您不起作用,请随时发表评论(如果我当时还活着)我会尽力帮助调查!