認証と SSL の設定 - Amazon Redshift

認証と SSL の設定

不正なアクセスからデータを保護するために、Amazon Redshift データストアでは、すべての接続をユーザー認証情報を使用して認証する必要があります。一部のデータストアでは、一方向認証の有無にかかわらず、Secure Sockets Layer (SSL) プロトコル経由で接続を確立する必要があります。

Amazon Redshift JDBC ドライバーのバージョン 2.1 では、これらの認証プロトコルが完全にサポートされています。

ドライバーがサポートする SSL バージョンは、使用している JVM のバージョンによって異なります。Java の各バージョンでサポートされている SSL バージョンの詳細については、Java プラットフォームグループの製品管理ブログから [TLS、SSL、および HTTPS の診断]を参照してください。

接続に使用される SSL バージョンは、ドライバーとサーバーの両方でサポートされている最も高いバージョンであり、接続時に決定されます。

接続先の Amazon Redshift サーバーのセキュリティ要件に従って接続を認証するように、Redshift JDBC ドライバーバージョン 2.1 を設定します。

接続を認証するには、常に Redshift ユーザー名とパスワードを入力する必要があります。SSL が有効で、サーバー上で必要であるかどうかに応じて、SSL 経由で接続するようにドライバーを設定する必要もあります。または、クライアント (ドライバー自体) がサーバーの身元を確認するために、一方向の SSL 認証を使用する場合もあります。

接続 URL でドライバーに構成情報を提供します。接続 URL の構文の詳細については、接続 URL の構築を参照してください。

SSL は、Transport Layer Security と Secure Sockets Layer の両方の TLS/SSL を示します。このドライバーは、業界標準バージョンの TLS/SSL をサポートしています。

ユーザー名とパスワードのみを使用する

接続先のサーバーが SSL を使用しない場合は、Redshift ユーザー名とパスワードのみを入力して接続を認証できます。

Redshift ユーザー名とパスワードのみを使用して認証を設定するには
  1. UID プロパティを Redshift サーバーにアクセスするためのユーザー名に設定します。

  2. PWD プロパティを Redshift ユーザー名に対応するパスワードに設定します。

本人確認なしで SSL を使用する

接続しているサーバーが SSL を使用していて、ID 検証を必要としない場合には、検証されていない SSL ファクトリを使用するようにドライバーを設定できます。

本人確認を行わずに SSL 接続を構成するには
  1. UID プロパティを Amazon Redshift サーバーにアクセスするための Redshift ユーザー名に設定します。

  2. PWD プロパティを Redshift ユーザー名に対応するパスワードに設定します。

  3. SSLFactory プロパティを com.amazon.redshift.ssl.NonValidatingFactory に設定します。

一方向 SSL 認証の使用

接続しているサーバーが SSL を使用し、証明書がある場合は、一方向認証を使用してサーバーの ID を検証するようにドライバーを構成できます。

一方向認証では、サーバーの ID を検証するために、署名された信頼できる SSL 証明書が必要です。特定の証明書を使用するようにドライバーを構成するか、適切な証明書を含む TrustStore にアクセスするようにドライバーを構成することができます。証明書または TrustStore を指定しない場合、ドライバーは、デフォルトの Java TrustStore (通常は jssecacerts または cacerts ) を使用します。

一方向 SSL 認証を構成するには
  1. UID プロパティを Amazon Redshift サーバーにアクセスするための Redshift ユーザー名に設定します。

  2. PWD プロパティを Redshift ユーザー名に対応するパスワードに設定します。

  3. SSL プロパティを true に設定します。

  4. SSLRootCert プロパティを、ルート CA 証明書がある場所に設定します。

  5. デフォルトの Java TrustStores のいずれかを使用していない場合は、次のいずれかの操作を行います。

    • サーバー証明書を指定するには、SSLRootCert プロパティを証明書のフルパスに設定します。

    • TrustStore を指定するには、以下の操作を行います。

      1. keytool プログラムを使用して、使用する TrustStore にサーバー証明書を追加します。

      2. ドライバーを使用して Java アプリケーションを起動するときに使用する TrustStore とパスワードを指定します。次に例を示します。

        -Djavax.net.ssl.trustStore=[TrustStoreName] -Djavax.net.ssl.trustStorePassword=[TrustStorePassword] -Djavax.net.ssl.trustStoreType=[TrustStoreType]
  6. 1 つを選択してください。

    • 証明書を検証するには、SSLMode プロパティを verify-ca に設定します。

    • 証明書を検証し、証明書のホスト名を検証するには、SSLMode プロパティに verify-full を設定します。

IAM 認証の設定

IAM 認証を使用して Amazon Redshift サーバーに接続する場合は、データソース接続文字列の一部として次のプロパティを設定します。

