如何使用带有 IAM 凭证的 psql 客户端访问 Amazon AWS Redshift

Posted

技术标签:

【中文标题】如何使用带有 IAM 凭证的 psql 客户端访问 Amazon AWS Redshift【英文标题】:How to acess Amazon AWS redshift using psql client with IAM credentials 【发布时间】:2021-10-29 02:11:39 【问题描述】:

我一直在尝试使用 psql 客户端访问 AWS redshift。 使用 Psql 客户端,我可以使用 db 凭据访问 redshift。

redshift_query_output=$(PGPASSWORD=$pass psql --no-align --quiet --field-separator=' ' -h $host -U $user -d $database_name -p $port_number  <<< $run_redshift_query |  sed -e '1d' |  head -n -1)

上述查询有效。但我想知道是否可以使用 IAM 角色或用户进行访问。我找不到任何合适的资源。

我尝试使用 IAM 角色凭证,但不能直接使用。

【问题讨论】:

【参考方案1】:

来自Using IAM authentication to generate database user credentials - Amazon Redshift:

您可以根据通过 AWS Identity and Access Management (IAM) 权限策略授予的权限生成临时数据库凭证,以管理您的用户对您的 Amazon Redshift 数据库的访问权限。

通常,Amazon Redshift 数据库用户通过提供数据库用户名和密码来登录数据库。但是,您不必在 Amazon Redshift 数据库中维护用户名和密码。作为替代方案,您可以将系统配置为允许用户创建用户凭证并根据他们的 IAM 凭证登录到数据库。

最简单的方法是使用 AWS CLI:

来自Generating IAM database credentials using the Amazon Redshift CLI or API - Amazon Redshift:

为了以编程方式生成临时数据库用户凭证,Amazon Redshift 为 AWS 命令​​行界面 (AWS CLI) 和 GetClusterCredentials API 操作提供了 get-cluster-credentials 命令。或者,您可以使用 Amazon Redshift JDBC 或 ODBC 驱动程序配置 SQL 客户端,这些驱动程序管理调用 GetClusterCredentials 操作、检索数据库用户凭证以及在 SQL 客户端和 Amazon Redshift 数据库之间建立连接的过程。

aws redshift get-cluster-credentials --cluster-identifier examplecluster --db-user temp_creds_user -–auto-create --db-name exampledb -–db-groups example_group --duration-seconds 3600

然后您可以将返回的凭据与psql 命令一起使用。

【讨论】:

以上是关于如何使用带有 IAM 凭证的 psql 客户端访问 Amazon AWS Redshift的主要内容,如果未能解决你的问题,请参考以下文章

IAM 角色临时凭证可以在 cloudformation 模板中使用吗?

Django-Haystack 使用带有 IAM 凭证的 Amazon Elasticsearch 托管

Elasticsearch npm:传递AWS凭证

如何在 IAM 角色的信任策略中检查自定义 OpenID 声明?

更改 IAM 用户密钥时如何更新 Elastic Beanstalk 环境变量中的 AWS 凭证?

带有 SSH 身份验证的 WinSCP 到 S3