쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

퍼블릭 IP 주소에서 액세스를 허용하는 AWS 보안 그룹 자동 감사 - 권장 가이드

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

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

퍼블릭 IP 주소에서 액세스를 허용하는 AWS 보안 그룹 자동 감사

작성자: Eugene Shifer(AWS) 및 Stephen DiCato(AWS)

요약

보안 모범 사례로서 반드시 필요한 것에만 AWS 리소스가 노출되는 것을 최소화하는 것이 중요합니다. 예를 들어 일반 대중에게 서비스를 제공하는 웹 서버는 인터넷에서 인바운드 액세스를 허용해야 하지만 불필요한 노출을 줄이기 위해 다른 워크로드에 대한 액세스를 특정 네트워크로 제한해야 합니다. Amazon Virtual Private Cloud(Amazon VPC)의 보안 그룹은 리소스 액세스를 제한하는 데 도움이 되는 효과적인 제어입니다. 그러나 보안 그룹을 평가하는 것은 특히 다중 계정 아키텍처에서 번거로운 작업일 수 있습니다. AWS Config 규칙AWS Security Hub 제어는 퍼블릭 인터넷(0.0.0.0/0)에서 Secure Shell(SSH), HTTP, HTTPS 및 Windows 원격 데스크톱 프로토콜(RDP)과 같은 특정 네트워크 통신 프로토콜에 대한 액세스를 허용하는 보안 그룹을 식별하는 데 도움이 될 수 있습니다. 그러나 서비스가 비표준 포트에서 실행되거나 액세스가 특정 퍼블릭 IP 주소로 제한된 경우에는 이러한 규칙 및 제어가 적용되지 않습니다. 예를 들어 웹 서비스가 표준 TCP 포트 443 대신 TCP 포트 8443과 연결된 경우 발생할 수 있습니다. 이는 개발자가 테스트와 같이 홈 네트워크에서 서버에 액세스할 수 있는 경우에도 발생할 수 있습니다.

이를 해결하기 위해이 패턴에 제공된 코드형 인프라(IaC) 솔루션을 사용하여 AWS 계정 또는 AWS 조직의 모든 워크로드에 대한 비프라이빗(RFC 1918 규정 미준수) IP 주소의 액세스를 허용하는 보안 그룹을 식별할 수 있습니다. AWS CloudFormation 템플릿은 사용자 지정 AWS Config 규칙, AWS Lambda 함수 및 필요한 권한을 프로비저닝합니다. 단일 계정의 스택으로 배포하거나 전체 조직에 스택 세트로 배포하고를 통해 관리할 수 있습니다 AWS Organizations.

사전 조건 및 제한 사항

사전 조건 

  • 활성 AWS 계정

  • GitHub 사용 경험

  • 단일에 배포하는 경우 AWS 계정:

  • AWS 조직에 배포하는 경우:

    • CloudFormation 스택 세트를 생성할 수 있는 권한

    • AWS Organizations 통합으로 설정된 Security Hub

    • 이 솔루션을 배포하는 계정에AWS Config 설정

    • AWS Config 및 Security Hub의 위임된 관리자 AWS 계정 로를 지정합니다.

제한 사항

  • Security Hub가 활성화되지 않은 개별 계정에 배포하는 경우 AWS Config 를 사용하여 결과를 평가할 수 있습니다.

  • AWS Config 및 Security Hub에 대한 위임된 관리자가 없는 조직에 배포하는 경우 개별 멤버 계정에 로그인하여 결과를 확인해야 합니다.

  • AWS Control Tower 를 사용하여 조직의 계정을 관리하고 관리하는 경우 Customizations for AWS Control Tower (CfCT)를 사용하여이 패턴으로 IaC를 배포합니다. CloudFormation 콘솔을 사용하면 AWS Control Tower 가드레일에서 구성 드리프트가 생성되어 조직 단위(OUs) 또는 관리형 계정을 다시 등록해야 합니다.

  • 일부 AWS 서비스 는 전혀 사용할 수 없습니다 AWS 리전. 리전 가용성은 AWS 서비스 리전별 섹션을 참조하세요. 특정 엔드포인트는 서비스 엔드포인트 및 할당량 페이지를 참조하고 서비스의 링크를 선택합니다.

아키텍처

개인에 배포 AWS 계정

