Babelfish를 사용하는 Kerberos 인증 - Amazon Aurora

Babelfish를 사용하는 Kerberos 인증

Babelfish for Aurora PostgreSQL 15.2 버전은 Kerberos를 사용하여 DB 클러스터에 대한 인증을 지원합니다. 이 방법은 사용자가 Babelfish 데이터베이스에 접속하려고 할 때 Windows 인증을 사용하여 사용자를 인증할 수 있도록 합니다. 이를 위해서는 먼저 Kerberos 인증을 위한 AWS Directory Service for Microsoft Active Directory를 사용하도록 DB 클러스터를 구성해야 합니다. 자세한 내용은 AWS Directory Service 관리 가이드AWS Directory Service란 무엇입니까?를 참조하세요.

Kerberos 인증 설정

Babelfish for Aurora PostgreSQL DB 클러스터는 서로 다른 두 개의 포트를 사용하여 연결할 수 있지만 Kerberos 인증 설정은 한 번만 수행하면 됩니다. 따라서 먼저 DB 클러스터에 대한 Kerberos 인증을 설정해야 합니다. 자세한 내용은 Kerberos 인증 설정을 참조하세요. 설정을 완료한 후에는 Kerberos를 사용하여 PostgreSQL 클라이언트에 연결할 수 있는지 확인합니다. 자세한 내용은 Kerberos 인증을 사용하여 연결을 참조하세요.

Babelfish의 로그인 및 사용자 프로비저닝

Tabular Data Stream(TDS) 포트에서 생성된 Windows 로그인은 TDS 포트 또는 PostgreSQL 포트와 함께 사용할 수 있습니다. 먼저 인증에 Kerberos를 사용할 수 있는 로그인이 T-SQL 사용자 및 애플리케이션이 Babelfish 데이터베이스에 연결하는 데 사용되기 전에 TDS 포트에서 프로비저닝되어야 합니다. Windows 로그인을 생성할 경우 관리자는 DNS 도메인 이름 또는 NetBIOS 도메인 이름을 사용하여 로그인을 제공할 수 있습니다. 일반적으로 NetBIOS 도메인은 DNS 도메인 이름의 하위 도메인입니다. 예를 들어 DNS 도메인 이름이 CORP.EXAMPLE.COM인 경우 NetBIOS 도메인은 CORP일 수 있습니다. 로그인을 위해 NetBIOS 도메인 이름 형식을 제공할 경우 DNS 도메인 이름에 대한 매핑이 있어야 합니다.

DNS 도메인 이름 매핑에 대한 NetBIOS 도메인 이름 관리

NetBIOS 도메인 이름과 DNS 도메인 이름 간의 매핑을 관리하기 위해 Babelfish는 매핑을 추가, 제거, 잘라내기할 수 있는 시스템 저장 프로시저를 제공합니다. sysadmin 역할이 있는 사용자만 이러한 프로시저를 실행할 수 있습니다.

NetBIOS와 DNS 도메인 이름 간에 매핑을 생성하려면 Babelfish에서 제공하는 시스템 저장 프로시저인 babelfish_add_domain_mapping_entry를 사용하세요. 두 인수 모두 유효한 값이 있어야 하고 NULL이 아니어야 합니다.

EXEC babelfish_add_domain_mapping_entry 'netbios_domain_name', 'fully_qualified_domain_name'

다음 예제에서는 NetBIOS 이름인 CORP와 DNS 도메인 이름인 CORP.EXAMPLE.COM 간에 매핑을 생성하는 방법을 보여 줍니다.

EXEC babelfish_add_domain_mapping_entry 'corp', 'corp.example.com'

기존 매핑 항목을 삭제하려면 시스템 저장 프로시저 babelfish_remove_domain_mapping_entry를 사용하세요.

EXEC babelfish_remove_domain_mapping_entry 'netbios_domain_name'

다음 예제는 NetBIOS 이름인 CORP에 대한 매핑을 제거하는 방법을 보여 줍니다.

EXEC babelfish_remove_domain_mapping_entry 'corp'

기존 매핑 항목을 제거하려면 시스템 저장 프로시저 babelfish_truncate_domain_mapping_table을 사용하세요.

EXEC babelfish_truncate_domain_mapping_table

NetBIOS와 DNS 도메인 이름 간의 모든 매핑을 보려면 다음 쿼리를 사용합니다.

SELECT netbios_domain_name, fq_domain_name FROM babelfish_domain_mapping;

로그인 관리

로그인 생성

올바른 권한이 있는 로그인을 사용하여 TDS 엔드포인트를 통해 DB에 연결합니다. 로그인을 위해 생성된 데이터베이스 사용자가 없는 경우 로그인은 게스트 사용자에게 매핑됩니다. 게스트 사용자가 활성화되지 않은 경우 로그인 시도가 실패합니다.

