SQL Server DB 인스턴스에 대한 Windows 인증 설정 - Amazon Relational Database Service

SQL Server DB 인스턴스에 대한 Windows 인증 설정

AWS Directory Service for Microsoft Active Directory라고도 하는 AWS Managed Microsoft AD를 사용하여 SQL Server DB 인스턴스의 Windows 인증을 설정합니다. Windows 인증을 설정하려면 다음 단계를 수행합니다.

1단계: AWS Directory Service for Microsoft Active Directory를 사용하여 디렉터리 만들기

AWS Directory Service는 AWS 클라우드에 완전관리형 Microsoft Active Directory를 만듭니다. AWS Managed Microsoft AD 디렉터리를 생성할 때 AWS Directory Service에서 두 개의 도메인 컨트롤러 및 Domain Name System(DNS) 서버가 자동으로 생성됩니다. 디렉터리 서버는 VPC 내 가용 영역 두 곳에 있는 두 개의 서브넷에서 생성됩니다. 이러한 중복은 장애가 발생해도 디렉터리에 액세스할 수 있도록 보장하는 데 도움이 됩니다.

AWS Managed Microsoft AD 디렉터리를 생성하는 경우 AWS Directory Service에서 다음 작업이 자동으로 수행됩니다.

  • VPC 내에서 Microsoft Active Directory를 설정합니다.

  • 사용자 이름 Admin과 지정된 암호를 사용하여 디렉터리 관리자 계정을 생성합니다. 이 계정을 사용하여 디렉터리를 관리할 수 있습니다.

  • 디렉터리 컨트롤러에 대한 보안 그룹을 만듭니다.

AWS Directory Service for Microsoft Active Directory를 시작하면 AWS에서 모든 디렉터리의 객체를 포함하는 OU(조직 단위)를 생성합니다. 디렉터리를 만들 때 입력한 NetBIOS 이름을 가진 이 OU는 도메인 루트에 있습니다. 도메인 루트는 AWS에서 소유하고 관리합니다.

AWS Managed Microsoft AD 디렉터리를 사용하여 만든 admin 계정은 OU의 가장 일반적인 관리 활동에 대한 권한을 갖습니다.

  • 사용자, 그룹 및 컴퓨터를 생성, 업데이트 또는 삭제합니다.

  • 도메인(예: 파일 또는 인쇄 서버)에 리소스를 추가한 다음 OU 내의 사용자 및 그룹에 해당 리소스에 대한 권한 할당.

  • 추가 OU 및 컨테이너 생성.

  • 권한 위임.

  • 그룹 정책 생성 및 연결.

  • Active Directory 휴지통에서 삭제된 객체 복원.

  • Active Directory 웹 서비스에서 AD 및 DNS Windows PowerShell 모듈 실행.

또한 admin 계정은 다음 도메인 차원 활동을 수행할 권한이 있습니다.

  • DNS 구성 관리(레코드, 영역 및 전달자 추가, 제거 또는 업데이트)

  • DNS 이벤트 로그 보기

  • 보안 이벤트 로그 보기

