AWS Lambda 자동화를 AWS Managed Microsoft AD 사용하여 동일한 AWS 계정 양식의 Amazon EC2 항목 제거 - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS Lambda 자동화를 AWS Managed Microsoft AD 사용하여 동일한 AWS 계정 양식의 Amazon EC2 항목 제거

작성자: 라훌 샤라드 가이콰드 박사 () 와 타밀셀반 P () AWS AWS

코드 terraform-aws-lambda-ad 리포지토리: -정리

환경: PoC 또는 파일럿

기술: DevOps; 인프라; 스토리지 및 백업, 관리 및 거버넌스

워크로드: 기타 모든 워크로드, Microsoft

AWS서비스: AWS 관리형 Microsoft AD, AWS Lambda, EC2 AWS Amazon, Identity 및 Access Management, AWS 디렉터리 서비스, AWS Systems Manager, EventBridge AmazonAWS, Auto Scaling

요약

Active Directory (AD) 는 도메인 정보와 네트워크 서비스와의 사용자 상호 작용을 관리하는 Microsoft 스크립팅 도구입니다. 관리형 서비스 공급업체 (MSPs) 사이에서 직원 자격 증명 및 액세스 권한을 관리하는 데 널리 사용됩니다. AD 공격자는 비활성 계정을 사용하여 조직에 대한 해킹을 시도할 수 있으므로 정기적인 유지 관리 일정에 따라 비활성 계정을 찾아 비활성화하는 것이 중요합니다. 를 사용하면 Microsoft Active Directory를 관리 서비스로 실행할 수 있습니다. AWS Directory Service for Microsoft Active Directory

이 패턴을 사용하면 비활성 계정을 빠르게 찾아 제거하도록 AWS Lambda 자동화를 구성할 수 있습니다. 이 패턴을 사용하면 다음과 같은 이점을 얻을 수 있습니다.

  • 데이터베이스 및 서버 성능을 개선하고 비활성 계정으로 인한 보안 취약성을 수정하십시오.

  • AD 서버가 클라우드에서 호스팅되는 경우 비활성 계정을 제거하면 스토리지 비용을 절감하는 동시에 성능을 개선할 수 있습니다. 대역폭 요금과 컴퓨팅 리소스가 모두 인하될 수 있으므로 월별 요금이 줄어들 수 있습니다.

  • 정리된 Active Directory를 사용하면 잠재적 공격자를 차단할 수 있습니다.

사전 조건 및 제한 사항

사전 조건 

제한 사항

제품 버전

아키텍처

다음 다이어그램은 이 패턴의 워크플로 및 구성 요소를 보여 줍니다.

Lambda 자동화를 사용하여 관리형 Microsoft AD에서 항목을 EC2 제거하는 프로세스입니다.

이 다이어그램은 다음 워크플로를 보여줍니다.

  1. Amazon은 cron AWS Lambda 표현식을 기반으로 함수를 EventBridge 트리거합니다. (이 패턴의 경우 cron 표현식 일정은 하루에 한 번입니다.)

  2. 필요한 IAM 역할과 정책은 Terraform을 AWS Lambda 통해 생성되고 연결됩니다.

  3. 이 AWS Lambda 함수는 Python boto 모듈을 사용하여 Amazon Elastic Compute Cloud (AmazonEC2) Auto Scaling Groups를 실행하고 호출합니다. Lambda 함수는 임의의 인스턴스 ID를 가져옵니다. 인스턴스 ID는 명령을 실행하는 AWS Systems Manager 데 사용됩니다.

  4. AWS Lambda boto 모듈을 EC2 사용하여 Amazon을 다시 호출하고 실행 중인 Windows 서버의 사설 IP 주소를 가져와서 임시 변수에 저장합니다.

  5. AWS Lambda 연결된 컴퓨터 정보를 가져오기 위해 Systems Manager를 다시 AWS Directory Service호출합니다.

  6. AWS Systems Manager 문서는 Amazon EC2 Windows 서버에서 PowerShell 스크립트를 실행하여 AD에 연결된 컴퓨터의 사설 IP 주소를 가져오는 데 도움이 됩니다.

  7. AD 도메인 사용자 이름과 비밀번호는 AWS Systems Manager 파라미터 스토어에 저장됩니다. AWS Lambda 그러면 Systems Manager가 Parameter Store를 호출하여 AD를 연결하는 데 사용할 사용자 이름과 암호 값을 가져옵니다.

  8. Systems Manager 문서를 사용하면 3단계 앞부분에서 얻은 인스턴스 ID를 사용하여 Amazon EC2 Windows 서버에서 PowerShell 스크립트가 실행됩니다.

  9. Amazon은 PowerShell 명령을 AWS Directory Service 사용하여 EC2 연결하고 사용 중이 아니거나 비활성 상태인 컴퓨터를 제거합니다.

도구

