The following connection properties are usually required in order to connect to Amazon Redshift.
Server: The host name or IP of the server hosting the Amazon Redshift database.
Database: The database that you created for your Amazon Redshift cluster.
You can also optionally set the following:
Port: The port of the server hosting the Amazon Redshift database. 5439 by default.
You can obtain these values in the AWS Management Console:
Open the Amazon Redshift console (http://console.aws.amazon.com/redshift).
On the Clusters page, click the name of the cluster.
On the Configuration tab, obtain the properties from the Cluster Database Properties section. The connection property values will be the same as the values set in the ODBC URL.
The provider provides secure communication with Amazon Redshift server using SSL encryption. You can optionally turn off SSL encryption by setting UseSSL to false.
You can also leverage SSL authentication to connect to Amazon Redshift data. For that configure the following connection properties:
SSLClientCert: Set this to the name of the certificate store for the client certificate. Used in the case of 2-way SSL, where truststore and keystore are kept on both the client and server machines.
SSLClientCertPassword: If a client certificate store is password-protected, set this value to the store's password.
SSLClientCertSubject: The subject of the TLS/SSL client certificate. Used to locate the certificate in the store.
SSLClientCertType: The certificate type of the client store.
SSLServerCert: The certificate to be accepted from the server.
The following is the example connection string to connect Amazon Redshift using standard user/password and inactive SSL encryption:
Note: If you already have an active Azure AD user account, skip to Connecting with Azure AD.
In the Azure Active Directory tenant, click:
Users
New user
Create new user
Fill out your details and click Create.
Log in and choose the Consent on behalf of your organization option, then the Need admin approval window appears.
Click Accept.
Note: Only non-B2C Azure tenants will be able to complete the Azure AD authentication scheme.
Note: You must have an active Azure AD account. If you do not have an active account, make one before beginning this process.
First, create an OAuth app for logging into your Amazon Redshift database via Azure. On the Azure Active Directory Overview page, in the left navigation bar:
Click App registrations.
Click New registrations at the top of the App registrations page.
On the Register an application page, fill in your details and click Register at the bottom of the page. Make note of your CallbackURL.
From the newly registered application, click Expose an API in the left navigation bar.
Next to the Application ID URI, click Set.
The Set the App ID URI dialog appears with the information filled in from registering. Click Save.
Click Add a scope.
Fill in your details and click Add scope at the bottom of the form.
Next, create another OAuth app, which will serve as the client application for your Amazon Redshift database. In the left navigation bar, click App registrations.
From the Azure Active Directory management page, click New registrations at the top of the App registrations page.
On the Register an application page, fill in your details and click Register at the bottom of the page.
Following the creation of the app, you will be brought to its overview page. From there, in the left navigation bar:
Click on Certificates & secrets.
Click on New client secret.
In the Add a client secret window, add in your details and click Add at the bottom of the window.
Make a note of your OAuthClientSecret (the Value field of the OAuth secret that is displayed).
In the left navigation bar of the client app's management page:
Click API permissions.
Click Add a permission.
Choose Microsoft Graph API.
Click Application permissions.
Set Client app permissions to Directory.Read.All.
Click Add at the bottom.
Click Grant admin consent.
Click Yes.
In the Azure Active Directory left navigation bar:
Click Groups.
On the Groups page, click New group and fill in the details.
Click No owners selected.
The Add owners window appears. Select the user.
Click Create.
In the Azure Active Directory left navigation bar:
Click App registrations.
Click the tab All applications, and choose your first OAuth application.
On the OAuth screen, in the left navigation bar, click Manifest. Look in the editor for the accessTokenAcceptedVersion. If the value is null, it is a v1.0 token. If the value is set to 2, this is a v2.0 token.
From the Amazon Redshift instance's query box, submit the identity provider query, following the example below:
Terminology Guide:
Your issuer ID: The issuer ID to trust when a token is received. The unique identifier for the tenant_id is appended to the issuer. If using a v1.0 token, use https://sts.windows.net/<your_tenant_id_here>/. If using a v2.0 token, use https://login.microsoftonline.com/<your_tenant_id_here>/v2.0.
Your client_id: The unique, public identifier of the application registered with the identity provider. This is referred to as the application ID.
Your client_secret: A secret identifier, or password, known only to the identity provider and the registered application.
audience: The Application ID (URI) assigned to the OAuth app.
You can use any name you like for the NAMESPACe.
In Amazon Redshift, place the CREATE IDENTITY PROVIDER query (like above example) into the query text box.
Click Run at the bottom of the query box.
In the query text box, create a role on the Redshift database in this format:
Replace with your identity provider's namespace provided in the CREATE IDENTITY PROVIDER query and the name of Azure group you created earlier. Click the Run button at the bottom of the query box.
In the query text box, grant table access to this new role as follows:
Replace the above example with your namespace and Azure group name.
Click Run at the bottom of the query box.
AuthScheme: Set this to AzureAD.
Server: Set this to the name of your Amazon Redshift server endpoint.
Database: Set this to the name of your Amazon Redshift database that you'd like to connect to.
User: Set this to the name of the authenticating Amazon Redshift user.
AzureTenant: Set this to the ID of the Azure Tenant that your OAuth and client apps were created under. Find this in the Overview page of one of the apps under Directory (tenant) ID.
SSOLoginURL: Set this to the value of the Application ID URI, visible on the Overview page of your OAuth app.
Scope: For v1.0 OAuth tokens, set this to the Scopes field in the Expose an API page of your OAuth app. For v2.0 OAuth tokens, this will be the same as the OAuth app's Client ID.
OAuthClientID: Set this to the Application (client) ID in the Overview page of the Amazon Redshift client app you created.
OAuthClientSecret: Set this to the Value of the OAuth client secret noted upon its creation in your client app's Certificates & secrets page.
CallbackURL: Set this to the callback URL of the OAuth app.
Troubleshooting Note: If an "Azure JWT token does not have 'upn' field" error is encountered:
On the Azure Active Directory management page, navigate to App Registrations and select your OAuth app.
Click Token configuration in the left navigation bar.
Click Add optional claim.
In the Add optional claim screen, under Token type, click Access.
Under the Claim column, select upn.
Click Add at the bottom.
Select Turn on the Microsoft Graph profile permission (required for claims to appear in token).
Click Add.
Repeat this process for the client app.
Attempt the connection again.
Set the AuthScheme to Basic in order to connect to Amazon Redshift with login credentials. In addition, set the following connection properties:
User: The user which will be used to authenticate with the Amazon Redshift server.
Password: The password which will be used to authenticate with the Amazon Redshift server.
The following is an example connection string:
Set the AuthScheme to IAMCredentials. The following is an example connection string:
If you are connecting IAM role with temporary credentials you are also required to apply AWSSessionToken.
You can optionally apply:
AutoCreate: Create a database user with the name specified for User if one does not exist while connecting.
DbGroups: Database groups the database user joins for the current session.
Set the AuthScheme to ADFS. The following connection properties need to be set:
User: Set this to the ADFS user.
Password: Set this to ADFS password for the user.
SSOLoginURL: Set this to the login url used by the SSO provider.
Below is an example connection string:
The ADFS Integrated flow indicates you are connecting with the currently logged in Windows user credentials. To use the ADFS Integrated flow, simply do not specify the User and Password, but otherwise follow the same steps in the ADFS guide above.
Set the AuthScheme to PingFederate. The following connection properties need to be set:
User: Set this to the PingFederate user.
Password: Set this to PingFederate password for the user.
SSOLoginURL: Set this to the login url used by the SSO provider.
The following SSOProperties are needed to authenticate to PingFederate:
AuthScheme (optional): The authorization scheme to be used for the IdP endpoint. The allowed values for this IdP are None or Basic.
Additionally, you can use the following SSOProperties to configure mutual SSL authentication for SSOLoginURL, the WS-Trust STS endpoint:
SSLClientCert
SSLClientCertType
SSLClientCertSubject
SSLClientCertPassword
Below is an example connection string:
User=username;Password=password;Server=example.us-west-2.redshift.amazonaws.com;Database=your_database;UseSSL=false;"
CREATE IDENTITY PROVIDER oauth_standard TYPE azureNAMESPACE 'mynamespace'PARAMETERS '{"issuer":"https://sts.windows.net/your_tenant_here/","client_id":"YourClientId","client_secret":"YourClientSecret","audience":["your_application_id_uri_here"]}'
create role "mynamespace:myazuregroup";
grant select on all tables in
schema public
to role "mynamespace:myazuregroup";
AuthScheme=Basic;User=user;Password=password;Server=example.us-west-2.redshift.amazonaws.com;Database=your_database;
AuthScheme=IAMCredentials;Server=example.us-west-2.redshift.amazonaws.com;Database=your_database;User=your_user;AWSAccessKey=your_access_key;AWSSecretKey=your_secretkey;
AuthScheme=ADFS;User=username;Password=password;SSOLoginURL='https://sts.company.com';
Server=redshift-cluster-1.xxxxxxxxxxxx.us-east-1.redshift.amazonaws.com;Database=dev;Port=5439;UseSSL=true;SSLServerCert=*;AuthScheme=PingFederate;AutoCreate=TRUE;SSOLoginURL=https://mycustomserver.com:9033/idp/sts.wst;SSOExchangeUrl=https://us-east-1.signin.aws.amazon.com/platform/saml/acs/764ef411-xxxxxx;User=admin;Password=PassValue;AWSRegion=NORTHERNVIRGINIA;