我正在尝试尽可能安全地将数据从MySQL数据库移至Amazon Redshift。我已经能够连接到群集,使用boto3将csv放入S3,在redshift中为数据创建一个表,然后使用copy命令将数据从S3移至redshift。这是将群集设置为可公开访问的全部过程。
我意识到,出于我们的安全需求,最好将群集设置为私有。但是,这样做之后,我不再能够连接到redshift来创建表,从S3加载数据,并且我一直用来查询的SQL客户端将不再连接。但是,我的VPC设置为允许我的IP连接。有谁知道如何连接到私有群集?
*旁注,这仍然处于研发阶段,因此我们实际上并未将任何敏感数据放入云中
答案 0 :(得分:1)
来自Creating a Cluster in a VPC - Amazon Redshift:
可公开访问::如果希望群集具有可从公共Internet访问的公共IP地址,请选择是。选择否如果您希望群集具有只能通过VPC内部访问的专用IP地址。
通过选择否,群集将不再具有公共IP地址。这意味着只能在VPC内部访问。您没有说明要从何处连接到Redshift,但听起来好像是从Internet进行的。
人们连接到私有数据库(无法从Internet访问)的一种常见方式是通过堡垒服务器(或“跳箱”)使用端口转发,该服务器可以从互联网。
有关示例,请参见:Easy ssh tunneling and port forwarding | AVM Consulting
与Redshift实例关联的安全组还需要允许从您连接的任何地方进行访问。
答案 1 :(得分:0)
我意识到,出于我们的安全需求,最好将群集设置为私有。
AWS中的所有功能都可以启用公共/私有/自定义安全性,这很好,您现在已启用VPC并将其设为私有。
但是,执行完此操作后,我不再能够连接到Redshift来创建表,从S3加载数据,而我一直用来查询的SQL客户端将不再连接。
您可以使用任何客户端thick(psql)vs Thin(jdbc / odbc)连接到带有适当凭据和URL的Redshift。示例psql:
psql postgresql://username:password@redhift-url-datawarehouse.:5439/dbname?sslmode=require
您将S3设为私有文件或私有文件,然后在执行Copy
时提供IAM角色和凭据来使用复制功能。
这是示例复制命令。
COPY my_tablename
(C1
,C2
,C3,...
)
FROM 's3://<<YOUR-BUCKET>>/<<YOUR-FILE>>'
credentials 'aws_access_key_id=<access-key-id>;aws_secret_access_key=<secret- access-key>';
但是,我的VPC设置为允许我的IP连接。有谁知道如何连接到私有群集?
我上面提到的命令在Redshift
上列出的白色计算机上应该可以正常工作。
让我知道是否有任何疑问。