Configuración de la autenticación y SSL - Amazon Redshift

Configuración de la autenticación y SSL

Con el fin de proteger los datos contra accesos no autorizados, los almacenes de datos de Amazon Redshift requieren la autenticación de todas las conexiones mediante credenciales de usuario. Algunos almacenes de datos también requieren que las conexiones se realicen a través del protocolo de capa de conexión segura (SSL), ya sea con autenticación unidireccional o sin ella.

El controlador JDBC Versión 2.1 de Amazon Redshift proporciona compatibilidad total con estos protocolos de autenticación.

La versión de SSL que admite el controlador depende de la versión de JVM que se utilice. Para obtener información acerca de las versiones de SSL compatibles con cada versión de Java, consulte Diagnóstico de TLS, SSL y HTTPS en el Blog de Administración de productos de Java Platform Group.

La versión de SSL utilizada para la conexión es la versión más alta que admiten tanto el controlador como el servidor, la cual se determina en el momento de la conexión.

Configure el controlador JDBC de Amazon Redshift versión 2.1 para autenticar la conexión de acuerdo con los requisitos de seguridad del servidor de Redshift al que se está conectando.

Para autenticar la conexión, proporcione siempre su nombre de usuario y contraseña de Redshift. En función de si SSL está habilitado y requerido en el servidor, es posible que también necesite configurar el controlador para que se conecte a través de SSL. También podría utilizar la autenticación SSL unidireccional para que el cliente (el propio controlador) verifique la identidad del servidor.

Debe proporcionar la información de configuración al controlador en la URL de conexión. Para obtener más información acerca de la sintaxis de la URL de conexión, consulte Creación de la URL de conexión.

SSL referencia TLS o SSL, es decir, Transport Layer Security y capa de conexión segura, respectivamente. El controlador es compatible con las versiones estándar del sector de TLS o SSL.

Uso del nombre de usuario y la contraseña únicamente

Si el servidor al que se conecta no utiliza SSL, solo tendrá que proporcionar su nombre de usuario de Redshift y contraseña para autenticar la conexión.

Para configurar la autenticación mediante su nombre de usuario de Redshift y contraseña únicamente
  1. Establezca la propiedad UID a su nombre de usuario de Redshift para obtener acceso al servidor de Amazon Redshift.

  2. Establezca la propiedad PWD a la contraseña correspondiente a su nombre de usuario de Redshift.

Uso de SSL sin verificación de identidad

Si el servidor al que se conecta utiliza SSL pero no requiere verificación de identidad, entonces se puede configurar el controlador para que use una fábrica de SSL sin validación.

Para configurar una conexión SSL sin verificación de identidad
  1. Establezca la propiedad UID a su nombre de usuario de Redshift para obtener acceso al servidor de Amazon Redshift.

  2. Establezca la propiedad PWD a la contraseña correspondiente a su nombre de usuario de Redshift.

  3. Establezca la propiedad SSLFactory en com.amazon.redshift.ssl.NonValidatingFactory.

Uso de la autenticación SSL unidireccional

Si el servidor al que se conecta utiliza SSL y dispone de un certificado, entonces se puede configurar el controlador de modo que verifique la identidad del servidor mediante una autenticación unidireccional.

La autenticación unidireccional requiere un certificado SSL firmado y de confianza que permita verificar la identidad del servidor. Se puede configurar el controlador para que utilice un certificado específico u obtenga acceso a un TrustStore que contenga el certificado pertinente. Si no se especifica un certificado o TrustStore, el controlador utiliza el TrustStore de Java predeterminado (por lo general, jssecacerts o cacerts).

Para configurar la autenticación SSL unidireccional
  1. Establezca la propiedad UID a su nombre de usuario de Redshift para obtener acceso al servidor de Amazon Redshift.

  2. Establezca la propiedad PWD a la contraseña correspondiente a su nombre de usuario de Redshift.

  3. Establezca la propiedad SSL en “true” (verdadera).

  4. Establezca la propiedad SSLRootCert en la ubicación del certificado de entidad de certificación raíz.

  5. Si no utiliza uno de los TrustStores de Java predeterminados, realice una de las siguientes acciones:

    • Si desea especificar un certificado de servidor, establezca la propiedad SSLRootCert en la ruta completa del certificado.

    • Para especificar un TrustStore, realice lo siguiente:

      1. Utilice el programa keytool para agregar el certificado del servidor al TrustStore que desea usar.

      2. Especifique el TrustStore y la contraseña que se utilizará cuando se inicie la aplicación Java con el controlador. Por ejemplo:

        -Djavax.net.ssl.trustStore=[TrustStoreName] -Djavax.net.ssl.trustStorePassword=[TrustStorePassword] -Djavax.net.ssl.trustStoreType=[TrustStoreType]
  6. Elija una:

    • Para validar el certificado, establezca la propiedad SSLMode en verify-ca.

    • Para validar el certificado y verificar el nombre de alojamiento que aparece en él, establezca la propiedad SSLMode en verify-full.

Configuración de la autenticación de IAM