AWS Managed Microsoft AD으로 디렉터리를 생성하려면
  1. AWS Directory Service 콘솔 탐색 창에서 디렉터리를 선택한 후 디렉터리 설정을 선택합니다.

  2. 를 선택합니다..AWS Managed Microsoft AD 이것은 현재 Amazon RDS에서 사용하도록 지원되는 유일한 옵션입니다.

  3. 다음을 선택합니다.

  4. 디렉터리 정보 입력 페이지에서 다음 정보를 제공합니다.

    Edition

    요구 사항에 맞는 에디션을 선택합니다.

    디렉터리 DNS 이름

    디렉터리를 위한 정규화된 이름(예: corp.example.com)입니다. 47자를 초과하는 이름은 SQL Server에서 지원되지 않습니다.

    디렉터리 NetBIOS 이름

    디렉터리의 선택적 짧은 이름(예: CORP)입니다.

    디렉터리 설명

    디렉터리에 대한 선택적 설명을 입력합니다.

    관리자 암호

    디렉터리 관리자의 암호입니다. 디렉터리 생성 프로세스에서는 사용자 이름 Admin과 이 암호를 사용하여 관리자 계정을 생성합니다.

    디렉터리 관리자 암호는 admin이라는 단어를 포함할 수 없습니다. 암호는 대소문자를 구분하며 길이가 8~64자 사이여야 합니다. 또한 다음 네 범주 중 세 개에 해당하는 문자를 1자 이상 포함해야 합니다.

    • 소문자(a-z)

    • 대문자(A-Z)

    • 숫자(0-9)

    • 영숫자 외의 특수 문자(~!@#$%^&*_-+=`|\(){}[]:;"'<>,.?/)

    [Confirm Password]

    관리자 암호를 다시 입력합니다.

  5. Next(다음)를 선택합니다.

  6. Choose VPC and subnets(VPC 및 서브넷 선택) 페이지에 다음 정보를 입력합니다.

    VPC

    디렉터리에 대한 VPC를 선택합니다.

    참고

    디렉터리와 DB 인스턴스를 서로 다른 VPC에서 찾을 수 있지만, 그렇게 할 경우 교차 VPC 트래픽을 활성화해야 합니다. 자세한 내용은 4단계: 디렉터리와 DB 인스턴스 사이에 VPC 간 트래픽 활성화 섹션을 참조하세요.

    서브넷

    디렉터리 서버에 대한 서브넷을 선택합니다. 두 서브넷이 서로 다른 가용 영역에 있어야 합니다.

  7. Next(다음)를 선택합니다.

  8. 디렉터리 정보를 검토합니다. 변경이 필요하면 이전을 선택합니다. 정보가 올바르면 Create directory(디렉터리 생성)을 선택합니다.

    페이지 검토 및 생성

디렉터리를 생성하는 데 몇 분 정도 걸립니다. 디렉터리가 성공적으로 생성되면 상태 값이 활성으로 변경됩니다.

디렉터리에 대한 정보를 보려면 디렉터리 목록에서 해당 디렉터리 ID를 선택합니다. 디렉터리 ID를 적어 두십시오. SQL Server DB 인스턴스를 생성하거나 수정할 때 이 값이 필요합니다.

디렉터리 세부 정보 페이지

2단계: Amazon RDS에 사용할 IAM 역할 생성

콘솔을 사용하여 SQL Server DB 인스턴스를 생성하는 경우 이 단계를 건너뛸 수 있습니다. CLI 또는 RDS API를 사용하여 SQL Server DB 인스턴스를 생성하는 경우 AmazonRDSDirectoryServiceAccess 관리형 IAM 정책을 사용하는 IAM 역할을 생성해야 합니다. 이 역할을 사용하여 Amazon RDS에서 AWS Directory Service를 자동으로 호출할 수 있습니다.

AWS 관리형 AmazonRDSDirectoryServiceAccess 정책을 사용하는 대신 도메인 가입에 사용자 지정 정책을 사용하는 경우 ds:GetAuthorizedApplicationDetails 작업을 허용해야 합니다. 이 요구 사항은 AWS Directory Service API 변경으로 인해 2019년 7월부터 유효합니다.

다음 IAM 정책 AmazonRDSDirectoryServiceAccess는 AWS Directory Service에 대한 액세스를 제공합니다.

예 AWS Directory Service에 대한 액세스 제공을 위한 IAM 정책
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ds:DescribeDirectories", "ds:AuthorizeApplication", "ds:UnauthorizeApplication", "ds:GetAuthorizedApplicationDetails" ], "Effect": "Allow", "Resource": "*" } ] }

서비스 권한을 특정 리소스로 제한하는 리소스 기반 신뢰 관계의 aws:SourceArnaws:SourceAccount 전역 조건 컨텍스트 키를 사용하는 것이 좋습니다. 이는 혼동된 대리자 문제를 방지하는 가장 효과적인 방법입니다.

전역 조건 컨텍스트 키를 모두 사용하고 aws:SourceArn 값에 계정 ID가 포함되도록 할 수 있습니다. 이 경우 aws:SourceAccount 값과 aws:SourceArn 값의 계정이 동일한 문에서 사용될 때 동일한 계정 ID를 사용해야 합니다.

  • 단일 리소스에 대한 교차 서비스 액세스를 원하는 경우 aws:SourceArn을 사용하세요.

  • 해당 계정의 모든 리소스가 교차 서비스 사용과 연결되도록 허용하려는 경우 aws:SourceAccount를 사용하세요.

신뢰 정책에서는 역할에 액세스하는 리소스의 전체 Amazon 리소스 이름(ARN)이 포함된 aws:SourceArn 전역 조건 컨텍스트 키를 사용해야 합니다. Windows 인증의 경우 다음 예와 같이 DB 인스턴스를 포함해야 합니다.

예 Windows 인증을 위한 전역 조건 컨텍스트 키와의 신뢰 관계
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceArn": [ "arn:aws:rds:Region:my_account_ID:db:db_instance_identifier" ] } } } ] }

이 IAM 정책 및 신뢰 관계를 사용하여 IAM 역할을 생성합니다. IAM 역할 생성에 대한 자세한 내용은 IAM 사용 설명서고객 관리형 정책 생성을 참조하세요.

3단계: 사용자 및 그룹 생성 및 구성

Active Directory 사용자 및 컴퓨터 도구를 사용하여 사용자 및 그룹을 생성할 수 있습니다. 이 도구는 Active Directory 도메인 서비스 및 Active Directory Lightweight Directory Services 도구 중 하나입니다. 사용자는 디렉터리에 액세스할 수 있는 개별 사용자 또는 개체를 나타냅니다. 그룹은 개별 사용자에게 권한을 적용할 필요 없이 사용자 그룹에 권한을 부여하거나 거부하는 데 매우 유용합니다.

AWS Directory Service 디렉터리에 사용자 및 그룹을 생성하려면 AWS Directory Service 디렉터리의 멤버인 Windows EC2 인스턴스에 연결해야 합니다. 또한 사용자 및 그룹을 생성할 수 있는 권한을 가진 사용자로 로그인해야 합니다. 자세한 내용은 AWS Directory Service관리 안내서에서 사용자 및 그룹 추가(Simple AD 및 AWS Managed Microsoft AD)를 참조하세요.

4단계: 디렉터리와 DB 인스턴스 사이에 VPC 간 트래픽 활성화

디렉터리와 DB 인스턴스를 동일한 VPC에 배치하려면 이 단계를 건너뛰고 5단계: SQL Server DB 인스턴스 생성 또는 수정 섹션으로 이동하세요.

디렉터리와 DB 인스턴스를 서로 다른 VPC에 배치하려면 VPC 피어링 또는 AWS Transit Gateway를 사용하여 VPC 간 트래픽을 구성하세요.

다음 절차는 VPC 피어링을 사용하여 VPC 간 트래픽을 활성화합니다. Amazon Virtual Private Cloud 피어링 안내서VPC 피어링이란? 지침을 따르십시오.

VPC 피어링을 사용하여 VPC 간 트래픽을 활성화하려면
  1. 네트워크 트래픽이 양방향으로 흐를 수 있도록 적절한 VPC 라우팅 규칙을 설정합니다.

  2. DB 인스턴스의 보안 그룹이 디렉터리의 보안 그룹에서 인바운드 트래픽을 수신할 수 있는지 확인합니다.

  3. 트래픽을 차단하는 네트워크 ACL(액세스 제어 목록) 규칙이 없어야 합니다.

다른 AWS 계정이 디렉터리를 소유하는 경우 디렉터리를 공유해야 합니다.

AWS 계정 간에 디렉터리를 공유하려면
  1. AWS 관리 안내서자습서: 원활한 EC2 도메인 조인을 위해 AWS Managed Microsoft AD 디렉터리 공유에 있는 지침에 따라 DB 인스턴스가 생성될 AWS Directory Service 계정과 디렉터리를 공유하는 작업을 시작합니다.

  2. DB 인스턴스용 계정을 사용하여 AWS Directory Service 콘솔에 로그인하고 계속하기 전에 도메인이 SHARED 상태가 되었는지 확인합니다.

  3. DB 인스턴스용 계정을 사용하여 AWS Directory Service 콘솔에 로그인하는 동안 디렉터리 ID 값을 기록해 둡니다. 이 디렉터리 ID를 사용하여 DB 인스턴스를 도메인에 조인합니다.

5단계: SQL Server DB 인스턴스 생성 또는 수정

디렉터리에서 사용할 SQL Server DB 인스턴스를 생성하거나 수정합니다. 콘솔, CLI 또는 RDS API를 사용하여 DB 인스턴스를 디렉터리에 연결할 수 있습니다. 이 작업을 다음 중 한 가지 방법으로 수행할 수 있습니다.

Windows 인증은 VPC의 SQL Server DB 인스턴스에 대해서만 지원됩니다.

DB 인스턴스에서 생성한 도메인 디렉터리를 사용할 수 있으려면 다음이 필요합니다.

  • 디렉터리의 경우 디렉터리를 만들 때 생성된 도메인 식별자(d-ID)를 선택해야 합니다.

  • VPC 보안 그룹에 DB 인스턴스가 디렉터리와 통신할 수 있도록 하는 아웃바운드 규칙이 있는지 확인합니다.

Microsoft SQL Server Windows 인증 디렉터리

AWS CLI를 사용하는 경우 생성한 도메인 디렉터리를 DB 인스턴스에서 사용하려면 다음과 같은 파라미터가 필요합니다.

  • --domain 파라미터의 경우 디렉터리를 만들 때 생성된 도메인 식별자(d-ID)를 사용합니다.

  • --domain-iam-role-name 파라미터의 경우 관리형 IAM 정책 AmazonRDSDirectoryServiceAccess를 사용하여 생성한 역할을 사용합니다.

예를 들어 다음 CLI 명령에서는 디렉터리를 사용하도록 DB 인스턴스를 수정합니다.

대상 LinuxmacOS, 또는Unix:

aws rds modify-db-instance \ --db-instance-identifier mydbinstance \ --domain d-ID \ --domain-iam-role-name role-name

Windows의 경우:

aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --domain d-ID ^ --domain-iam-role-name role-name
중요

DB 인스턴스를 수정하여 Kerberos 인증을 활성화하는 경우에는 변경 후 DB 인스턴스를 재부팅하세요.

6단계: Windows 인증 SQL Server 로그인 생성

다른 DB 인스턴스의 경우와 같은 방법으로 Amazon RDS 마스터 사용자 자격 증명을 사용하여 SQL Server DB 인스턴스에 연결합니다. DB 인스턴스는 AWS Managed Microsoft AD 도메인에 조인되므로 SQL Server 로그인 및 사용자를 프로비저닝할 수 있습니다. 도메인의 Active Directory 사용자 및 그룹에서 이 작업을 수행합니다. 데이터베이스 권한은 이러한 Windows 로그인에 부여되거나 취소되는 표준 SQL Server 권한을 통해 관리됩니다.

Active Directory 사용자가 SQL Server로 인증하려면 사용자 또는 사용자가 속한 그룹에 대한 SQL Server Windows 로그인이 있어야 합니다. 세분화된 액세스 제어는 이러한 SQL Server 로그인에 대한 권한을 부여하거나 취소하여 처리합니다. SQL Server 로그인이 없거나 이러한 로그인이 있는 그룹에 속하지 않은 사용자는 SQL Server DB 인스턴스에 액세스할 수 없습니다.

Active Directory SQL Server 로그인을 생성하려면 ALTER ANY LOGIN 권한이 필요합니다. 이 권한을 가진 로그인을 아직 생성하지 않은 경우 SQL Server 인증을 사용하여 DB 인스턴스의 마스터 사용자로 연결합니다.

다음 예와 같은 DDL(데이터 정의 언어) 명령을 실행하여 Active Directory 사용자 또는 그룹에 대한 SQL Server 로그인을 생성합니다.

참고

Windows 2000 이전 로그인 이름을 사용하여 사용자 및 그룹을 domainName\login_name 형식으로 지정합니다. UPN(User Principle Name)을 login_name@DomainName 형식으로 사용할 수 없습니다.

T-SQL 문을 사용해야만 RDS for SQL Server 인스턴스에서 Windows 인증 로그인을 만들 수 있습니다. SQL Server 관리 스튜디오를 사용하여 Windows 인증 로그인을 만들 수 없습니다.

USE [master] GO CREATE LOGIN [mydomain\myuser] FROM WINDOWS WITH DEFAULT_DATABASE = [master], DEFAULT_LANGUAGE = [us_english]; GO

자세한 내용은 Microsoft Developer Network 설명서에서 CREATE LOGIN(Transact-SQL)을 참조하세요.

도메인의 사용자(사람 및 애플리케이션)는 이제 Windows 인증을 사용하여 도메인이 조인된 클라이언트 컴퓨터의 RDS for SQL Server 인스턴스에 연결할 수 있습니다.