기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS Network Firewall에서 Slack 채널로 알림 전송
작성자: Venki Srivatsav(AWS) 및 Aromal Raj Jayarajan(AWS)
요약
이 패턴은 분산 배포 모델과 함께 Amazon Web Services(AWS) Network Firewall을 사용하여 방화벽을 배포하는 방법과 AWS Network Firewall에서 생성된 알림을 구성 가능한 Slack 채널에 전파하는 방법을 설명합니다.
Payment Card Industry Data Security Standard(PCI DSS)와 같은 규정 준수 표준을 사용하려면 고객 데이터를 보호하기 위해 방화벽을 설치하고 유지 관리해야 합니다. AWS 클라우드에서 가상 프라이빗 클라우드(VPC)는 이러한 규정 준수 요구 사항의 맥락에서 물리적 네트워크와 동일한 것으로 간주됩니다. Network Firewall을 사용하여 VPCs와 간의 네트워크 트래픽을 모니터링하여 규정 준수 표준이 VPCs 적용되는에서 실행되는 워크로드를 보호할 수 있습니다. Network Firewall은 동일한 계정VPCs의 다른에서 무단 액세스를 감지하면 액세스를 차단하거나 알림을 생성합니다. 하지만 Network Firewall은 알림을 전달하는 대상 수를 제한적으로 지원합니다. 이러한 대상에는 Amazon Simple Storage Service(Amazon S3) 버킷, Amazon CloudWatch 로그 그룹 및 Amazon Data Firehose 전송 스트림이 포함됩니다. 이러한 알림에 대한 추가 조치를 취하려면 Amazon Athena 또는 Amazon Kinesis를 사용한 오프라인 분석이 필요합니다.
이 패턴은 Network Firewall에서 생성된 알림을 구성 가능한 Slack 채널로 전파하여 추가 조치를 거의 실시간으로 수행하는 방법을 제공합니다. 기능을 PagerDutyJira 및 이메일과 같은 다른 알림 메커니즘으로 확장할 수도 있습니다. (이러한 사용자 지정은 이 패턴의 범위를 벗어납니다.)
사전 조건 및 제한 사항
사전 조건
Slack 채널(Slack 도움말 센터에서 시작하기
참조) 채널에 메시지를 보내는 데 필요한 권한
API 토큰이 URL 있는 Slack 엔드포인트(앱
을 선택하고 수신 웹후크를 선택하여 해당를 확인합니다URL. 자세한 내용은 Slack API 설명서의 수신 웹후크 생성을 참조하세요 .) 워크로드 서브넷의 Amazon Elastic Compute Cloud(AmazonEC2) 테스트 인스턴스
Network Firewall의 규칙 테스트
테스트 규칙을 트리거하기 위한 실제 또는 시뮬레이션된 트래픽
배포할 소스 파일을 보관하는 S3 버킷
제한 사항
현재이 솔루션은 단일 클래스리스 도메인 간 라우팅(CIDR) 범위만 소스 및 대상에 대한 필터로 지원합니다IPs.
아키텍처
대상 기술 스택
1개 VPC
서브넷 네 개(방화벽용 둘, 워크로드용 둘)
인터넷 게이트웨이
규칙이 포함된 라우팅 테이블 네 개
알림 대상으로 사용되는 S3 버킷, Lambda 함수를 실행하기 위한 버킷 정책 및 이벤트 설정으로 구성됨
Slack 알림 전송을 위한 실행 역할의 Lambda 함수(Slack 알림 전송)
AWS Slack을 저장하기 위한 Secrets Manager 보안 암호 URL
알림 구성이 포함된 네트워크 방화벽
Slack 채널
Slack 채널을 제외한 모든 구성 요소는이 패턴과 함께 제공되는 CloudFormation 템플릿 및 Lambda 함수에 의해 프로비저닝됩니다(코드 섹션 참조).
대상 아키텍처
이 패턴은 Slack 통합이 포함된 분산형 네트워크 방화벽을 설정합니다. 이 아키텍처는 두 개의 가용 영역이 VPC 있는 로 구성됩니다. 에는 네트워크 방화벽 엔드포인트가 있는 두 개의 보호된 서브넷과 두 개의 방화벽 서브넷이 VPC 포함되어 있습니다. 방화벽 정책 및 규칙을 생성하여 보호된 서브넷으로 들어오고 나가는 모든 트래픽을 모니터링할 수 있습니다. 네트워크 방화벽은 S3 버킷에서 모든 알림을 배치하도록 구성되어 있습니다. 이 S3 버킷은 put
이벤트를 수신할 때 Lambda 함수를 직접적으로 호출하도록 구성되어 있습니다. Lambda 함수는 Secrets ManagerURL에서 구성된 Slack을 가져오고 알림 메시지를 Slack 워크스페이스로 전송합니다.

