기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Transfer Family, Amazon Cognito 및 GuardDuty를 사용하여 파일 전송 보호
Manoj Kumar, Amazon Web Services
요약
이 솔루션은를 사용하여 SFTP 서버를 통해 파일을 안전하게 전송하는 데 도움이 됩니다 AWS Transfer Family. 여기에는 Amazon GuardDuty의 기능인 S3용 맬웨어 보호를 통한 자동 맬웨어 스캔 기능이 포함됩니다. Amazon GuardDuty 외부 당사자와 파일을 안전하게 교환하고 모든 수신 파일이 처리되기 전에 맬웨어에 대해 스캔되는지 확인해야 하는 조직을 위해 설계되었습니다.
이 패턴과 함께 제공되는 코드형 인프라(IaC) 템플릿은 다음을 배포하는 데 도움이 됩니다.
를 통해 Amazon Cognito 인증을 사용하는 보안 SFTP 서버 AWS Lambda
맬웨어가 스캔된 업로드 및 수신 파일을 위한 Amazon Simple Storage Service(Amazon S3) 버킷
여러 가용 영역에 퍼블릭 및 프라이빗 서브넷이 있는 Virtual Private Cloud(VPC) 기반 아키텍처
구성 가능한 허용 및 거부 목록이 있는 수신 및 송신 트래픽 모두에 대한 IP 기반 액세스 제어
GuardDuty를 통한 자동 맬웨어 스캔
Amazon EventBridge 및 Lambda를 통한 스캔 결과를 기반으로 하는 지능형 파일 라우팅
Amazon Simple Notification Service(Amazon SNS)를 통한 보안 인시던트에 대한 실시간 알림
AWS Key Management Service (AWS KMS)를 통한 Amazon S3 버킷 및 Lambda 환경 변수의 암호화
인터넷 노출 없이 액세스할 수 있는 Amazon Virtual Private Cloud(VPC) 엔드포인트
Amazon CloudWatch 통합을 통한 포괄적인 로깅
사전 조건 및 제한 사항
사전 조건
활성 AWS 계정
IAM 역할을 프로비저닝하는 AWS CloudFormation 템플릿 배포를 포함하여이 패턴에 설명된 작업을 수행할 수 있는 AWS Identity and Access Management (IAM)의 권한
GuardDuty, 대상 계정에서 활성화됨
대상 계정에서 활성화된 S3용 맬웨어 보호
서비스 할당량을 사용하면 대상 계정에서 다음을 생성할 수 있습니다.
VPC 한 개
프라이빗 서브넷 1개
퍼블릭 서브넷 1개
탄력적 IP 주소 3개
충분한 Lambda 동시성 제한
보안 관련 알림에 유효한 이메일 주소
(선택 사항) 허용하거나 거부할 IP 주소 또는 CIDR 범위 목록
제한 사항
S3용 맬웨어 보호에는 최대 파일 크기와 같은 할당량이 적용됩니다. 자세한 내용은 GuardDuty 설명서의 S3용 맬웨어 보호의 할당량 및 Amazon S3 기능 지원을 참조하세요.
이 솔루션은 Amazon Cognito 사용자 이름 및 암호 인증만 사용합니다. 이 템플릿에서는 인증서 기반 또는 기타 인증 방법이 지원되지 않습니다. 기본적으로이 솔루션은 다중 인증(MFA)을 구성하지 않습니다.
이 솔루션은 보안 그룹만 통해 IP 기반 액세스 제어를 구현합니다.
아키텍처
다음 아키텍처 다이어그램은이 패턴으로 배포된 리소스를 보여줍니다. 이 솔루션은 사용자 인증 및 권한 부여에 Amazon Cognito를 사용합니다. AWS Transfer Family SFTP 서버는 파일 업로드에 사용됩니다. 파일은 Amazon S3 버킷에 저장되며 Amazon GuardDuty는 파일에 맬웨어가 있는지 스캔합니다. 맬웨어가 감지되면 Amazon SNS에서 이메일 알림을 보냅니다.