다음 쿼리를 사용하여 Windows 로그인을 생성합니다. 이 FROM WINDOWS 옵션을 사용하면 Active Directory를 사용하여 인증할 수 있습니다.

CREATE LOGIN login_name FROM WINDOWS [WITH DEFAULT_DATABASE=database]

다음 예시에서는 기본 데이터베이스인 db1을 사용하여 Active Directory 사용자 [corp\ test1]에 대한 로그인을 생성하는 방법을 보여줍니다.

CREATE LOGIN [corp\test1] FROM WINDOWS WITH DEFAULT_DATABASE=db1

이 예시에서는 NetBIOS 도메인인 CORP와 DNS 도메인 이름인 CORP.EXAMPLE.COM 간에 매핑이 있다고 가정합니다. 매핑이 없는 경우 DNS 도메인 이름 [CORP.EXAMPLE.COM\test1]을 제공해야 합니다.

참고

Active Directory 사용자를 기준으로 한 로그인은 21자 미만의 이름으로 제한됩니다.

로그인 삭제

로그인을 삭제하려면 다음 예시에 나온 것처럼 로그인에 사용된 것과 동일한 구문을 사용하세요.

DROP LOGIN [DNS domain name\login]
로그인 변경

로그인을 변경하려면 다음 예시에 나온 것처럼 로그인에 사용된 것과 동일한 구문을 사용하세요.

ALTER LOGIN [DNS domain name\login] { ENABLE|DISABLE|WITH DEFAULT_DATABASE=[master] }

ALTER LOGIN 명령은 다음을 포함하여 Windows 로그인을 위한 제한된 옵션을 지원합니다.

  • DISABLE - 로그인을 비활성화합니다. 비활성화된 로그인은 인증에 사용할 수 없습니다.

  • ENABLE - 비활성화된 로그인을 활성화합니다.

  • DEFAULT_DATABASE - 로그인의 기본 데이터베이스를 변경합니다.

참고

모든 암호 관리는 AWS Directory Service를 통해 수행되므로, ALTER LOGIN 명령을 사용해도 데이터베이스 관리자는 Windows 로그인에 대한 암호를 변경하거나 설정할 수 없습니다.

Kerberos 인증을 사용하여 Babelfish for Aurora PostgreSQL에 연결

일반적으로 Kerberos를 사용하여 인증하는 데이터베이스 사용자는 클라이언트 시스템에서 인증을 수행합니다. 이러한 시스템은 Active Directory 도메인의 멤버입니다. 이들은 클라이언트 애플리케이션에서 Windows 인증을 사용하여 TDS 포트의 Babelfish for Aurora PostgreSQL 서버에 액세스합니다.

Kerberos 인증을 사용하여 PostgreSQL 포트에서 Babelfish for Aurora PostgreSQL에 연결

TDS 포트에서 생성된 로그인은 TDS 포트 또는 PostgreSQL 포트와 함께 사용할 수 있습니다. 그러나 PostgreSQL은 기본적으로 사용자 이름에 대소문자를 구분하는 비교를 사용합니다. Aurora PostgreSQL이 Kerberos 사용자 이름을 대소문자를 구분하지 않는 것으로 해석하려면 사용자 지정 Babelfish 클러스터 파라미터 그룹에서 krb_caseins_users 파라미터를 true로 설정해야 합니다. 이 파라미터는 기본적으로 false로 설정되어 있습니다. 자세한 내용은 대소문자를 구분하지 않는 사용자 이름 구성을 참조하세요. 또한 PostgreSQL 클라이언트 애플리케이션에서 <login@DNS 도메인 이름> 형식으로 로그인 사용자 이름을 지정해야 합니다. <DNS 도메인 이름\login> 형식은 사용할 수 없습니다.

자주 발생하는 오류

온프레미스 Microsoft Active Directory와 AWS Managed Microsoft AD 간에 포리스트 트러스트 관계를 설정할 수 있습니다. 자세한 내용은 신뢰 관계 생성을 참조하세요. 그런 다음, 호스트 엔드포인트에서 Amazon 도메인 rds.amazonaws.com을 사용하는 대신 특수 도메인별 엔드포인트를 사용하여 연결해야 합니다. 올바른 도메인별 엔드포인트를 사용하지 않으면 다음과 같은 오류가 발생할 수 있습니다.

Error: “Authentication method "NTLMSSP" not supported (Microsoft SQL Server, Error: 514)"

이 오류는 제공된 엔드포인트 URL에 대한 서비스 티켓을 TDS 클라이언트가 캐싱할 수 없을 때 발생합니다. 자세한 내용은 Kerbero를 사용하여 연결을 참조하세요.