如何使用带有 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 托管
如何在 IAM 角色的信任策略中检查自定义 OpenID 声明?