이 다이어그램은 다음 워크플로를 보여줍니다.
사용자는의 SFTP 서버 엔드포인트에 연결합니다 AWS Transfer Family. 이렇게 하면 Amazon Cognito 사용자 풀을 사용하여 인증 프로세스가 시작됩니다.
Lambda 함수는 인증 및 권한 부여 프로세스를 시작하고 Amazon Cognito를 사용하여 사용자의 자격 증명을 검증합니다.
Lambda 함수는
UploadBucket
Amazon S3 버킷을 홈 디렉터리로 반환합니다. 사용자는 Transfer Family 서버의 IAM 역할을 수임하고 Lambda 함수는 사용자에게 성공적으로 인증되었음을 알립니다.사용자가 Transfer Family SFTP 서버에 파일을 업로드합니다. 파일은
UploadBucket
Amazon S3 버킷에 저장됩니다.GuardDuty는 파일에 맬웨어가 있는지 스캔합니다. 잠재적 스캔 결과는
NO_THREATS_FOUND
,THREATS_FOUND
,UNSUPPORTED
, 및ACCESS_DENIED
입니다FAILED
. 샘플 결과는 GuardDuty 설명서의 S3 객체 스캔 결과를 참조하세요.EventBridge 규칙은 스캔 결과 이벤트를 감지합니다.
EventBridge는 파일 라우팅 Lambda 함수를 시작합니다.
Lambda 함수는 이벤트를 처리하고 다음과 같이 스캔 결과를 기반으로 파일을 필터링합니다.
NO_THREATS_FOUND
스캔 결과가 있는 파일은CleanBucket
Amazon S3 버킷으로 전송됩니다.THREATS_FOUND
스캔 결과가 있는 파일은MalwareBucket
Amazon S3 버킷으로 전송됩니다.UNSUPPORTED
스캔 결과가 있는 파일은ErrorBucket
Amazon S3 버킷으로 전송됩니다.ACCESS_DENIED
스캔 결과가 있는 파일은ErrorBucket
Amazon S3 버킷으로 전송됩니다.FAILED
스캔 결과가 있는 파일은ErrorBucket
Amazon S3 버킷으로 전송됩니다.
모든 파일은 로 암호화됩니다 AWS KMS key.
파일이
MalwareBucket
Amazon S3 버킷으로 전송된 경우 Lambda 함수는 Amazon SNS 주제를 시작합니다. Amazon SNS 주제는 구성한 이메일 주소로 이메일 알림을 보냅니다.
도구
AWS 서비스
Amazon CloudWatch를 사용하면 AWS 리소스 및에서 실행되는 애플리케이션의 지표를 실시간으로 모니터링할 AWS 수 있습니다.
Amazon Cognito는 웹 및 모바일 앱에 대한 인증, 권한 부여 및 사용자 관리를 제공합니다.
Amazon EventBridge는 애플리케이션을 다양한 소스의 실시간 데이터와 연결할 수 있는 서버리스 이벤트 버스 서비스입니다. 예를 들어 AWS Lambda 함수, API 대상을 사용하는 HTTP 호출 엔드포인트 또는 다른의 이벤트 버스가 있습니다 AWS 계정.
Amazon GuardDuty는 로그를 분석하고 처리하여 AWS 환경에서 예기치 않고 잠재적으로 승인되지 않은 활동을 식별하는 지속적인 보안 모니터링 서비스입니다.
AWS Key Management Service (AWS KMS)를 사용하면 암호화 키를 생성하고 제어하여 데이터를 보호할 수 있습니다.
AWS Lambda는 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행하는 데 도움이 되는 컴퓨팅 서비스입니다. 필요할 때만 코드를 실행하며 자동으로 확장이 가능하므로 사용한 컴퓨팅 시간만큼만 비용을 지불합니다.
Amazon Simple Notification Service(Amazon SNS)를 사용하면 웹 서버 및 이메일 주소를 포함하여 게시자와 클라이언트 간의 메시지 교환을 조정하고 관리할 수 있습니다.
Amazon Simple Storage Service(S3)는 원하는 양의 데이터를 저장, 보호 및 검색하는 데 도움이 되는 클라우드 기반 객체 스토리지 서비스입니다.
AWS Transfer Family를 사용하면 SFTP, FTPS 또는 FTP 프로토콜을 통해 AWS 스토리지 서비스 내부 및 외부로 파일을 전송할 수 있습니다.
Amazon Virtual Private Cloud(Amazon VPC)를 사용하면 정의한 가상 네트워크에서 AWS 리소스를 시작할 수 있습니다. 이 가상 네트워크는 AWS의 확장 가능한 인프라를 사용한다는 이점과 함께 고객의 자체 데이터 센터에서 운영하는 기존 네트워크와 유사합니다.
코드 리포지토리
이 패턴의 코드는 GitHub AWS Transfer Family 및 GuardDuty 맬웨어 스캔 솔루션
모범 사례
제공된 CloudFormation 템플릿은 IAM 역할 및 정책에 대한 최소 권한 권한, 저장 및 전송 중 암호화, 자동 키 교체와 같은 여러 AWS 모범 사례를 통합하도록 설계되었습니다. 프로덕션 환경의 경우 다음과 같은 추가 권장 사항을 구현하는 것이 좋습니다.
Amazon Cognito 사용자를 위한 MFA 활성화
분산 서비스 거부(DDoS) 보호를 AWS Shield 위한 구현
지속적인 규정 준수 모니터링을 AWS Config 위한 구성
포괄적인 API 로깅을 AWS CloudTrail 위한 구현
맬웨어 스캔 이상의 위협 탐지를 위해 Amazon GuardDuty 설정
중앙 집중식 보안 관리를 AWS Security Hub 위한 구현
자격 증명 관리에 AWS Secrets Manager 사용
트래픽 미러링을 사용하여 네트워크 트래픽 모니터링 구현
Amazon S3에서 민감한 데이터 검색 및 보호를 위해 Amazon Macie 구성 Amazon S3
정기적인 보안 평가 및 침투 테스트 구현
공식 인시던트 대응 계획 수립
모든 구성 요소에 대한 자동 패치 구현
관리자를 위한 정기적인 보안 교육 수행
다중 계정 보안 관리를 AWS Organizations 위한 설정
에픽
작업 | 설명 | 필요한 기술 |
---|---|---|
리포지토리를 복제합니다. | 다음 명령을 입력하여 AWS Transfer Family 및 GuardDuty 맬웨어 스캔 솔루션
| 앱 개발자, DevOps 엔지니어 |
CloudFormation 스택을 생성하십시오. |
| 클라우드 관리자, DevOps 엔지니어 |
작업 | 설명 | 필요한 기술 |
---|---|---|
맬웨어 보호를 켭니다. |
| 클라우드 관리자, AWS 관리자 |
사용자 풀에 사용자를 추가합니다. | Amazon Cognito 사용자 풀에 사용자를 한 명 이상 추가합니다. 지침은 Amazon Cognito 설명서의 사용자 풀의 사용자 관리를 참조하세요. | 클라우드 관리자, AWS 관리자 |
작업 | 설명 | 필요한 기술 |
---|---|---|
SFTP 서버 엔드포인트에 연결합니다. |
| 앱 개발자, 클라우드 관리자, 클라우드 아키텍트, DevOps 엔지니어 |
문제 해결
문제 | Solution |
---|---|
사용자 인증 실패 |
이러한 문제 해결 단계를 수행하는 데 도움이 되는 AWS CLI 명령 목록은 추가 정보 섹션의 문제 해결을 위한 유용한 명령을 참조하세요. |
SFTP 인증 실패 |
이러한 문제 해결 단계를 수행하는 데 도움이 되는 AWS CLI 명령 목록은 추가 정보 섹션의 문제 해결을 위한 유용한 명령을 참조하세요. |
파일 업로드 액세스 거부됨 |
이러한 문제 해결 단계를 수행하는 데 도움이 되는 AWS CLI 명령 목록은 추가 정보 섹션의 문제 해결을 위한 유용한 명령을 참조하세요. |
맬웨어 스캔 없음 |
이러한 문제 해결 단계를 수행하는 데 도움이 되는 AWS CLI 명령 목록은 추가 정보 섹션의 문제 해결을 위한 유용한 명령을 참조하세요. |
Lambda 함수 오류 |
이러한 문제 해결 단계를 수행하는 데 도움이 되는 AWS CLI 명령 목록은 추가 정보 섹션의 문제 해결을 위한 유용한 명령을 참조하세요. |
관련 리소스
Transfer Family 웹 앱(Transfer Family 설명서)
추가 정보
문제 해결에 유용한 명령
CloudFormation 스택의 상태를 확인합니다.
aws cloudformation describe-stacks \ --stack-name <STACK_NAME>
Amazon Cognito 사용자 풀의 모든 사용자를 나열합니다.
aws cognito-idp list-users \ --user-pool-id <USER_POOL_ID>
Lambda 함수에 대한 로그 보기:
aws logs describe-log-groups \ --log-group-name-prefix /aws/lambda/
GuardDuty의 상태를 확인합니다.
aws guardduty list-detectors
보안 그룹 규칙 확인:
aws ec2 describe-security-groups \ --group-ids <SECURITY_GROUP_ID> \ --output table
AWS Transfer Family 서버 상태를 확인합니다.
aws transfer describe-server \ --server-id <SERVER_ID>
Amazon S3 버킷의 모든 파일을 나열합니다.
aws s3 ls s3://<BUCKET_NAME>/ \ --recursive
EventBridge 규칙의 상태를 확인합니다.
aws events describe-rule \ --name <RULE_NAME>