Amazon Web Services 한국 블로그
AWS Security Hub을 통한 리전 간 보안이슈 통합 집계 모범 사례
AWS Security Hub는 AWS의 다양한 서비스 및 파트너 제품의 보안 경고를 표준화된 형식으로 통합 집계하여 고객에게 AWS 환경 전반에 걸친 중앙 집중화된 보안 현황을 제공합니다. 고객은 이를 통하여 발견된 보안 이슈에 대하여 보다 빠르고 효과적인 조치를 취할 수 있습니다. 고객 환경 전반에 걸친 보안 현황을 중앙에서 관리할 수 있도록 Security Hub에서는 일부 또는 모든 리전에 대하여 집계가 보여질 통합 리전을 지정할 수 있으며, 이는 위임된 AWS 관리자 계정의 단일 집계 영역으로 연결됩니다. 즉, 고객의 모든 계정 및 연결된 모든 리전에서 발견된 모든 보안 이슈가 통합 리전의 Security Hub를 통해서 중앙관리됩니다. 이 기능을 사용하여 고객은 AWS 환경 전반에 걸친 보안 이슈에 대한 빠짐없는 관리를 통하여 높은 수준의 보안을 유지할 수 있으며, 자원을 효율적으로 활용하여 운영비용을 절감할 수 있습니다.
이 글에서는 여러 리전에 걸쳐서 Security Hub를 사용할 때의 모범 사례를 제공하고자 합니다. 이 게시글에서 소개하는 권장 사항들을 구현하면 통합 리전으로 지정된 단일 AWS 계정의 Security Hub를 통해 모든 리전의 AWS 서비스 및 파트너 제품에서 생성한 보안 경고들을 통합집계하여 효율적인 중앙집중 관리를 수행할 수 있습니다.
리전 간 통합 집계 활성화 하기
Security Hub에서 리전 간 통합 집계를 활성화하려면, 먼저 통합 집계 리전으로 지정이 될 리전의 Security Hub에서 통합 집계를 활성화 하여야 합니다. 이때, “기본적으로 비활성화된 리전”은 통합 집계 리전으로 사용할 수 없습니다. “기본적으로 비활성화된 리전” 목록은 AWS 일반 참조에서 리전 활성화를 참조하십시오.
콘솔 또는 CLI를 사용하여 AWS Security Hub 통합 집계를 활성화 할 수 있습니다. 통합 집계 리전으로 사용할 리전에서 이 설정을 수행해야 합니다.
콘솔에서 Security Hub 통합 집계를 활성화 하려면:
콘솔을 이용하여 Security Hub 통합 집계를 활성화 하기 위해서는,
- 통합 집계를 활성화 할 리전에서 AWS Security Hub 콘솔로 이동합니다. 이어서 왼쪽 사이드 메뉴를 통해 Settings(설정)를 선택합니다. Settings 페이지가 표시되면 리전 Tab을 선택합니다.
- 리전 통합을 선택합니다. 이때, 집계 리전으로 현재 리전이 자동으로 표시됩니다
- 아래부분에 “Link future Regions(향후 리전 연결)” 확인란을 선택합니다. 해당 옵션을 사용하시면 AWS에 새로운 리전이 추가될 경우, 자동으로 해당 리전이 지정된 통합 리전에 포함됩니다. 이 확인란이 선택되지 않은 경우 새롭게 추가된 리전은 Security Hub 통합 집계에 포함되지 않습니다
CLI를 사용하여 Security Hub 통합 집계를 활성화 하려면:
다음 명령을 사용하여 콘솔 대신에 CLI를 이용해서 AWS Security Hub 통합 집계를 활성화 할 수 도 있습니다.
aws securityhub create-finding-aggregator –region <aggregation Region> –region-linking-mode ALL_REGIONS | ALL_REGIONS_EXCEPT_SPECIFIED | SPECIFIED_REGIONS –regions <Region list>
다음은 AWS Security Hub의 통합 집계 활성화를 위한 CLI 명령어 예 입니다:
aws securityhub create-finding-aggregator –region us-east-1 –region-linking-mode SPECIFIED_REGIONS –regions us-west-1,us-west-2
AWS Security Hub 교차 리전 통합 집계에 대한 더 자세한 내용은 리전간 검색결과 통합 집계 페이지를 참조해 주십시오.
SIEM 통합 결과 전송 및 티켓팅 통합
사용자 환경의 모든 AWS 계정에 대한 Security Hub 결과를 SIEM(Security Information and Event Management) 솔루션(예: Amazon OpenSearch Service 또는 APN 파트너 SIEM)이나 JIRA 또는 ServiceNow와 같은 표준화된 티켓팅 시스템으로 통합 할 수 있습니다.
모든 Security Hub 결과를 단일 통합 집계 리전에서 SIEM 또는 티켓팅 솔루션으로 전송하여 운영 오버헤드를 단순화 할 수 있습니다. 이러한 통합 집계 아키텍처는 다양하게 구성될 수 있습니다. 예를 들어, Amazon EventBridge 규칙을 작성하여 Security Hub 결과를 분석하고 AWS Lambda 또는 Amazon Kinesis를 통해서 SIEM 또는 티켓팅 솔루션과 연계된 사용자 정의 통합 지점으로 전송할 수 있습니다.
이때, 사용자 정의 통합 지점은 모든 AWS 계정 및 리전에 대하여 통합집계를 활성화한 위임된 단일 관리자 계정에서 구성하여야 합니다. 만약 각각의 Security Hub 리전들과 SIEM 또는 티켓팅 솔루션 간에 여러개의 통합 지점들을 구성한다면, 불필요한 운영 오버헤드와 여러 통합 지점에 대한 관리 비용 및 탐지 결과들을 SIEM으로 스트리밍하는 데 필요한 자원을 낭비하는 결과를 초래할 수 있습니다.
SIEM 또는 티켓팅 솔루션에서 Security Hub 결과를 수집하게 되면, 다른 여러 로그 소스에 걸쳐 그 결과를 상호 연관시키는 데 도움이 될 수 있습니다. 예를 들어, SIEM 솔루션을 사용하여 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스의 운영 시스템 로그를 분석하여 Security Hub에서 수집된 GuardDuty 탐지 결과와 상호 연관시킴으로서 의심스러운 활동에 대한 조사할 수 있습니다. 또한 ServiceNow 또는 JIRA를 사용하여 Security Hub 결과 및 문제를 동기화하는 티켓팅 솔루션 간의 자동화된 양방향 연동을 구성할 수도 있습니다.
글로벌 리소스와 관련된 GuardDuty 중복 탐지결과 자동 아카이브
Amazon GuardDuty는 AWS IAM 리소스와 관련하여 탐지 결과를 생성합니다. IAM은 특정 리전에 한정되지 않는, 글로벌 리소스 입니다. 따라서 만약 GuardDuty가 특정 리전에 한정되지 않는 IAM API 호출, 예를 들어 ListGroups과 관련된 취약점을 발견한다면 (예시:PenTest:IAMUser/KaliLinux
) 해당 탐지 결과는 GuardDuty가 활성화된 모든 리전에서 생성이 되며, 결과적으로 모든 리전의 Security Hub에 집계됩니다. 이렇게 실제취약점이 불필요하게 복제되어 통합집계에 중복하여 나타나는 것을 방지하려면, GuardDuty 탐지 결과에 대하여 Suppression Rule(금지규칙 또는 억제규칙. 본 글에서는 한국어 콘솔 에서 표시되는 금지 규칙으로 명칭을 통일함)을 적용할 수 있습니다.
콘솔에서 AWS GuardDuty 금지 규칙을 적용하려면:
Security Hub에서 확인되는 중복된 탐지결과를 줄이려면, Security Hub 통합 집계 리전을 제외한 모든 리전에서 글로벌 리소스에 대한 GuardDuty 탐지결과에 대한 금지 규칙을 적용하여야 합니다. 예를 들어, us-east-1에서 Security Hub 결과를 집계하고 있으며 사용자 환경이 미국의 모든 상업용 AWS 영역을 사용하는 경우 us-east-2, us-west-1 및 us-west-2의 GuardDuty에 금지 규칙을 적용하여야 합니다.
AWS 콘솔을 사용하여 AWS GuardDuty 금지 규칙을 만들려면,
- GuardDuty 콘솔로 이동하여 화면 왼쪽에 있는 Findings(결과) 항목을 선택하십시오.
- Suppress Findings(결과 표시 안 함)를 클릭하고, 금지 규칙을 적용할 Finding type(결과 유형)을 필터 추가를 통해 추가합니다.
- Suppression Rule(금지 규칙)의 이름과 설명을 입력하고 Save(저장)합니다.
CLI를 사용하여 AWS GuardDuty 금지 규칙을 적용 하려면:
콘솔을 사용하는 대신 CLI를 통해 CreateFilter API를 사용하여 AWS GuardDuty 금지 규칙을 생성할 수도 있습니다.
- 금지 규칙으로 사용되기를 원하는 파라메타를 이용하여 필터링에 사용할 Request Syntax(요청구문)을 JSON 형식으로 만듭니다.
- 다음 CLI 명령은 금지 규칙의 적용이 될 AWS GuardDuty 결과에 대한 필터링이 잘 동작하는 지 테스트 합니다.
aws guardduty list-findings –detector-id 12abc34d567e8fa901bc2d34e56789f0 –finding-criteria file://criteria.json
- 다음 CLI 명령은 실제로 AWS GuardDuty 결과에 대한 필터링을 구현하여 금지 규칙을 생성 합니다.
aws guardduty create-filter –action ARCHIVE –detector-id 12abc34d567e8fa901bc2d34e56789f0 –name yourfiltername –finding-criteria file://criteria.json
AWS GuardDuty 금지 규칙을 만드는데 필요한 더 자세한 내용은 AWS GuardDuty 금지 규칙(억제 규칙) 만들기를 참조하십시오.
하나의 리전에 글로벌 리소스를 기록하여 AWS Config 비용 절감
GuardDuty와 마찬가지로 AWS Config 역시 특정 리전에 한정되지 않고 모든 리전에서 사용될 수 있는 글로벌 리소스를 기록합니다. AWS Config가 지원하는 글로벌 리소스 유형은 IAM 사용자, 그룹, 역할 및 고객 관리 정책입니다. 특정한 글로벌 리소스에 대한 구성 세부 정보는 모든 리전에서 동일합니다. 따라서 Security Hub에서 AWS 기반 보안 모범 사례 표준을 활성화 한 경우라면, AWS Config를 통해서 해당하는 글로벌 리소스에 대한 체크를 수행하게 되므로, 통합 집계 리전을 제외한 다른 리전에서 글로벌 리소스에 대한 AWS Config 검사가 수행되지 않도록 설정할 필요가 있습니다.
글로벌 리소스에 대한 AWS Config 설정
글로벌 리소스를 기록하도록 여러 리전에서 AWS Config를 설정한 경우에는 AWS Config는 글로벌 리소스가 변경될 때마다 각 각의 리전에 동일한 구성항목을 중복하여 생성하게 됩니다. 이렇게 생성되는 각 구성 항목에 대한 비용은 비록 해당 구성 항목별로 동일한 데이터가 포함된다고 할 지라도 중복되어 청구될 수 있으며, 이는 AWS Config 요금에서 확인할 수 있습니다. 따라서 여러 리전에서 구성 항목들을 중복하여 생성하도록 의도하지 않는 경우라면, 하나의 리전을 지정하여 글로벌 리소스에 대한 구성항목이 생성되도록 AWS Config를 설정해야 합니다. AWS Config 설정에 대한 다양한 모범 사례를 확인하려면 이 블로그 게시물을 참조하십시오.
콘솔에서 글로벌 리소스에 대한 AWS Config 설정을 변경하려면 :
AWS 콘솔에서 AWS Config 글로벌 리소스 설정을 변경하려면 아래 단계를 따르십시오.
- AWS Config 콘솔로 이동하여 화면 왼쪽에 있는 Settings (설정)을 선택하십시오.
- 오른쪽 상단 모서리에서 Edit (편집) 클릭
- Include global resources (전역 리소스 포함) 확인란의 선택을 취소하십시오.
- 글로벌 리소스를 관리할 AWS Config 리전을 제외한 다른 리전의 AWS Config 구성을 이와 같이 모두 변경 하십시오.
CLI를 통해서 글로벌 리소스에 대한 AWS Config 구성을 변경하려면:
콘솔 대신에 CLI를 사용하여 AWS Config에서 글로벌 리소스 추적을 사용하지 않도록 설정할 수 도 있습니다.
aws configservice put-configuration-recorder –configuration-recorder name=default,roleARN=arn:aws:iam::123456789012:role/config-role –recording-group allSupported=true,includeGlobalResourceTypes=false
만약 CloudFormation 템플릿을 사용하여 AWS Config를 배포한 경우에는 AWS::Config::ConfigurationRecorder
하부 항목에서 IncludeGlobalResourceTypes
값을 기록을 원하는 리전을 제외하고는 모두 False
로 변경합니다. 이때, 글로벌 리소스를 관리할 리전에서만 해당 값을 True
로 설정합니다. 또한 AWS CloudFormation StackSets를 여러 AWS 리전에 걸쳐 배포 하는 경우에서 처럼, AWS Config가 활성화된 모든 AWS 영역에 CloudFormation 템플릿을 활용하여 일괄 구성 변경을 할 수도 있습니다.
AWS Config 글로벌 리소스에 대한 자세한 내용은 AWS Config가 기록하는 리소스 선택을 참조하십시오.
글로벌 리소스와 관련된 AWS 기초 모범 사례 컨트롤 비활성화
AWS 기반 보안 모범 사례 표준을 활성화 하면, AWS Config 규칙을 사용하여 AWS 환경의 리소스에 대한 점검을 수행합니다. 앞에서 안내드린 대로 하나의 리전을 지정하여 글로벌 리소스에 대한 구성항목이 생성되도록 AWS Config를 설정 한 이후에는 나머지 리전에 대해 비활성화할 수 있는 AWS 기초 모범 사례 컨트롤을 선택하여 적용 할 수 있습니다. 아래 그림 5와 같이 글로벌 리소스를 처리하는 Security Hub 컨트롤을 사용하지 않도록 설정하십시오.
콘솔 또는 CLI를 사용하여 글로벌 리소스와 관련된 AWS Security Hub 컨트롤을 사용하지 않도록 설정할 수 있습니다.
콘솔을 통해 AWS Security Hub 컨트롤을 비활성화하려면:
아래 단계에 따라 AWS 콘솔에서 글로벌 리소스를 처리하는 Security Hub 컨트롤을 사용하지 않도록 설정하십시오.
- Security Hub 콘솔로 이동하여 화면 왼쪽에 있는 Security Standards(보안 표준)을 선택하십시오.
- AWS Foundation Security Best Practices v.1.0.0(AWS 기초 보안 모범 사례 v1.0.0) 보안 표준을 클릭하십시오.
- 그런 다음 필터 상자를 사용하여 “IAM.”을 검색하십시오. 이제 Security Hub 글로벌 컨트롤인 IAM.1-IAM.8을 볼 수 있을 것입니다.
- 각 컨트롤을 클릭하고 오른쪽 상단 모서리에서 Disable(비활성화)를 선택하십시오.
- 리소스를 사용하지 않도록 설정한 후 사용하지 않도록 설정하는 이유를 추가하고 Disable(비활성화)를 선택하십시오.
CLI를 사용하여 AWS Security Hub 컨트롤을 비활성화 하려면:
콘솔을 사용하는 대신 CLI를 사용하여 글로벌 리소스를 처리하는 Security Hub 컨트롤을 비활성화 할 수도 있습니다.
aws securityhub update-standards-control –standards-control-arn <control ARN> –control-status “DISABLED” –disabled-reason <description of reason to disable>
아래 샘플에서는 CLI 명령을 통해 [IAM.1] IAM policies should not allow full “*” administrative privileges 컨트롤을 Security Hub에서 비활성화 하는 예를 보여줍니다.
aws securityhub update-standards-control –standards-control-arn “arn:aws:securityhub:us-east-1:123456789012:control/aws-foundational-security-best-practices/v/1.0.0/ACM.1” –control-status “DISABLED” –disabled-reason “Not applicable for my service”
또한 멀티 AWS 계정에 대해 특정 Security Hub 컨트롤를 사용하지 않도록 설정하는 방법을 참조하여 운영환경에 구현할 수 도 있습니다.
해당하는 Security Hub 컨트롤을 비활성화 할때는, 글로벌 리소스에 대한 AWS Config 추적 설정이 비활성화 되어 있는 리전에 한하여 수행 하여야 합니다. 글로벌 리소스에 대한 보호를 명확하게 하기 위해서, AWS Config 글로벌 리소스가 사용되도록 설정된 리전에서 해당 글로벌 리소스와 연결된 Security Hub 컨트롤이 활성화 되어 있는지를 반드시 확인하도록 합니다.
AWS Security Hub 컨트롤에 대한 자세한 내용은 개별 제어 비활성화 및 활성화(Disabling and enabling individual AWS Security Hub controls) 를 참조하십시오.
통합집계 리전에서 자동화된 경감조치 구현
보안 이슈에 대한 결과들이 조직의 모든 AWS 계정에 걸쳐 Security Hub로 통합되고 수집되도록 구성한 다음, 이러한 이슈에 대한 자동화된 경감조치가 가능한 모든 경우에 구현되도록 권장 됩니다. (예를 들어 잘못된 리소스의 구성 복구, 감염된 EC2 인스턴스의 자동 격리 등) Security 이러한 자동화된 경감조치를 구현할 수 있도록 Hub는 EventBridge를 통한 엔드 투 엔드 자동화 또는 Security Hub Custom Actions를 통한 사용자 지정 자동화등 다양한 방법을 제공하고 있습니다. 단일 리전에서 자동화된 경감조치 솔루션을 배포하여 여러 리전에 걸친 경감조치가 수행되도록 할 수 있습니다. 이를 통해 보다 적은 리소스를 사용하여 비용 및 운영 오버헤드를 절감할 수 있습니다. Security Hub 자동 대응 및 경감 조치에 대한 보다 자세한 내용은 링크된 블로그의 게시물을 참조하십시오.
자동화된 경감조치를 이미 구현한 경우에는, 여러 리전에서 발생되는 자동화된 경감조치들이 어떻게 상호 동작할 수 있는지를 이해하는 것이 중요합니다. 예를 들어 현재 S3 버킷의 문제를 해결하는 Lamdba 함수가 단일 리전에서 사용되고 있다고 가정하면, 자동화된 경감조치가 호출되는 리전과 문제 해결의 대상이 되는 S3 버킷이 같은 리전에 있을 것입니다. 이제 이 Lambda 함수를 호출하는 리전이 통합집계 리전으로 구현되어, 다른 리전의 S3 버킷의 문제를 해결하여야 한다면 Lambda 함수가 교차 리전 AWS SDK 호출을 수행할 수 있어야 합니다. Lambda 함수는 통합집계가 발생하는 리전에서 실행되지만 S3 버킷은 다른 리전에 있을 수 있으므로, 이러한 상황을 처리하기 위해 코드를 수정해야 할 필요가 있습니다. 또한 Lambda에서 사용하는 역할이 단일 영역으로 제한된 권한을 가지고 있는 경우라면, 다른 리전에 대하여 자동화된 경감조치가 정상적으로 수행될 수 없습니다. 따라서 모든 리전에서 동일한 기능을 사용하려면 Lambda 함수에서 사용하는 IAM 역할에 대한 IAM 정책을 변경해야 합니다. 만일 AWS Organizations에서 서비스 제어 정책(SCP)을 통하여 리전별로 다른 정책이 적용되고 있다면 이 경우, Lambda 함수가 다른 리전의 자원에 대하여 정상적으로 동작할 수 있도록 서비스 제어 정책을 수정해야 합니다.
이렇듯 리전 간 보안 이슈 통합 집계를 활성화 할 경우, 현재 사용 중인 자동화된 경감 조치가 어떤 영향을 받을 수 있는지를 잘 이해해야 합니다. 자동화된 경감조치들이 다양한 리전에서 정상적으로 수행되는지 충분히 테스트 하고 모니터링 하는 것이 권장됩니다.
결론
이 블로그 게시물에서는 Security Hub에서 리전 간 보안 이슈 통합 집계를 사용하여 운영 오버헤드를 줄이고 비용을 절감하는 데 활용할 수 있는 구성들을 살펴보았습니다. 이 글에서 설명한 예시는 대부분의 AWS 환경에 적용 될 수 있으며 AWS 환경의 전반적인 보안 및 운영 효율성을 개선하기 위해 사용할 수 있도록 구성되었습니다.
이 게시물에 대한 피드백이 있는 경우 아래 커멘트 섹션에서 의견을 제출하여 주십시오. 또한 이 게시물에 대해 질문이 있는 경우, re:Post 포럼을 통해서도 응답을 받으실 수 있습니다.
이 글은 AWS Security Blog의 Best practices for cross-Region aggregation of security findings을 AWS 보안 전문 테크니컬 어카운트 매니저로 일하는 황재훈님이 한국어로 번역한 글입니다.