AWS Managed Microsoft AD 디렉터리에 Linux EC2 인스턴스를 원활하게 조인
이 절차는 AWS Managed Microsoft AD 디렉터리에 Linux EC2 인스턴스를 원활하게 조인합니다.
다음과 같은 Linux 인스턴스 배포판과 버전이 지원됩니다.
-
Amazon Linux AMI 2018.03.0
-
Amazon Linux 2(64비트 x86)
-
Red Hat Enterprise Linux 8(HVM)(64비트 x86)
-
Ubuntu Server 18.04 LTS 및 Ubuntu Server 16.04 LTS
-
CentOS 7 x86-64
-
SUSE Linux Enterprise Server 15 SP1
참고
Ubuntu 14와 Red Hat Enterprise Linux 7 이전의 배포판은 원활한 도메인 조인 기능을 지원하지 않습니다.
필수 조건
Linux EC2 인스턴스에 원활한 도메인 조인을 설정하려면 먼저 이 섹션의 절차를 완료해야 합니다.
원활한 도메인 조인 서비스 계정 선택
AD Connector를 통해 Linux 컴퓨터를 온프레미스 Active Directory 도메인에 원활하게 조인할 수 있습니다. 이렇게 하려면 컴퓨터 계정 만들기 권한이 있는 사용자 계정을 만들어 컴퓨터를 도메인에 조인해야 합니다. 원하는 경우 AD Connector 서비스 계정을 사용할 수 있습니다. 또는 컴퓨터를 도메인에 조인할 수 있는 충분한 권한이 있는 다른 계정을 사용할 수 있습니다. Domain Admins 또는 다른 그룹의 구성원이 컴퓨터를 도메인에 조인할 충분한 권한을 가지고 있을 수 있지만, 이러한 권한은 사용하지 않는 것이 좋습니다. 모범 사례로, 컴퓨터를 도메인에 조인하는 데 필요한 최소 권한이 있는 서비스 계정을 사용하는 것이 좋습니다.
컴퓨터를 도메인에 조인하는 데 필요한 최소 권한이 있는 계정을 위임하려면 다음 PowerShell 명령을 실행할 수 있습니다. 도메인에 조인된 Windows 컴퓨터에 AWS Managed Microsoft AD용 Active Directory 관리 도구 설치하기이(가) 설치되어 있는 상태에서 이러한 명령을 실행해야 합니다. 또한 컴퓨터 OU 또는 컨테이너에 대한 권한을 수정할 권한이 있는 계정을 사용해야 합니다. PowerShell 명령은 서비스 계정이 도메인의 기본 컴퓨터 컨테이너에 컴퓨터 객체를 생성할 수 있도록 허용하는 권한을 설정합니다. GUI(그래픽 사용자 인터페이스)를 선호하는 경우 서비스 계정에 권한 위임에서 설명하는 수동 프로세스를 사용할 수 있습니다.
$AccountName = 'awsSeamlessDomain' # DO NOT modify anything below this comment. # Getting Active Directory information. Import-Module 'ActiveDirectory' $Domain = Get-ADDomain -ErrorAction Stop $BaseDn = $Domain.DistinguishedName $ComputersContainer = $Domain.ComputersContainer $SchemaNamingContext = Get-ADRootDSE | Select-Object -ExpandProperty 'schemaNamingContext' [System.GUID]$ServicePrincipalNameGuid = (Get-ADObject -SearchBase $SchemaNamingContext -Filter { lDAPDisplayName -eq 'Computer' } -Properties 'schemaIDGUID').schemaIDGUID # Getting Service account Information. $AccountProperties = Get-ADUser -Identity $AccountName $AccountSid = New-Object -TypeName 'System.Security.Principal.SecurityIdentifier' $AccountProperties.SID.Value # Getting ACL settings for the Computers container. $ObjectAcl = Get-ACL -Path "AD:\$ComputersContainer" # Setting ACL allowing the service account the ability to create child computer objects in the Computers container. $AddAccessRule = New-Object -TypeName 'System.DirectoryServices.ActiveDirectoryAccessRule' $AccountSid, 'CreateChild', 'Allow', $ServicePrincipalNameGUID, 'All' $ObjectAcl.AddAccessRule($AddAccessRule) Set-ACL -AclObject $ObjectAcl -Path "AD:\$ComputersContainer"
GUI(그래픽 사용자 인터페이스)를 선호하는 경우 서비스 계정에 권한 위임에서 설명하는 수동 프로세스를 사용할 수 있습니다.
도메인 서비스 계정을 저장할 보안 암호 생성
AWS Secrets Manager를 사용하여 도메인 서비스 계정을 저장할 수 있습니다.
보안 암호를 만들고 도메인 서비스 계정 정보를 저장하려면
-
AWS Management Console에 로그인하고 https://console.aws.amazon.com/secretsmanager/
에서 AWS Secrets Manager 콘솔을 엽니다. -
새 보안 암호 저장(Store a new secret)을 선택합니다.
-
새 보안 암호 저장(Store a new secret) 페이지에서 다음을 수행합니다.
-
암호 유형 선택에서 다른 암호 유형을 선택합니다.
-
Specify the key/value pairs to be stored in the secret(보안 암호에 저장할 키/값 페어 지정)에서 다음을 수행합니다.
-
첫 번째 상자에
awsSeamlessDomainUsername
를 입력합니다. 같은 행의 다음 상자에 서비스 계정의 사용자 이름을 입력합니다. 예를 들어 이전에 PowerShell 명령을 사용한 경우 서비스 계정 이름은awsSeamlessDomain
입니다.참고
있는 그대로
awsSeamlessDomainUsername
를 입력해야 합니다. 선행 공백이나 끝 공백이 없어야 합니다. 그렇지 않으면 도메인 조인이 실패합니다. -
Add row(행 추가)를 선택합니다.
-
새 행의 첫 번째 상자에
awsSeamlessDomainPassword
를 입력합니다. 같은 행의 다음 상자에 서비스 계정의 암호를 입력합니다.참고
있는 그대로
awsSeamlessDomainPassword
를 입력해야 합니다. 선행 공백이나 끝 공백이 없어야 합니다. 그렇지 않으면 도메인 조인이 실패합니다. -
Select the encryption key(암호화 키 선택) 목록에서 DefaultEncryptionKey를 선택합니다. Secrets Manager는 이 옵션을 선택하면 항상 보안 암호를 암호화하여 무료로 제공합니다. 사용자가 생성한 키를 선택할 수도 있습니다.
-
다음(Next)을 선택합니다.
-
-
-
보안 암호 이름에서 다음 형식을 사용하여 디렉터리 ID가 포함된 보안 암호 이름을 입력합니다.
aws/directory-services/
d-xxxxxxxxx
/seamless-domain-join이는 애플리케이션에서 보안 암호를 검색하는 데 사용됩니다.
참고
있는 그대로
aws/directory-services/
를 입력해야 하지만,d-xxxxxxxxx
/seamless-domain-joind-xxxxxxxxxxxxx
를 디렉터리 ID로 바꿔야 합니다. 선행 공백이나 끝 공백이 없어야 합니다. 그렇지 않으면 도메인 조인이 실패합니다. -
다른 모든 항목은 기본값으로 설정한 후 다음을 선택합니다.
-
Configure automatic rotation(자동 교체 구성)에서 Disable automatic rotation(자동 교체 사용 안 함)을 선택하고 Next(다음)를 선택합니다.
-
설정을 검토한 다음 Store(저장)을 선택하여 변경 내용을 저장합니다. 이제 Secrets Manager 콘솔은 사용자를 새 보안 암호가 목록에 포함된 계정의 보안 암호 목록으로 돌려보냅니다.
-
목록에서 새로 생성한 보안 암호 이름을 선택하고 보안 암호 ARN 값을 기록해 둡니다. 다음 단계에서 이 값을 사용하게 됩니다.
필요한 IAM 정책 및 역할 생성
다음 사전 요구 사항 단계를 사용하여 Secrets Manager 원활한 도메인 조인 보안 암호(이전에 생성함)에 대한 읽기 전용 액세스를 허용하는 사용자 지정 정책을 생성하고 새 LinuxEC2DomainJoin IAM 역할을 생성합니다.
Secrets Manager IAM 읽기 정책 생성
IAM 콘솔을 사용하여 Secrets Manager 보안 암호에 대한 읽기 전용 액세스 권한을 부여하는 정책을 생성합니다.
Secrets Manager IAM 읽기 정책을 생성하려면
-
IAM 정책을 생성할 권한이 있는 사용자로 AWS Management Console에 로그인합니다. 그런 다음 https://console.aws.amazon.com/iam/
에서 IAM 콘솔을 엽니다. -
탐색 창에서 Policies(정책)을 선택합니다.
-
[정책 생성(Create policy)]을 선택합니다.
-
JSON 탭을 선택하고 다음 JSON 정책 문서에서 텍스트를 복사합니다. 그런 다음 JSON 텍스트 상자에 붙여 넣습니다.
참고
Resource
ARN을 이전에 생성한 보안 암호의 실제 ARN으로 교체해야 합니다.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret" ], "Resource": [ "arn:aws:secretsmanager:us-east-1:
############
:secret:aws/directory-service/d-xxxxxxxxxx/seamless-domain-join-example" ] } ] } -
작업이 완료되면 [Review policy]를 선택합니다. 정책 검사기가 모든 구문 오류를 보고합니다. 자세한 내용은 Validating IAM policies 섹션을 참조하세요.
-
Review policy(정책 검토) 페이지에서 정책의
SM-Secret-Linux-DJ-
등의 이름을 입력합니다. Summary(요약) 섹션을 검토하여 정책이 부여한 권한을 확인합니다. 그런 다음 Create policy(정책 생성)을 선택하여 변경 내용을 저장합니다. 새로운 정책이 관리형 정책 목록에 나타나며 ID에 연결할 준비가 완료됩니다.d-xxxxxxxxxx
-Read
참고
보안 암호당 정책을 하나씩 생성하는 것이 좋습니다. 이렇게 하면 인스턴스가 적절한 보안 암호에만 액세스할 수 있고 인스턴스가 손상될 경우 미치는 영향이 최소화됩니다.
LinuxEC2DomainJoin 역할 생성
IAM 콘솔을 사용하여 Linux EC2 인스턴스를 도메인 조인하는 데 사용할 역할을 생성합니다.
LinuxEC2DomainJoin 역할을 생성하려면
-
IAM 정책을 생성할 권한이 있는 사용자로 AWS Management Console에 로그인합니다. 그런 다음 https://console.aws.amazon.com/iam/
에서 IAM 콘솔을 엽니다. -
탐색 창에서 역할(Roles)을 선택합니다.
-
콘텐츠 창에서 Create role(정책 생성)을 선택합니다.
-
신뢰할 수 있는 유형의 엔터티 선택(Select type of trusted entity) 아래에서 AWS 서비스를 선택합니다.
-
Choose a use case(사용 사례 선택)에서 EC2를 선택한 후 Next: Permissions(다음: 권한)를 선택합니다.
-
Filter policies(필터 정책)의 경우 다음을 수행합니다.
-
AmazonSSMManagedInstanceCore
을 입력합니다. 그런 다음 목록에서 해당 항목의 확인란을 선택합니다. -
AmazonSSMDirectoryServiceAccess
을 입력합니다. 그런 다음 목록에서 해당 항목의 확인란을 선택합니다. -
SM-Secret-Linux-DJ-
(또는 이전 절차에서 생성한 정책의 이름)을(를) 입력합니다. 그런 다음 목록에서 해당 항목의 확인란을 선택합니다.d-xxxxxxxxxx
-Read
참고
AmazonSSMDirectoryServiceAccess는 AWS Directory Service에 의해 관리되는 Active Directory에 인스턴스를 조인할 수 있는 권한을 제공합니다. AmazonSSMManagedInstanceCore는 AWS Systems Manager 서비스 사용에 필요한 최소 권한을 제공합니다. 이러한 권한으로 역할을 생성하는 방법과 IAM 역할에 할당할 수 있는 기타 권한 및 정책에 대한 자세한 내용은 AWS Systems Manager 사용 설명서의 Systems Manager용 IAM 인스턴스 프로파일 생성을 참조하세요.
-
-
Next: Tags(다음: 태그)를 선택합니다.
-
(선택 사항) 이 역할에 대한 액세스를 구성, 추적, 제어할 태그-키 값 페어를 하나 이상 추가합니다. 그런 다음 다음: 검토(Next: Review)를 선택합니다.
-
역할 이름 옆에 새 역할의 이름(예:
LinuxEC2DomainJoin
또는 자신이 선호하는 다른 이름)을 입력합니다. -
(선택 사항) 역할 설명에 설명을 입력합니다.
-
역할 생성을 선택합니다.
AWS Managed Microsoft AD 디렉터리에 Linux EC2 인스턴스를 원활하게 조인
사전 조건 작업을 모두 구성했으니 이제 다음 절차를 사용하여 Linux EC2 인스턴스에 원활하게 조인할 수 있습니다.
Linux EC2 인스턴스를 원활하게 조인
-
AWS Management Console에 로그인하고 https://console.aws.amazon.com/ec2/
에서 Amazon EC2 콘솔을 엽니다. -
탐색 모음의 리전 선택기에서 기존 디렉터리와 동일한 리전을 선택합니다.
-
인스턴스 시작을 선택합니다.
-
1단계 페이지에서 적절한 Amazon Machine Image(AMI)에 대해 선택을 선택합니다.
참고
사용되는 AMI는 AWS Systems Manager (SSM 에이전트) 버전 2.3.1644.0 이상이어야 합니다. AMI에서 인스턴스를 시작하여 AMI에 설치된 SSM 에이전트 버전을 확인하려면 현재 설치된 SSM 에이전트 버전 가져오기를 참조하세요. SSM 에이전트를 업그레이드해야 하는 경우 Linux용 EC2 인스턴스에 SSM 에이전트 설치 및 구성을 참조하세요.
-
Step 2(2단계) 페이지에서 적절한 인스턴스 유형을 선택한 후 Next: Configure Instance Details(다음: 인스턴스 세부 정보 구성)을 선택하세요.
-
3단계 페이지에서 다음을 수행한 후 Next: Add Storage(다음: 스토리지 추가)를 선택합니다.
-
[Network]에서 디렉터리가 생성된 VPC를 선택합니다.
-
서브넷에서 VPC의 퍼블릭 서브넷 중 하나를 선택하세요. 선택한 서브넷에서는 인터넷 게이트웨이로 모든 외부 트래픽이 라우팅되어야 합니다. 그렇지 않으면 인스턴스를 원격으로 연결할 수 없게 됩니다.
-
퍼블릭 IP 자동 할당(Auto-assign Public IP)의 경우 활성화(Enable)를 선택합니다. 퍼블릭 및 프라이빗 IP 주소 지정에 대한 자세한 내용은 Windows 인스턴스용 Amazon EC2 사용 설명서의 Amazon EC2 인스턴스 IP 주소 지정을 참조하세요.
-
도메인 조인 디렉터리의 경우 목록에서 도메인을 선택하세요.
-
IAM 역할의 경우, 사전 조건 섹션 2단계: LinuxEC2 도메인 조인 역할 생성에서 이전에 생성한 IAM 역할을 선택합니다.
-
-
4단계 및 5단계 페이지 모두에서 기본 설정을 그대로 두거나 필요에 따라 변경합니다. 그런 다음 각 항목에서 Next(다음)를 선택합니다.
-
6단계 페이지에서, 네트워크에서 인스턴스에 대한 원격 액세스를 허용하도록 구성된 보안 그룹을 선택합니다. 그런 다음 검토 및 시작을 선택합니다.
-
7단계 페이지에서 Launch(시작)를 선택하고 키 페어를 선택한 후 Launch Instance(인스턴스 시작)를 선택합니다.
참고
SUSE Linux로 원활한 도메인 조인을 수행하는 경우 인증이 작동하려면 재부팅해야 합니다. Linux 터미널에서 SUSE를 재부팅하려면 sudo reboot를 입력합니다.