기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
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를 사용하면 잠재적 공격자를 차단할 수 있습니다.
사전 조건 및 제한 사항
사전 조건
액티브 AWS 계정.
Git은 로컬 워크스테이션에 설치
및 구성되었습니다. Terraform은 로컬 워크스테이션에 설치
및 구성되었습니다. 액티브 디렉터리 모듈이 설치된 Windows 컴퓨터 ().
ActiveDirectory
파라미터 저장소의 매개 변수에 저장된 디렉터리 AWS Managed Microsoft AD 및 자격 증명입니다. AWS Systems Manager
AWS Identity and Access Management (IAM) 도구에 AWS 서비스 나열된 권한이 있는 역할. 에 대한 IAM 자세한 내용은 관련 리소스를 참조하십시오.
제한 사항
이 패턴은 교차 계정 설정을 지원하지 않습니다.
일부는 AWS 서비스 전혀 사용할 수 없습니다. AWS 리전지역 이용 가능 여부는 AWS 서비스 지역별을
참조하십시오. 특정 엔드포인트는 서비스 엔드포인트 및 할당량을 참조하고 서비스 링크를 선택합니다.
제품 버전
아키텍처
다음 다이어그램은 이 패턴의 워크플로 및 구성 요소를 보여 줍니다.
이 다이어그램은 다음 워크플로를 보여줍니다.
Amazon은 cron AWS Lambda 표현식을 기반으로 함수를 EventBridge 트리거합니다. (이 패턴의 경우 cron 표현식 일정은 하루에 한 번입니다.)
필요한 IAM 역할과 정책은 Terraform을 AWS Lambda 통해 생성되고 연결됩니다.
이 AWS Lambda 함수는 Python boto 모듈을 사용하여 Amazon Elastic Compute Cloud (AmazonEC2) Auto Scaling Groups를 실행하고 호출합니다. Lambda 함수는 임의의 인스턴스 ID를 가져옵니다. 인스턴스 ID는 명령을 실행하는 AWS Systems Manager 데 사용됩니다.
AWS Lambda boto 모듈을 EC2 사용하여 Amazon을 다시 호출하고 실행 중인 Windows 서버의 사설 IP 주소를 가져와서 임시 변수에 저장합니다.
AWS Lambda 연결된 컴퓨터 정보를 가져오기 위해 Systems Manager를 다시 AWS Directory Service호출합니다.
AWS Systems Manager 문서는 Amazon EC2 Windows 서버에서 PowerShell 스크립트를 실행하여 AD에 연결된 컴퓨터의 사설 IP 주소를 가져오는 데 도움이 됩니다.
AD 도메인 사용자 이름과 비밀번호는 AWS Systems Manager 파라미터 스토어에 저장됩니다. AWS Lambda 그러면 Systems Manager가 Parameter Store를 호출하여 AD를 연결하는 데 사용할 사용자 이름과 암호 값을 가져옵니다.
Systems Manager 문서를 사용하면 3단계 앞부분에서 얻은 인스턴스 ID를 사용하여 Amazon EC2 Windows 서버에서 PowerShell 스크립트가 실행됩니다.
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) 도구입니다. PowerShell
Windows, 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 관리 및 정리 작업은 스크립트를 작성하여 수행할 수 있습니다. 예제 작업에는 비활성화된 계정 및 비활성 계정 제거, 비어 있거나 비활성 상태인 그룹 삭제, 만료된 사용자 계정 및 암호 찾기 등이 있습니다.
에픽
작업 | 설명 | 필요한 기술 |
---|---|---|
프로젝트 폴더를 만들고 파일을 추가합니다. | 리포지토리를 복제하고 프로젝트 폴더를 만들려면 다음과 같이 하십시오.
| DevOps 엔지니어 |
작업 | 설명 | 필요한 기술 |
---|---|---|
Terraform 구성을 초기화합니다. | Terraform 파일이 포함된 작업 디렉터리를 초기화하려면 다음 명령을 실행합니다.
| DevOps 엔지니어 |
변경 사항 미리 보기 | 인프라가 배포되기 전에 Terraform이 인프라에 적용할 변경 사항을 미리 볼 수 있습니다. Terraform이 필요에 따라 변경할 것인지 확인하려면 다음 명령을 실행하십시오.
| DevOps 엔지니어 |
제안된 조치를 실행합니다. |
| DevOps 엔지니어 |
인프라를 정리하세요. | 생성한 인프라를 정리하려면 다음 명령을 사용합니다.
destroy 명령을 확인하려면 를 입력합니다 | DevOps 엔지니어 |
작업 | 설명 | 필요한 기술 |
---|---|---|
Lambda 함수를 실행하고 테스트합니다. | 배포가 성공적으로 이루어졌는지 확인하려면 다음을 수행하십시오.
실행 결과에는 함수의 출력이 표시됩니다. | DevOps 엔지니어 |
Lambda 함수의 결과를 확인하십시오. | 이 패턴에서 EventBridge 규칙은 Lambda 함수를 하루에 한 번 실행합니다. Lambda 함수의 결과를 보려면 다음과 같이 하십시오.
CloudWatch 콘솔의 로그 그룹 페이지에는 Lambda 함수의 결과가 표시됩니다. | DevOps 엔지니어 |
작업 | 설명 | 필요한 기술 |
---|---|---|
인프라를 정리하세요. | 생성한 인프라를 정리하려면 다음 명령을 사용합니다.
destroy 명령을 확인하려면 를 입력합니다 | DevOps 엔지니어 |
정리 후 확인 | 리소스가 성공적으로 제거되었는지 확인합니다. | DevOps 엔지니어 |
문제 해결
문제 | Solution |
---|---|
AD 컴퓨터를 제거하려고 하면 “액세스 거부” 메시지가 나타납니다. 기본적으로 AD 서비스의 일부로 연결된 두 개의 사설 IP 주소를 제거하려고 하기 때문에 AD 컴퓨터를 제거할 수 없습니다. | 이 오류를 방지하려면 다음 Python 작업을 사용하여 AD 컴퓨터 출력과 Windows를 실행하는 컴퓨터의 출력 간의 차이를 나열할 때 처음 두 컴퓨터를 무시하십시오.
|
Lambda는 Windows 서버에서 스크립트를 실행할 PowerShell 때 기본적으로 Active Directory 모듈을 사용할 수 있을 것으로 예상합니다. 모듈을 사용할 수 없는 경우 Lambda 함수는 “AdComputer Get-가 인스턴스에 설치되지 않았습니다”라는 오류를 생성합니다. | 이 오류를 방지하려면 인스턴스의 사용자 데이터를 사용하여 필수 모듈을 설치하십시오. EC2 이 패턴의 GitHub 저장소에 있는 EC2WindowsUserdata |
관련 리소스
AWS 설명서
기타 리소스
AWS 제공자
(테라폼 설명서) 백엔드 구성
(테라폼 설명서) 파이썬 boto 모듈
(파이썬 패키지 인덱스 저장소) 테라폼 바이너리 다운로드
(테라폼 문서)