인증 및 SSL 구성 - Amazon Redshift

인증 및 SSL 구성

무단 액세스로부터 데이터를 보호하기 위해 Amazon Redshift 데이터 스토어는 사용자 자격 증명을 사용하여 모든 연결을 인증할 것을 요구합니다. 또한 일부 데이터 스토어는 단방향 인증 여부에 관계없이 보안 소켓 계층(SSL) 프로토콜을 통한 연결을 요구합니다.

Amazon Redshift JDBC 드라이버 버전 2.1은 이러한 인증 프로토콜을 완벽하게 지원합니다.

드라이버에서 지원하는 SSL 버전은 사용 중인 JVM 버전에 따라 다릅니다. 각 Java 버전에서 지원하는 SSL 버전에 대한 자세한 내용은 Java Platform Group Product Management Blog의 Diagnosing TLS, SSL, and HTTPS를 참조하세요.

연결에 사용되는 SSL 버전은 드라이버와 서버 모두에서 지원하는 가장 높은 버전으로 연결 시 결정됩니다.

연결하려는 Amazon Redshift 서버의 보안 요구 사항에 따라 연결을 인증하도록 Redshift JDBC 드라이버 버전 2.1을 구성합니다.

연결을 인증하려면 항상 Redshift 사용자 이름과 암호를 제공해야 합니다. 서버에서 SSL 활성화 및 필요 여부에 따라 SSL을 통해 연결하도록 드라이버를 구성해야 할 수도 있습니다. 또는 단방향 SSL 인증을 사용하여 클라이언트(드라이버 자체)가 서버의 ID를 확인하도록 할 수 있습니다.

연결 URL에서 드라이버에 구성 정보를 제공합니다. 연결 URL의 구문에 대한 자세한 내용은 연결 URL 구축 섹션을 참조하세요.

SSL은 전송 계층 보안과 보안 소켓 계층(TLS/SSL)을 나타냅니다. 이 드라이버는 TLS/SSL의 업계 표준 버전을 지원합니다.

사용자 이름 및 암호만 사용

연결하려는 서버가 SSL을 사용하지 않는 경우 연결을 인증하기 위해 Redshift 사용자 이름과 암호만 제공하면 됩니다.

Redshift 사용자 이름 및 암호만 사용하여 인증을 구성하려면
  1. UID 속성을 Amazon Redshift 서버 액세스를 위한 Redshift 사용자 이름으로 설정합니다.

  2. PWD 속성을 Redshift 사용자 이름에 해당하는 암호로 설정합니다.

자격 증명 확인 없이 SSL 사용

연결 중인 서버에서 SSL을 사용하지만 자격 증명 확인이 필요하지 않은 경우 비검증 SSL 팩토리를 사용하도록 드라이버를 구성할 수 있습니다.

자격 증명 확인 없이 SSL 연결을 구성하려면
  1. UID 속성을 Amazon Redshift 서버 액세스를 위한 Redshift 사용자 이름으로 설정합니다.

  2. PWD 속성을 Redshift 사용자 이름에 해당하는 암호로 설정합니다.

  3. SSLFactory 속성 com.amazon.redshift.ssl.NonValidatingFactory로 설정합니다.

단방향 SSL 인증 사용

연결하려는 서버가 SSL을 사용하고 인증서가 있는 경우 단방향 인증을 사용하여 서버의 자격 증명을 확인하도록 드라이버를 구성할 수 있습니다.

단방향 인증에는 서버의 자격 증명 확인을 위한 서명된 신뢰할 수 있는 SSL 인증서가 필요합니다. 특정 인증서를 사용하거나 적절한 인증서가 들어 있는 TrustStore에 액세스하도록 드라이버를 구성할 수 있습니다. 인증서 또는 TrustStore를 지정하지 않으면 드라이버가 기본 Java TrustStore(일반적으로 jssecacerts 또는 cacerts)를 사용합니다.

