如何在Redshift中连接到私有集群?

时间:2018-06-25 12:37:41

标签: amazon-web-services amazon-redshift vpc

我正在尝试尽可能安全地将数据从MySQL数据库移至Amazon Redshift。我已经能够连接到群集,使用boto3将csv放入S3,在redshift中为数据创建一个表,然后使用copy命令将数据从S3移至redshift。这是将群集设置为可公开访问的全部过程。

我意识到,出于我们的安全需求,最好将群集设置为私有。但是,这样做之后,我不再能够连接到redshift来创建表,从S3加载数据,并且我一直用来查询的SQL客户端将不再连接。但是,我的VPC设置为允许我的IP连接。有谁知道如何连接到私有群集?

*旁注,这仍然处于研发阶段,因此我们实际上并未将任何敏感数据放入云中

2 个答案:

答案 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上列出的白色计算机上应该可以正常工作。

让我知道是否有任何疑问。