다음 아키텍처 다이어그램은 단일 내에서 AWS 리소스의 배포를 보여줍니다 AWS 계정. CloudFormation 콘솔을 통해 직접 CloudFormation 템플릿을 사용하여 리소스를 프로비저닝합니다. Security Hub가 활성화된 경우 AWS Config 또는 Security Hub에서 결과를 볼 수 있습니다. Security Hub가 활성화되지 않은 경우 에서만 결과를 볼 수 있습니다 AWS Config.

단일 AWS 계정에서 IaC 템플릿을 CloudFormation 스택으로 배포합니다.

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

  1. CloudFormation 스택을 생성합니다. 그러면 Lambda 함수와 AWS Config 규칙이 배포됩니다. 규칙과 함수 모두 AWS Config 및 로그에 리소스 평가를 게시하는 데 필요한 AWS Identity and Access Management (IAM) 권한으로 설정됩니다.

  2. AWS Config 규칙은 탐지 평가 모드에서 작동하며 24시간마다 Lambda 함수를 호출합니다.

  3. Lambda 함수는 보안 그룹을 평가하고에 업데이트를 전송합니다 AWS Config.

  4. Security Hub는 모든 AWS Config 조사 결과를 수신합니다.

  5. 계정에서 설정한 서비스에 AWS Config따라 Security Hub 또는에서 조사 결과를 볼 수 있습니다.

AWS 조직에 배포

다음 다이어그램은 AWS Organizations 및를 통해 관리되는 여러 계정에 패턴 배포를 보여줍니다 AWS Control Tower. CfCT를 통해 CloudFormation 템플릿을 배포합니다. 평가 결과는 Security Hub의 위임된 관리자 계정에서 중앙 집중화됩니다. 다이어그램의 AWS CodePipeline 워크플로 섹션에는 CfCT 배포 중에 발생하는 배경 단계가 나와 있습니다.

AWS 조직에서 IaC 템플릿을 CloudFormation 스택 세트로 배포합니다.

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

  1. 관리 계정에서 IaC 템플릿의 압축(ZIP) 파일을 CfCT에서 배포한 Amazon Simple Storage Service(Amazon S3) 버킷에 업로드합니다.

  2. CfCT 파이프라인은 파일의 압축을 풀고, cfn-nag(GitHub) 검사를 실행하고, 템플릿을 CloudFormation 스택 세트로 배포합니다.

  3. CfCT 매니페스트 파일에서 지정하는 구성에 따라 CloudFormation StackSets는 스택을 개별 계정 또는 지정된 OUs. 그러면 대상 계정에 Lambda 함수와 AWS Config 규칙이 배포됩니다. 규칙과 함수 모두 AWS Config 및 로그에 리소스 평가를 게시하는 데 필요한 IAM 권한으로 설정됩니다.

  4. AWS Config 규칙은 탐지 평가 모드에서 작동하며 24시간마다 Lambda 함수를 호출합니다.

  5. Lambda 함수는 보안 그룹을 평가하고에 업데이트를 전송합니다 AWS Config.

  6. AWS Config 는 모든 조사 결과를 Security Hub로 전달합니다.

  7. Security Hub 조사 결과는 위임된 관리자 계정에 집계됩니다.

  8. Security Hub의 위임된 관리자 계정에서 집계된 결과를 볼 수 있습니다.

도구

AWS 서비스

  • AWS CloudFormation는 AWS 리소스를 설정하고, 빠르고 일관되게 프로비저닝하고, AWS 계정 및의 수명 주기 전반에 걸쳐 리소스를 관리할 수 있도록 지원합니다 AWS 리전.

  • AWS Config는의 리소스 AWS 계정 와 리소스 구성 방법에 대한 세부 보기를 제공합니다. 리소스가 서로 관련되는 방식과 리소스의 구성이 시간이 지남에 따라 변경된 방식을 식별하는 데 도움이 됩니다. An AWS Config rule은 리소스에 대한 이상적인 구성 설정을 정의하고 AWS 리소스가 규칙의 조건을 준수하는지 여부를 평가할 AWS Config 수 있습니다.

  • AWS Control Tower는 규범적 모범 사례를 따라 AWS 다중 계정 환경을 설정하고 관리하는 데 도움이 됩니다. AWS Control Tower (CfCT)에 대한 사용자 지정을 사용하면 AWS Control Tower 랜딩 존을 사용자 지정하고 AWS 모범 사례에 맞게 조정할 수 있습니다. 이 솔루션에 대한 사용자 지정은 CloudFormation 템플릿 및 AWS Organizations 서비스 제어 정책(SCPs)을 통해 구현됩니다.

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

  • AWS Organizations는 여러를 생성하여 중앙에서 관리하는 조직 AWS 계정 으로 통합하는 데 도움이 되는 계정 관리 서비스입니다.

  • AWS Security Hub는의 보안 상태에 대한 포괄적인 보기를 제공합니다 AWS. 또한 보안 업계 표준 및 모범 사례를 기준으로 AWS 환경을 확인하는 데 도움이 됩니다.

