• 沒有找到結果。

----结束

4.6 使用 IAM 认证方式连接集群

4.6.1 概述

GaussDB(DWS) 提供了使用IAM认证方式访问数据库的功能。当使用JDBC应用程序连 接集群时,您可以在JDBC连接中配置IAM用户名及其用户凭证等信息,在连接数据库 时系统就会自动生成临时数据库凭证,从而成功连接到数据库。

说明

● 当前只支持GaussDB(DWS) 1.3.1以上版本(包括1.3.1版本)的集群及其配套的JDBC驱动程 序使用IAM认证方式访问数据库。

● 实时数仓暂不支持IAM认证方式连接集群。

IAM 用户凭证有密码和访问密钥(Access Key ID和Secret Access Key,简称AK和SK)

两种类型,您要为 JDBC 连接提供 IAM 访问密钥。

如需使用IAM用户凭证访问数据库,必须先给您的IAM用户授予DWS Database Access 权限,同时拥有DWS Administrator和DWS Database Access权限的用户,才能基于 IAM用户生成临时数据库用户凭证以连接GaussDB(DWS) 数据库。

使用IAM用户凭证访问数据库的流程如下:

1. 授予IAM用户DWS Database Access权限

2. 创建IAM用户凭证

3. 配置JDBC连接使用IAM认证方式连接集群

4.6.2 授予 IAM 用户 DWS Database Access 权限

如需使用IAM用户凭证访问数据库,必须先给您的IAM用户授予DWS Database Access 权限,同时拥有DWS Administrator和DWS Database Access权限的用户,才能基于 IAM用户生成临时数据库用户凭证以连接GaussDB(DWS) 数据库。通过DWS

Database Access权限的授权和限制,用户可以更好地管理数据库的访问权限。

需要注意的是,DWS Database Access是用户组级别的权限,您可以通过为用户组授 权并将用户加入到用户组的方式,使用户具有用户组中的权限。

步骤2 修改您的IAM用户所属的用户组,给用户组设置策略,授予用户组DWS Database Access权限,并将您的IAM用户添加到该IAM用户组中。

只有IAM的admin用户组的用户才能执行此步骤。在IAM中,只有admin用户组的用户 可以管理用户,包括创建用户组及用户、设置用户组权限等。

具体操作请参见《统一身份认证服务用户指南》中的查看或修改用户组。

您也可以新创建一个IAM用户组,并给用户组设置策略,授予用户组DWS

Administrator和DWS Database Access权限,然后将您的IAM用户添加到该IAM用户 组中。具体操作请参见《统一身份认证服务用户指南》中的创建用户组并授权。

----结束

4.6.3 创建 IAM 用户凭证

用户可以登录管理控制台创建访问密钥,如果您已经创建过了,也可以使用已有的访 问密钥。

创建访问密钥(AK 和 SK)

登录管理控制台,将鼠标移到右上角的用户名,单击“我的凭证”,再单击“管理访 问密钥”页签,可以查看已有的访问密钥,也可以单击“新增访问密钥”进行创建。

访问密钥是IAM身份认证的重要凭证,只有在新增访问密钥时,用户才可以下载到含 有Access Key ID(AK)和Secret Access Key(SK)的密钥文件,在管理控制台只能查 看到Access Key ID,如果您未曾下载过该密钥文件,请联系您的管理员进行获取,或 者重新创建。

说明

每个用户最多可创建2个访问密钥,有效期为永久。为了帐号安全性,建议您定期更换并妥善保 存访问密钥。

4.6.4 配置 JDBC 连接使用 IAM 认证方式连接集群

当使用JDBC应用程序连接集群时,您可以在JDBC连接中配置IAM用户名及其用户凭证 等信息,在连接数据库时系统就会自动生成临时数据库凭证,从而成功连接到数据 库。

说明

当前只支持GaussDB(DWS) 1.3.1以上版本(包括1.3.1版本)的集群及其配套的JDBC驱动程序使 用IAM认证方式访问数据库。请先参考下载JDBC或ODBC驱动下载JDBC驱动程序。

配置 JDBC 连接参数

4-9 数据库连接参数

参数 描述

url gsjdbc4.jar/gsjdbc200.jar数据库连接描述符。JDBC接口不提供重试连接 的能力,您需要在业务代码中实现重试连接的处理。url示例如下:

jdbc:dws:iam://dws-IAM-demo:cn-north-4/gaussdb?

AccessKeyID=XXXXXXXXXXXXXXXXXXXX&SecretAccessKey=XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX&DbUser=user_test&AutoCreate=true

JDBC URL参数说明:

● jdbc:dws:iam是URL格式的前缀。

● dws-IAM-demo为数据库集群名称。

● cn-north-4是集群所在的区域。

有关GaussDB(DWS) 的区域信息,请参考地区和终端节点。

● gaussdb是要连接的数据库名。

● AccessKeyID/SecretAccessKey为参数DbUser指定的IAM用户所对应 的访问密钥ID和秘密访问密钥。

● DbUser请设置为IAM用户名,注意,当前版本暂不支持IAM用户名中 含有中划线的情况。

– 如果数据库中已存在DbUser指定的用户,则临时用户凭证具有与 现有用户相同的权限。

– 如果数据库中不存在DbUser指定的用户,且AutoCreate参数值为 true,则自动创建一个以DbUser参数值作为用户名的新用户,默 认创建的用户为数据库普通用户。

● AutoCreate可以不设置,默认为false。该参数表示是否在数据库中自 动创建一个以DbUser参数值作为用户名的数据库用户。

– true表示自动创建。如果用户已存在则不会再创建。

– false表示不会自动创建。如果数据库中不存在DbUser指定的用户 名将返回失败。

info 数据库连接属性。常用的属性如下:

● ssl:Boolean类型。表示是否使用SSL连接。

● loglevel:Integer类型。为LogStream或LogWriter设置记录进 DriverManager当前值的日志信息量。

● charSet:String类型。表示在向数据库发送数据或从数据库接收数据 时使用到的字符集。

● prepareThreshold:Integer类型。用于确定在转换为服务器端的预备 语句之前,要求执行方法PreparedStatement的次数。缺省值是5。

示例

//以下用例以gsjdbc4.jar为例

//以下代码将获取数据库连接操作封装为一个接口,可通过给定集群所在的区域、集群名称、AccessKeyID、

SecretAccessKey及对应的IAM用户名来连接数据库。

public static Connection GetConnection(String clustername, String regionname, String AK, String SK, String username)

{

//驱动类。

String driver = "org.postgresql.Driver";

//数据库连接描述符。

String sourceURL = "jdbc:dws:iam://" + clustername + ":" + regionname + "/gaussdb?" +

"AccessKeyID=" + AK + "&SecretAccessKey=" + SK + "&DbUser=" + username + "&autoCreate=true";