使用身份验证配置文件连接到 Amazon Redshift - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

使用身份验证配置文件连接到 Amazon Redshift

如果您与 Amazon Redshift 有很多连接,则可能很难管理所有这些连接的设置。通常,每个 JDBC 或 ODBC 连接都使用特定的配置选项。借助身份验证配置文件,可以将连接选项存储在一起。这样,用户可以选择要连接的配置文件,避免管理单个选项的设置。配置文件可以应用于各种场景和用户类型。

创建身份验证配置文件后,用户可以将即用型配置文件添加到连接字符串。这样,他们即可使用针对每个角色和使用案例的正确设置连接到 Amazon Redshift。

有关 Amazon Redshift API 的信息,请参阅 CreateAuthenticationProfile

创建身份验证配置文件

通过 Amazon CLI,您可以使用 create-authentication-profile 命令创建身份验证配置文件。这假定您已有一个 Amazon Redshift 集群和现有数据库。您的凭证必须具有连接到 Amazon Redshift 数据库的权限以及获取身份验证配置文件的权限。您可以将配置选项作为 JSON 字符串提供,或者引用包含 JSON 字符串的文件。

create-authentication-profile --authentication-profile-name<value: String> --authentication-profile-content<value: String>

以下示例创建一个名为 ExampleProfileName 的配置文件。在这里,您可以将定义集群名称和其它选项设置的键和值作为 JSON 字符串添加。

create-authentication-profile --authentication-profile-name "ExampleProfileName" --authentication-profile-content "{\"AllowDBUserOverride\":\"1\",\"Client_ID\":\"ExampleClientID\",\"App_ID\":\"ExampleAppID\",\"AutoCreate\":false,\"enableFetchRingBuffer\":true,\"databaseMetadataCurrentDbOnly\":true}" }

此命令使用指定的 JSON 设置创建配置文件。返回以下内容,表示已创建配置文件。

{"AuthenticationProfileName": "ExampleProfileName", "AuthenticationProfileContent": "{\"AllowDBUserOverride\":\"1\",\"Client_ID\":\"ExampleClientID\",\"App_ID\":\"ExampleAppID\",\"AutoCreate\":false,\"enableFetchRingBuffer\":true,\"databaseMetadataCurrentDbOnly\":true}" }

创建身份验证配置文件的限制和配额

每位客户的配额为十(10)个身份验证配置文件。

身份验证配置文件可能发生某些错误 例如,如果您使用现有名称创建新的配置文件,或者您是否超过了配置文件配额。有关更多信息,请参阅 CreateAuthenticationProfile

您无法在身份验证配置文件存储中存储 JDBC、ODBC 和 Python 连接字符串的某些选项键和值:

  • AccessKeyID

  • access_key_id

  • SecretAccessKey

  • secret_access_key_id

  • PWD

  • Password

  • password

对于 JDBC 或 ODBC 连接字符串,您不能在配置文件存储中存储键或值 AuthProfile。对于 Python 连接,您无法存储 auth_profile

身份验证配置文件存储在 Amazon DynamoDB 中并由 Amazon 管理。

使用身份验证配置文件

创建身份验证配置文件后,您可以包含配置文件名称作为 JDBC 2.0 AuthProfile 版的连接选项。使用此连接选项可以检索存储的设置。

jdbc:redshift:iam://endpoint:port/database?AuthProfile=<Profile-Name>&AccessKeyID=<Caller-Access-Key>&SecretAccessKey=<Caller-Secret-Key>

以下是 JDBC URL 字符串示例。

jdbc:redshift:iam://examplecluster:us-west-2/dev?AuthProfile="ExampleProfile"&AccessKeyID="AKIAIOSFODNN7EXAMPLE"&SecretAccessKey="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"

在 JDBC URL 中指定 AccessKeyIDSecretAccessKey,以及身份验证配置文件名称。

在下面的示例中,您还可以使用分号分隔符分隔配置选项,其中包括日志记录选项。

jdbc:redshift:iam://my_redshift_end_point:5439/dev?LogLevel=6;LogPath=/tmp;AuthProfile=my_profile;AccessKeyID="AKIAIOSFODNN7EXAMPLE";SecretAccessKey="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
注意

请勿向身份验证配置文件中添加机密信息。例如,不要在身份验证配置文件中存储 AccessKeyIDSecretAccessKey 值。身份验证配置文件存储具有禁止存储密钥的规则。如果尝试存储与敏感信息相关的密钥和值,则会出错。

获取身份验证配置文件

要列出现有身份验证配置文件,请调用以下命令。

describe-authentication-profiles --authentication-profile-name <value: String>

下面的示例显示了两个检索配置文件。如果不指定配置文件名称,则返回所有配置文件。

{ "AuthenticationProfiles": [ { "AuthenticationProfileName": "testProfile1", "AuthenticationProfileContent": "{\"AllowDBUserOverride\":\"1\",\"Client_ID\":\"ExampleClientID\",\"App_ID\":\"ExampleAppID\",\"AutoCreate\":false,\"enableFetchRingBuffer\":true,\"databaseMetadataCurrentDbOnly\":true}" }, { "AuthenticationProfileName": "testProfile2", "AuthenticationProfileContent": "{\"AllowDBUserOverride\":\"1\",\"Client_ID\":\"ExampleClientID\",\"App_ID\":\"ExampleAppID\",\"AutoCreate\":false,\"enableFetchRingBuffer\":true,\"databaseMetadataCurrentDbOnly\":true}" } ] }