기타 도구

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

코드 리포지토리

이 패턴의 코드는 GitHub Detect 취약한 보안 그룹 리포지토리에서 사용할 수 있습니다.

모범 사례

다음 리소스의 모범 사례를 준수하는 것이 좋습니다.

에픽

작업설명필요한 기술

배포 전략을 결정합니다.

솔루션과 코드를 검토하여 AWS 환경에 대한 배포 전략을 결정합니다. 단일 계정에 배포할지 아니면 AWS 조직에 배포할지 결정합니다.

앱 소유자, 일반 AWS

리포지토리를 복제합니다.

다음 명령을 입력하여 취약한 보안 그룹 감지 리포지토리를 복제합니다.

git clone https://github.com/aws-samples/detect-public-security-groups.git
앱 개발자, 앱 소유자

Python 버전을 검증합니다.

  1. 복제된 리포지토리의 최상위 디렉터리로 이동합니다.

    cd detect-public-security-groups
  2. Security-Group-Public-Assessment.yaml을 엽니다.

  3. SgPublicAccessCheckLambdaFunction 리소스에서 Python 버전이 대상과 호환되는지 확인합니다 AWS 리전. 기본적으로이 함수는 Python 3.12를 사용합니다. 자세한 내용은 AWS Lambda Python 3.12에 대한 지원 추가를 참조하세요. 필요한 경우 Python 버전을 업데이트합니다.

  4. Security-Group-Public-Assessment.yaml을 저장하고 닫습니다.

관리자, 앱 개발자

CloudFormation 템플릿 검토

작업설명필요한 기술

배포 전략을 결정합니다.

솔루션과 코드를 검토하여 AWS 환경에 대한 배포 전략을 결정합니다. 단일 계정에 배포할지 아니면 AWS 조직에 배포할지 결정합니다.

앱 소유자, 일반 AWS

리포지토리를 복제합니다.

다음 명령을 입력하여 취약한 보안 그룹 감지 리포지토리를 복제합니다.

git clone https://github.com/aws-samples/detect-public-security-groups.git
앱 개발자, 앱 소유자

Python 버전을 검증합니다.

  1. 복제된 리포지토리의 최상위 디렉터리로 이동합니다.

    cd detect-public-security-groups
  2. Security-Group-Public-Assessment.yaml을 엽니다.

  3. SgPublicAccessCheckLambdaFunction 리소스에서 Python 버전이 대상과 호환되는지 확인합니다 AWS 리전. 기본적으로이 함수는 Python 3.12를 사용합니다. 자세한 내용은 AWS Lambda Python 3.12에 대한 지원 추가를 참조하세요. 필요한 경우 Python 버전을 업데이트합니다.

  4. Security-Group-Public-Assessment.yaml을 저장하고 닫습니다.

관리자, 앱 개발자
작업설명필요한 기술

CloudFormation 템플릿을 배포합니다.

CloudFormation 템플릿을 AWS 환경에 배포합니다. 다음 중 하나를 수행합니다.

앱 개발자, AWS 관리자, 일반 AWS

배포를 확인합니다.

CloudFormation 콘솔에서 스택 또는 스택 세트가 성공적으로 배포되었는지 확인합니다.

AWS 관리자, 앱 소유자

CloudFormation 템플릿 배포

작업설명필요한 기술

CloudFormation 템플릿을 배포합니다.

CloudFormation 템플릿을 AWS 환경에 배포합니다. 다음 중 하나를 수행합니다.

앱 개발자, AWS 관리자, 일반 AWS

배포를 확인합니다.

CloudFormation 콘솔에서 스택 또는 스택 세트가 성공적으로 배포되었는지 확인합니다.