AWS서비스

  • AWS Directory Service 는 Microsoft Active Directory (AD) 를 Amazon Elastic Compute Cloud (Amazon), 서버용 Amazon Relational Database Service (RDSAmazonEC2), 윈도우 파일 SQL 서버용 Amazon과 AWS 서비스 같은 다른 방법과 함께 사용할 수 있는 다양한 방법을 제공합니다. FSx

  • AWS Directory Service for Microsoft Active Directory 디렉터리 인식 워크로드 및 리소스가 에서 Microsoft Active AWS Directory를 사용할 수 있도록 합니다. AWS 클라우드

  • Amazon Elastic Compute Cloud (AmazonEC2) 는 확장 가능한 컴퓨팅 용량을 제공합니다 AWS 클라우드. 필요한 만큼 가상 서버를 시작하고 빠르게 스케일 업하거나 스케일 다운할 수 있습니다.

  • EventBridge Amazon은 다양한 소스의 실시간 데이터와 애플리케이션을 연결하는 데 도움이 되는 서버리스 이벤트 버스 서비스입니다. 예를 들어 AWS Lambda 함수, API 대상을 사용한 HTTP 호출 엔드포인트 또는 기타 이벤트 버스 등이 있습니다. AWS 계정

  • AWS Identity and Access Management (IAM) 를 사용하면 리소스 인증 및 사용 권한을 부여받은 사용자를 제어하여 AWS리소스에 대한 액세스를 안전하게 관리할 수 있습니다. 를 사용하면 서비스 및 리소스에 액세스할 수 있는 사용자 또는 대상을 지정하고 AWS, 세분화된 권한을 중앙에서 관리하고, 액세스를 분석하여 전체 권한을 세분화할 수 있습니다. IAM AWS

  • AWS Lambda 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행할 수 있게 해주는 컴퓨팅 서비스입니다. 필요할 때만 코드를 실행하며 자동으로 확장이 가능하므로 사용한 컴퓨팅 시간만큼만 비용을 지불합니다.

  • AWS Systems Manager 에서 실행되는 애플리케이션과 인프라를 관리할 수 있도록 도와줍니다. AWS 클라우드애플리케이션 및 리소스 관리를 간소화하고, 운영 문제를 감지하고 해결하는 시간을 단축하며, AWS 리소스를 대규모로 안전하게 관리할 수 있도록 지원합니다.

  • AWS Systems Manager 문서는 Systems Manager가 관리형 인스턴스에서 수행하는 작업을 정의합니다. Systems Manager에는 런타임에 파라미터를 지정하여 사용할 수 있는 사전 구성 문서가 100개 이상 포함되어 있습니다.

  • AWS Systems Manager Parameter Store는 구성 데이터 관리 AWS Systems Manager 및 암호 관리를 위한 안전한 계층적 스토리지의 기능이며 이를 제공합니다.

기타 도구

  • HashiCorp Terraform은 코드를 사용하여 클라우드 인프라 및 리소스를 프로비저닝하고 관리하는 데 도움이 되는 오픈 소스 코드형 인프라 (IaC) 도구입니다.

  • PowerShellWindows, Linux 및 macOS에서 실행되는 Microsoft 자동화 및 구성 관리 프로그램입니다.

  • Python은 범용 컴퓨터 프로그래밍 언어입니다.

코드 리포지토리

이 패턴의 코드는 GitHub 사용자 지정 AD 클린업 자동화 솔루션 리포지토리에서 사용할 수 있습니다.

모범 사례

  • 도메인에 자동으로 가입합니다. AWS Directory Service 도메인에 속할 Windows 인스턴스를 시작하는 경우 나중에 인스턴스를 수동으로 추가하는 대신 인스턴스 생성 프로세스 중에 도메인에 가입하세요. 도메인에 자동으로 가입하려면 새 인스턴스를 시작할 때 도메인 조인 디렉터리 드롭다운 목록에서 올바른 디렉터리를 선택합니다. 자세한 내용은 AWS Directory Service 관리 안내서의 Amazon EC2 Windows 인스턴스를 AWS Managed Microsoft AD Active Directory에 원활하게 조인을 참조하십시오.

  • 사용하지 않는 계정을 삭제하십시오. AD에서 사용한 적이 없는 계정을 흔히 찾을 수 있습니다. 시스템에 남아 있는 비활성화되거나 비활성 상태인 계정과 마찬가지로 사용하지 않는 계정을 무시하면 AD 시스템 속도가 느려지거나 조직이 데이터 유출에 취약해질 수 있습니다.

  • Active Directory 정리를 자동화하십시오. 보안 위험을 완화하고 더 이상 사용되지 않는 계정이 AD 성능에 영향을 미치지 않도록 하려면 정기적으로 AD 정리를 수행해야 합니다. 대부분의 AD 관리 및 정리 작업은 스크립트를 작성하여 수행할 수 있습니다. 예제 작업에는 비활성화된 계정 및 비활성 계정 제거, 비어 있거나 비활성 상태인 그룹 삭제, 만료된 사용자 계정 및 암호 찾기 등이 있습니다.

에픽

작업설명필요한 기술

프로젝트 폴더를 만들고 파일을 추가합니다.