IAM 認証の詳細については、「Amazon Redshift での Identity and Access Management」 を参照してください。

IAM 認証を使用するには、以下のいずれかの接続文字列形式を使用します。

接続文字列 説明

jdbc:redshift:iam:// [host]:[port]/[db]

通常の接続文字列。ドライバーは、ホストから ClusterID とリージョンを推測します。

jdbc:redshift:iam:// [cluster-id]: [region]/[db]

ドライバーは、ClusterID とリージョンを指定して、ホストの情報を取得します。

jdbc:redshift:iam:// [host]/[db]

デフォルトでドライバーはポート 5439 に設定され、ホストから ClusterID とリージョンを推測します。クラスターの作成、変更、または移行時に選択したポートに応じて、選択したポートへのアクセスを許可します。

プロファイルの指定

IAM 認証を使用している場合は、プロファイル名の下で、必須またはオプションの追加接続プロパティを指定できます。これにより、接続文字列に特定の情報を直接入力することを回避できます。プロファイルのプロパティを使用して、接続文字列でプロファイル名を指定します。

プロファイルは AWS 認証情報ファイルに追加できます。このファイルのデフォルトの場所は、~/.aws/credentialsです。

次の環境変数 AWS_CREDENTIAL_PROFILES_FILE でパスを設定することにより、デフォルト値を変更できます。

プロファイルの詳細については、AWS SDK for Javaの「Working with AWS Credentials」を参照してください。

インスタンスプロファイルの認証情報の使用

IAM ロールに関連付けられている Amazon EC2 インスタンスでアプリケーションを実行している場合は、インスタンスプロファイルの認証情報を使用して接続することができます。

これを行うには、前のテーブルで IAM 接続文字列形式のいずれかを使用し、dbuser 接続プロパティを、接続先の Amazon Redshift ユーザー名に設定します。

インスタンスプロファイルの詳細については、IAM ユーザーガイドの「アクセス管理」を参照してください。

認証情報プロバイダーの使用

ドライバーは、次のサービスからの認証情報プロバイダーのプラグインもサポートします。

  • Active Directory フェデレーションサービス (ADFS)

  • JSON ウェブトークン (JWT) サービス

  • Microsoft Azure アクティブディレクトリ (AD) サービスと Browser Microsoft Azure Active Directory (AD) サービス

  • Okta サービス

  • PingFederate サービス

  • Okta、Ping、ADFS などの SAML サービス用のブラウザ SAML

これらのサービスのいずれかを使用する場合は、接続 URL で次のプロパティを指定する必要があります。

  • Plugin_Name – 認証情報プロバイダーのプラグインクラスの完全修飾クラスパスです。

  • IdP_Host: – Amazon Redshift による認証に使用しているサービスのホストです。

  • IdP_Port – 認証サービスのホストがリッスンするポートです。Okta には必要ありません。

  • ユーザー – idp_host サーバーのユーザー名です。

  • パスワード – idp_host ユーザー名に関連付けられたパスワードです。

  • DbUser – 接続している Amazon Redshift ユーザー名。

  • SSL_Insecure – IDP サーバー証明書を検証する必要があるかどうかを示します。

  • Client_ID – Azure AD ポータルのユーザー名に関連付けられているクライアント ID です。Azure AD にのみ使用されます。

  • Client_Secret – Azure AD ポータルのクライアント ID に関連付けられたクライアントシークレットです。Azure AD にのみ使用されます。

  • IdP_Tenant – Amazon Redshift アプリケーションの Azure AD テナント ID です。Azure AD にのみ使用されます。

  • App_ID – Amazon Redshift アプリケーションの Okta アプリケーション ID です。Okta にのみ使用されます。

  • App_Name – Amazon Redshift アプリケーションのオプションの Okta アプリケーション名です。Okta にのみ使用されます。

  • Partner_SPID – オプションのパートナー SPID (サービスプロバイダー ID) 値です。PingFederate にのみ使用されます。

これらのサービスのいずれかにブラウザプラグインを使用している場合は、接続 URL に以下を含めることもできます。

  • Login_URL – ブラウザのプラグインを介して Security Assertion Markup Language (SAML) または Azure AD サービスを使用するための、ID プロバイダーのウェブサイト上のリソース URL です。このパラメータは、ブラウザプラグインを使用している場合に必要です。

  • Listen_Port – ブラウザのプラグインを介して SAML または Azure AD サービスを使用する場合に、ID プロバイダーから SAML 応答を取得するためにドライバーが使用するポートです。

  • IdP_Response_Timeout – ブラウザのプラグインを介して SAML または Azure AD サービスを使用する場合に、ドライバーが ID プロバイダーからの SAML 応答を待機する時間 (秒単位) です。

追加された接続文字列のプロパティの詳細については、JDBC ドライバーバージョン 2.1 の設定オプションを参照してください。