AWS 관리자, 앱 소유자
작업설명필요한 기술

AWS Config 규칙 조사 결과를 봅니다.

Security Hub에서 다음을 수행하여 개별 조사 결과 목록을 봅니다.

  1. Security Hub 콘솔을 엽니다.

  2. 탐색 창에서 결과를 선택합니다.

  3. 필터 추가 상자에 다음 필터를 추가합니다.

    • 규정 준수 상태는 입니다. FAILED

    • 제목은 입니다. SgPublicAccessCheck

  4. 적용을 선택합니다.

Security Hub에서 다음을 수행하여 그룹화된 총 조사 결과 목록을 봅니다. AWS 계정

  1. Security Hub 콘솔을 엽니다.

  2. 탐색 창에서 인사이트를 선택합니다.

  3. 인사이트 생성을 선택하세요.

  4. 인사이트에 대한 그룹화 속성을 선택하려면

    1. 검색 상자를 선택하여 필터 옵션을 표시합니다.

    2. 그룹화 기준을 선택합니다.

    3. AwsAccountId를 선택합니다.

    4. 적용을 선택합니다.

  5. 필터 추가 상자에 다음 필터를 추가합니다.

    • 제목은 입니다. SgPublicAccessCheck

    • 규정 준수 상태는 입니다. FAILED

  6. 인사이트 생성을 선택하세요.

  7. 인사이트 이름을 입력한 다음 인사이트 생성를 선택하세요.

에서 조사 결과 목록을 AWS Config보려면 AWS Config 설명서의 규정 준수 정보 및 평가 결과 보기의 지침을 따르세요.

AWS 관리자, AWS 시스템 관리자, 클라우드 관리자

조사 결과 검토

작업설명필요한 기술

AWS Config 규칙 조사 결과를 봅니다.

Security Hub에서 다음을 수행하여 개별 조사 결과 목록을 봅니다.

  1. Security Hub 콘솔을 엽니다.

  2. 탐색 창에서 결과를 선택합니다.

  3. 필터 추가 상자에 다음 필터를 추가합니다.

    • 규정 준수 상태는 입니다. FAILED

    • 제목은 입니다. SgPublicAccessCheck

  4. 적용을 선택합니다.

Security Hub에서 다음을 수행하여 그룹화된 총 조사 결과 목록을 봅니다. AWS 계정

  1. Security Hub 콘솔을 엽니다.

  2. 탐색 창에서 인사이트를 선택합니다.

  3. 인사이트 생성을 선택하세요.

  4. 인사이트에 대한 그룹화 속성을 선택하려면

    1. 검색 상자를 선택하여 필터 옵션을 표시합니다.

    2. 그룹화 기준을 선택합니다.

    3. AwsAccountId를 선택합니다.

    4. 적용을 선택합니다.

  5. 필터 추가 상자에 다음 필터를 추가합니다.

    • 제목은 입니다. SgPublicAccessCheck

    • 규정 준수 상태는 입니다. FAILED

  6. 인사이트 생성을 선택하세요.

  7. 인사이트 이름을 입력한 다음 인사이트 생성를 선택하세요.

에서 조사 결과 목록을 AWS Config보려면 AWS Config 설명서의 규정 준수 정보 및 평가 결과 보기의 지침을 따르세요.

AWS 관리자, AWS 시스템 관리자, 클라우드 관리자

문제 해결

문제Solution

CloudFormation 스택 세트 생성 또는 삭제에 실패했습니다.

AWS Control Tower 가 배포되면 필요한 가드레일을 적용하고 AWS Config 집계자 및 규칙을 제어합니다. 여기에는 CloudFormation을 통한 직접 변경 방지가 포함됩니다. 연결된 모든 리소스를 포함하여이 CloudFormation 템플릿을 올바르게 배포하거나 제거하려면 CfCT를 사용해야 합니다.

CfCT가 CloudFormation 템플릿을 삭제하지 못합니다.

매니페스트 파일에서 필요한 변경을 수행하고 템플릿 파일을 제거한 후에도 CloudFormation 템플릿이 지속되는 경우 매니페스트 파일에 enable_stack_set_deletion 파라미터가 포함되어 있고 값이 로 설정되어 있는지 확인합니다false. 자세한 내용은 CfCT 설명서의 스택 세트 삭제를 참조하세요.

관련 리소스

프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.