이 아키텍처에 대한 자세한 내용은 AWS 블로그 게시물AWS네트워크 방화벽용 배포 모델을 참조하세요
도구
AWS 서비스
AWS Network Firewall은 AWS 클라우드VPCs의에 대한 상태 저장, 관리형 네트워크 방화벽 및 침입 탐지 및 방지 서비스입니다. Network Firewall을 사용하여의 경계에서 트래픽을 필터링VPC하고에서 워크로드를 보호할 수 있습니다AWS.
AWS Secrets Manager는 자격 증명 스토리지 및 검색을 위한 서비스입니다. Secrets Manager를 사용하면 암호 등 코드의 하드 코딩된 보안 인증 정보를 Secrets Manager를 API 호출하여 프로그래밍 방식으로 보안 암호를 검색할 수 있습니다. 이 패턴은 Secrets Manager를 사용하여 Slack를 저장합니다URL.
Amazon Simple Storage Service(S3)는 객체 스토리지 서비스입니다. Amazon S3를 사용하면 인터넷을 통해 언제 어디서든 원하는 양의 데이터를 저장하고 검색할 수 있습니다. 이 패턴은 Amazon S3를 사용하여 Lambda 함수에 대한 CloudFormation 템플릿과 Python 스크립트를 저장합니다. 또한 S3 버킷을 네트워크 방화벽 알림 대상으로 사용합니다.
AWS CloudFormation는 AWS 리소스를 모델링 및 설정하고, 리소스를 빠르고 일관되게 프로비저닝하고, 수명 주기 전반에 걸쳐 관리할 수 있도록 지원합니다. 템플릿을 사용하여 리소스와 해당 종속성을 설명하고 리소스를 개별적으로 관리하는 대신 스택으로 함께 시작 및 구성할 수 있습니다. 이 패턴은 AWS CloudFormation 를 사용하여 Firewall Manager용 분산 아키텍처를 자동으로 배포합니다.
code
이 패턴의 코드는 Network Firewall Slack Integrationsrc
폴더에는 다음을 볼 수 있습니다.
YAML 형식의 CloudFormation 파일 집합입니다. 이러한 템플릿을 사용하여 이 패턴의 구성 요소를 프로비저닝할 수 있습니다.
Lambda 함수를 생성하기 위한 Python 소스 파일(
slack-lambda.py
)..zip 아카이브 배포 패키지(
slack-lambda.py.zip
)를 통해 Lambda 함수 코드를 업로드합니다.
이러한 파일을 사용하려면 다음 섹션의 지침을 따르세요.
에픽
작업 | 설명 | 필요한 기술 |
---|---|---|
S3 버킷을 생성합니다. |
자세한 내용은 Amazon S3 설명서의 버킷 생성을 참조하세요. | 앱 개발자, 앱 소유자, 클라우드 관리자 |
CloudFormation 템플릿과 Lambda 코드를 업로드합니다. |
| 앱 개발자, 앱 소유자, 클라우드 관리자 |
작업 | 설명 | 필요한 기술 |
---|---|---|
CloudFormation 템플릿을 시작합니다. | S3 버킷과 동일한 AWS 리전에서 AWS CloudFormation 콘솔 CloudFormation 템플릿 배포에 대한 자세한 내용은 CloudFormation 설명서의 AWS CloudFormation 콘솔에서 스택 생성을 참조하세요. | 앱 개발자, 앱 소유자, 클라우드 관리자 |
템플릿에서 파라미터를 작성합니다. | 스택 이름을 지정하고 파라미터 값을 구성합니다. 파라미터, 해당 설명 및 기본값 목록은 추가 정보 섹션의 CloudFormation 파라미터를 참조하세요. | 앱 개발자, 앱 소유자, 클라우드 관리자 |
스택을 생성합니다. |
| 앱 개발자, 앱 소유자, 클라우드 관리자 |
작업 | 설명 | 필요한 기술 |
---|---|---|
배포를 테스트합니다. | AWS CloudFormation 콘솔 또는 AWS 명령줄 인터페이스(AWS CLI)를 사용하여 대상 기술 스택 섹션에 나열된 리소스가 생성되었는지 확인합니다. CloudFormation 템플릿이 성공적으로 배포되지 않는 경우 및 | 앱 개발자, 앱 소유자, 클라우드 관리자 |
기능을 테스트합니다. | 1. 에서 Amazon EC2 콘솔을 엽니다https://console.aws.amazon.com/ec2/ 2. 보호된 서브넷 중 하나에 EC2 인스턴스를 생성합니다. HTTPS 서버로 사용할 Amazon Linux 2AMI(HVM)를 선택합니다. 지침은 Amazon EC2 설명서의 인스턴스 시작을 참조하세요. 참고Amazon Linux 2의 지원 종료가 임박했습니다. 자세한 내용은 Amazon Linux 2 FAQs 3. 다음 사용자 데이터를 사용하여 EC2 인스턴스에 웹 서버를 설치합니다.
4. 다음의 네트워크 방화벽 규칙을 생성하세요. 스테이트리스 규칙:
스테이트풀 규칙:
5. 3단계에서 생성한 웹 서버의 공개 IP를 가져옵니다. 6. 브라우저에서 공개 IP에 액세스합니다. 브라우저에 다음 메시지가 표시됩니다.
그러면 Slack 채널에서도 알림을 받게 됩니다. 메시지 크기에 따라 알림이 지연될 수 있습니다. 테스트 목적으로 너무 좁지 않은 CIDR 필터를 제공하는 것이 좋습니다(예: /32가 있는 CIDR 값은 너무 좁고 /8은 너무 넓음). 자세한 내용은 추가 정보의 필터 동작 섹션을 참조하세요. | 앱 개발자, 앱 소유자, 클라우드 관리자 |
관련 리소스
AWS Network Firewall용 배포 모델
(AWS 블로그 게시물) AWS 네트워크 방화벽 정책(AWS 설명서)
Network Firewall Slack 통합
(GitHub 리포지토리) Slack 워크스페이스 생성
(Slack 도움말 센터)
추가 정보
CloudFormation 파라미터
파라미터 | 설명 | 기본값 또는 샘플 값 |
---|---|---|
| 생성할의 이름VPC입니다. | 점검 |
| 생성할의 CIDR 범위VPC입니다. | 10.0.0.0/16 |
| EC2 인스턴스가 물리적 하드웨어에 분산되는 방법. 옵션은 | 기본값 |
| 인프라의 첫 번째 가용 영역. | us-east-2a |
| 인프라의 두 번째 가용 영역. | us-east-2b |
| 첫 번째 방화벽 서브넷의 CIDR 범위(최소 /28). | 10.0.1.0/24 |
| 두 번째 방화벽 서브넷의 CIDR 범위(최소 /28). | 10.0.2.0/24 |
| 첫 번째로 보호된 (워크로드) 서브넷의 CIDR 범위입니다. | 10.0.3.0/24 |
| 두 번째로 보호된(워크로드) 서브넷의 CIDR 범위입니다. | 10.0.4.0/24 |
| Lambda 소스 코드를 업로드한 기존 S3 버킷의 이름. | us-w2-yourname-lambda-functions |
| Lambda 소스 코드를 업로드한 S3 버킷의 접두사. | aod-test |
| Slack를 보유한 보안 암호의 이름입니다URL. | SlackEnpoint-Cfn |
| 생성한 Slack 채널의 이름. | somename-notifications |
| Slack 사용자 이름. | Slack 사용자 |
| 아무 키나 사용할 수 있습니다. 기본값을 그대로 사용하는 것이 좋습니다. | webhookUrl |
| Slack의 값입니다URL. | https://hooks.slack.com/services/T???9T??/A031885JRM7/9D4Y??????? |
| 네트워크 방화벽 알림 대상으로 사용할 S3 버킷의 이름. 이 버킷은 자동으로 생성됩니다. | us-w2-yourname-security-aod-alerts |
| 보안 암호의 태그 이름. | AppName |
| 지정된 태그 이름의 태그 값. | LambdaSlackIntegration |
| 대상 CIDR 범위의 필터입니다. 자세한 정보는 다음 섹션인 필터 동작을 참조하세요. | 10.0.0.0/16 |
| 대상 일치 항목을 제외할지 또는 포함할지 여부를 나타내는 플래그. 자세한 정보는 다음 섹션을 참조하세요. 유효 값은 | 포함 |
| 알림을 보낼 소스 CIDR 범위의 필터입니다. 자세한 정보는 다음 섹션을 참조하세요. | 118.2.0.0/16 |
| 소스 일치 항목을 제외하거나 포함하는 플래그. 자세한 정보는 다음 섹션을 참조하세요. | 포함 |
필터 동작
AWS Lambda에서 필터를 구성하지 않은 경우 생성된 모든 알림이 Slack 채널로 전송됩니다. 생성된 알림IPs의 소스와 대상은 CloudFormation 템플릿을 배포할 때 구성한 CIDR 범위와 일치합니다. 이때 일치하는 부분이 발견되면 조건이 적용됩니다. 소스 또는 대상이 구성된 CIDR 범위 내에 있고 하나 이상의 소스 또는 대상 중 하나가 조건 로 구성된 경우 include
알림이 생성됩니다. 다음 표에서는 CIDR 값, 조건 및 결과의 예를 제공합니다.
구성됨 CIDR | 알림 IP | 구성됨 | Alert | |
---|---|---|---|---|
소스 | 10.0.0.0/16 | 10.0.0.25 | 포함 | 예 |
대상 | 100.0.0.0/16 | 202.0.0.13 | 포함 |
구성됨 CIDR | 알림 IP | 구성됨 | Alert | |
---|---|---|---|---|
소스 | 10.0.0.0/16 | 10.0.0.25 | 제외 | No |
대상 | 100.0.0.0/16 | 202.0.0.13 | 포함 |
구성됨 CIDR | 알림 IP | 구성됨 | Alert | |
---|---|---|---|---|
소스 | 10.0.0.0/16 | 10.0.0.25 | 포함 | 예 |
대상 | 100.0.0.0/16 | 100.0.0.13 | 포함 |
구성됨 CIDR | 알림 IP | 구성됨 | Alert | |
---|---|---|---|---|
소스 | 10.0.0.0/16 | 90.0.0.25 | 포함 | 예 |
대상 | Null | 202.0.0.13 | 포함 |
구성됨 CIDR | 알림 IP | 구성됨 | Alert | |
---|---|---|---|---|
소스 | 10.0.0.0/16 | 90.0.0.25 | 포함 | No |
대상 | 100.0.0.0/16 | 202.0.0.13 | 포함 |