Si se conecta a un servidor de Amazon Redshift mediante la autenticación de IAM, establezca las siguientes propiedades como parte de la cadena de conexión del origen de datos.

Para obtener más información acerca de la autenticación de IAM, consulte Administración de identidades y accesos en Amazon Redshift.

Para usar la autenticación de IAM, utilice uno de los siguientes formatos de cadena de conexión:

Cadena de conexión Descripción

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

Una cadena de conexión normal. El controlador infiere el ClusterID y la región del alojamiento.

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

A partir del ClusterID y de la región, el controlador recupera la información del alojamiento.

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

El controlador utiliza el puerto 5439 de forma predeterminada e infiere el ClusterID y la región del alojamiento. Según el puerto que haya seleccionado al crear, modificar o migrar el clúster, se permitirá el acceso al puerto seleccionado.

Especificación de perfiles

Si utiliza la autenticación de IAM, puede especificar cualquier otra propiedad de conexión necesaria u opcional en un nombre de perfil. De este modo, puede evitar incluir determinada información directamente en la cadena de conexión. El nombre del perfil se especifica en la cadena de conexión mediante la propiedad Profile (Perfil).

Se pueden agregar perfiles al archivo de credenciales de AWS. La ubicación predeterminada de este archivo es ~/.aws/credentials

Puede cambiar el valor predeterminado si configura la ruta en la siguiente variable de entorno: AWS_CREDENTIAL_PROFILES_FILE

Para obtener más información acerca de los perfiles, consulte Uso de las credenciales de AWS en la AWS SDK for Java.

Uso de credenciales del perfil de instancias

Si ejecuta una aplicación en una instancia de Amazon EC2 que está asociada a un rol de IAM, puede conectarse mediante las credenciales del perfil de instancias.

Para ello, utilice uno de los formatos de cadena de conexión de IAM que figuran en la tabla precedente y establezca la propiedad de conexión dbuser en el nombre de usuario de Amazon Redshift al que se conectará.

Para obtener más información acerca de los perfiles de instancias, consulte Administración de accesos en la Guía del usuario de IAM.

Uso de proveedores de credenciales

Además, el controlador es compatible con los complementos de proveedores de credenciales correspondientes a los siguientes servicios:

  • Active Directory Federation Service (ADFS)

  • Servicio de JSON Web Tokens (JWT)

  • Servicio de Microsoft Azure Active Directory (AD) y navegador del servicio de Microsoft Azure Active Directory (AD)

  • Servicio de Okta

  • Servicio de PingFederate

  • Navegador de SAML para servicios de SAML, tales como Okta, Ping o ADFS

Si utiliza uno de estos servicios, la URL de conexión debe especificar las siguientes propiedades:

  • Plugin_Name: la ruta de clase completa para la clase de complemento del proveedor de credenciales.

  • IdP_Host: el alojamiento del servicio que se utiliza para la autenticación en Amazon Redshift.

  • IdP_Port: el puerto en el que se atiende el alojamiento para el servicio de autenticación. No es necesario para el caso de Okta.

  • Usuario: el nombre de usuario para el servidor idp_host.

  • Contraseña: la contraseña asociada al nombre de usuario idp_host.

  • DbUser: el nombre de usuario de Amazon Redshift con el cual se conecta.

  • SSL_insecure: indica si se debe verificar el certificado del servidor IDP.

  • client_id: el ID de cliente asociado al nombre de usuario en el portal de Azure AD. Se usa únicamente para Azure AD.

  • Client_Secret: el secreto del cliente asociado al ID del cliente en el portal de Azure AD. Se usa únicamente para Azure AD.

  • IdP_Tenant: el ID de inquilino de Azure AD para su aplicación de Amazon Redshift. Se usa únicamente para Azure AD.

  • App_ID: el ID de la aplicación Okta para su aplicación de Amazon Redshift. Se usa únicamente para Okta.

  • App_Name: el nombre de la aplicación Okta opcional para su aplicación de Amazon Redshift. Se usa únicamente para Okta.

  • Partner_SPID: el valor opcional del SPID (ID del proveedor de servicios) del socio. Se usa únicamente para PingFederate.

Si utiliza un complemento del navegador para uno de estos servicios, la URL de conexión también puede incluir lo siguiente:

  • Login_URL: la dirección URL del recurso en el sitio web del proveedor de identidad cuando se utiliza el lenguaje de marcado para confirmaciones de seguridad (SAML) o los servicios Azure AD a través de un complemento del navegador. Este parámetro es obligatorio si utiliza un complemento del navegador.

  • Listen_Port: el puerto que utiliza el controlador para obtener la respuesta SAML del proveedor de identidad cuando se usan los servicios SAML o Azure AD a través de un complemento del navegador.

  • IdP_Response_Timeout: la cantidad de tiempo, en segundos, que espera el controlador para obtener la respuesta SAML del proveedor de identidad cuando se usan los servicios SAML o Azure AD a través de un complemento del navegador.

Para obtener más información acerca de las propiedades adicionales de la cadena de conexión, consulte Opciones de configuración del controlador JDBC versión 2.1.