리포지토리를 복제하고 프로젝트 폴더를 만들려면 다음과 같이 하십시오.

  1. 이 패턴의 GitHub 리포지토리를 엽니다.

  2. 코드 버튼을 선택하면 클론 드롭다운에서 복제 옵션을 볼 수 있습니다.

  3. HTTPS탭에서 URL웹을 사용하여 클론에 URL 제공된 내용을 복사합니다.

  4. 컴퓨터에 폴더를 만들고 프로젝트 이름으로 이름을 지정합니다.

  5. 로컬 컴퓨터에서 터미널을 열고 이 폴더로 이동합니다.

  6. git 리포지토리를 복제하려면 다음 명령을 사용합니다.

    git clone <repository-URL>.git

  7. 리포지토리가 복제된 후 다음 명령을 사용하여 복제된 디렉터리로 이동합니다.

    cd <directory name>

  8. 복제된 리포지토리에서 선택한 통합 개발 환경 (IDE) 에서 이 프로젝트를 엽니다.

DevOps 엔지니어
작업설명필요한 기술

Terraform 구성을 초기화합니다.

Terraform 파일이 포함된 작업 디렉터리를 초기화하려면 다음 명령을 실행합니다.

terraform init

DevOps 엔지니어

변경 사항 미리 보기

인프라가 배포되기 전에 Terraform이 인프라에 적용할 변경 사항을 미리 볼 수 있습니다. Terraform이 필요에 따라 변경할 것인지 확인하려면 다음 명령을 실행하십시오.

terraform plan

DevOps 엔지니어

제안된 조치를 실행합니다.

terraform plan명령 결과가 예상과 같은지 확인하려면 다음을 수행하십시오.

  1. 다음 명령을 실행합니다.

    terraform apply

  2. 에 AWS Management Console로그인하여 리소스가 있는지 확인합니다.

DevOps 엔지니어

인프라를 정리하세요.

생성한 인프라를 정리하려면 다음 명령을 사용합니다.

terraform destroy

destroy 명령을 확인하려면 를 입력합니다yes.

DevOps 엔지니어
작업설명필요한 기술

Lambda 함수를 실행하고 테스트합니다.

배포가 성공적으로 이루어졌는지 확인하려면 다음을 수행하십시오.

  1. 에 AWS Management Console 로그인하고 콘솔을 엽니다. 함수 페이지를 열고 ADcleanup-Lambda-*로 시작하는 함수 이름을 선택합니다.

  2. 함수 개요 페이지에서 코드 소스 섹션의 코드 탭에서 Test를 선택합니다.

  3. 테스트 이벤트를 저장하려면 이벤트 이름을 입력하고 [Save] 를 선택합니다. 그런 다음 이벤트를 테스트하려면 [Test] 를 다시 선택합니다.

실행 결과에는 함수의 출력이 표시됩니다.

DevOps 엔지니어

Lambda 함수의 결과를 확인하십시오.

이 패턴에서 EventBridge 규칙은 Lambda 함수를 하루에 한 번 실행합니다. Lambda 함수의 결과를 보려면 다음과 같이 하십시오.

  1. 에 AWS Management Console 로그인하고 콘솔을 엽니다. AWS Lambda함수 페이지를 열고 ADcleanup-Lambda-*로 시작하는 함수 이름을 선택합니다.

  2. 모니터 탭을 선택하고 로그 보기를 선택합니다. CloudWatch

CloudWatch 콘솔의 로그 그룹 페이지에는 Lambda 함수의 결과가 표시됩니다.

DevOps 엔지니어
작업설명필요한 기술

인프라를 정리하세요.

생성한 인프라를 정리하려면 다음 명령을 사용합니다.

terraform destroy

destroy 명령을 확인하려면 를 입력합니다yes.

DevOps 엔지니어

정리 후 확인

리소스가 성공적으로 제거되었는지 확인합니다.

DevOps 엔지니어

문제 해결

문제Solution

AD 컴퓨터를 제거하려고 하면 “액세스 거부” 메시지가 나타납니다. 기본적으로 AD 서비스의 일부로 연결된 두 개의 사설 IP 주소를 제거하려고 하기 때문에 AD 컴퓨터를 제거할 수 없습니다.

이 오류를 방지하려면 다음 Python 작업을 사용하여 AD 컴퓨터 출력과 Windows를 실행하는 컴퓨터의 출력 간의 차이를 나열할 때 처음 두 컴퓨터를 무시하십시오.

Difference = Difference[2:]

Lambda는 Windows 서버에서 스크립트를 실행할 PowerShell 때 기본적으로 Active Directory 모듈을 사용할 수 있을 것으로 예상합니다. 모듈을 사용할 수 없는 경우 Lambda 함수는 “AdComputer Get-가 인스턴스에 설치되지 않았습니다”라는 오류를 생성합니다.

이 오류를 방지하려면 인스턴스의 사용자 데이터를 사용하여 필수 모듈을 설치하십시오. EC2 이 패턴의 GitHub 저장소에 있는 EC2WindowsUserdata스크립트를 사용하십시오.

관련 리소스

AWS 설명서

기타 리소스