단방향 SSL 인증을 구성하려면
  1. UID 속성을 Amazon Redshift 서버 액세스를 위한 Redshift 사용자 이름으로 설정합니다.

  2. PWD 속성을 Redshift 사용자 이름에 해당하는 암호로 설정합니다.

  3. SSL 속성을 true로 설정합니다.

  4. SSLRootCert 속성을 루트 CA 인증서의 위치로 설정합니다.

  5. 기본 Java TrustStore 중 하나를 사용하지 않는 경우 다음 중 하나를 수행합니다.

    • 서버 인증서를 지정하려면 SSLRootCert 속성을 인증서의 전체 경로로 설정합니다.

    • TrustStore를 지정하려면 다음을 수행합니다.

      1. keytool 프로그램으로 사용하려는 TrustStore에 서버 인증서를 추가합니다.

      2. 드라이버를 사용하여 Java 애플리케이션을 시작할 때 사용할 TrustStore와 암호를 지정합니다. 예:

        -Djavax.net.ssl.trustStore=[TrustStoreName] -Djavax.net.ssl.trustStorePassword=[TrustStorePassword] -Djavax.net.ssl.trustStoreType=[TrustStoreType]
  6. 그중 하나의 경로를 선택하세요.

    • 인증서를 검증하려면 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 인증을 사용하는 경우 프로파일 이름 아래에 필수 또는 선택적 연결 속성을 추가로 지정할 수 있습니다. 이를 통해 연결 문자열에 특정 정보를 직접 넣는 것을 피할 수 있습니다. Profile 속성을 사용하여 연결 문자열에 프로파일 이름을 지정합니다.

AWS 자격 증명 파일에 프로파일을 추가할 수 있습니다. 이 파일의 기본 위치는 ~/.aws/credentials입니다.

환경 변수 AWS_CREDENTIAL_PROFILES_FILE에 경로를 설정하여 기본값을 변경할 수 있습니다.

프로파일에 대한 자세한 내용은 AWS SDK for JavaAWS 자격 증명 작업 섹션을 참조하세요.

인스턴스 프로파일 자격 증명 사용

IAM 역할과 연결된 Amazon EC2 인스턴스에서 애플리케이션을 실행하는 경우 인스턴스 프로파일 자격 증명을 사용하여 연결할 수 있습니다.

이렇게 하려면 앞의 표에 나와 있는 IAM 연결 문자열 형식 중 하나를 사용하고 dbuser 연결에 사용하는 Amazon Redshift 사용자 이름으로 dbuser 연결 속성을 설정합니다.

인스턴스 프로파일에 대한 자세한 내용은 IAM User GuideAccess Management 섹션을 참조하세요.

자격 증명 공급자 사용

드라이버에서 다음 서비스의 자격 증명 공급자 플러그인도 지원합니다.

  • Active Directory Federation Service(ADFS)

  • JSON 웹 토큰(JWT) 서비스

  • Microsoft Azure Active Directory(AD) 서비스 및 브라우저

  • Okta 서비스

  • PingFederate 서비스

  • Okta, Ping, ADFS 등의 SAML 서비스용 브라우저 SAML

이러한 서비스 중 하나를 사용하는 경우 연결 URL에서 다음 속성을 지정해야 합니다.

  • Plugin_Name – 자격 증명 공급자 플러그인 클래스의 정규화된 클래스 경로입니다.

  • IdP_Host: – Amazon Redshift에 인증하는 데 사용하는 서비스의 호스트입니다.

  • IdP_Port – 인증 서비스의 호스트가 수신 대기하는 포트입니다. Okta에는 필요하지 않습니다.

  • User – idp_host 서버의 사용자 이름입니다.

  • Password – 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 – 브라우저 플러그인을 통해 SAML(Security Assertion Markup Language) 또는 Azure AD 서비스를 사용할 때 자격 증명 공급자의 웹 사이트에 있는 리소스의 URL입니다. 브라우저 플러그인을 사용하는 경우 이 파라미터는 필수입니다.

  • Listen_Port – 브라우저 플러그인을 통해 SAML 또는 Azure AD 서비스를 사용할 때 드라이버가 자격 증명 공급자로부터 SAML 응답을 가져오는 데 사용하는 포트입니다.

  • IdP_Response_Timeout – 브라우저 플러그인을 통해 SAML 또는 Azure AD 서비스를 사용할 때 드라이버가 자격 증명 공급자의 SAML 응답을 기다리는 시간(초)입니다.

추가 연결 문자열 속성에 대한 자세한 내용은 JDBC 드라이버 버전 2.1 구성 옵션 섹션을 참조하세요.