amazon Web Services에 Microsoft Sentinel 연결하여 AWS EKS 로그 수집

AWS(Amazon Web Services) S3 기반 EKS(Elastic Kubernetes Service) 커넥터를 사용하여 AWS S3 버킷에서 수집된 AWS EKS 감사 로그를 수집하여 Microsoft Sentinel. AWS EKS 감사 로그는 Kubernetes 클러스터 내의 API 서버 요청, 인증 결정 및 클러스터 활동에 대한 자세한 레코드입니다. 이러한 레코드에는 요청이 수신된 시간, 요청의 세부 정보, 요청을 만드는 사용자 및 수행된 작업과 같은 정보가 포함됩니다. 이 로그 분석은 EKS 클러스터에서 실행되는 컨테이너화된 애플리케이션의 보안 및 규정 준수를 유지하는 데 필수적입니다.

이 커넥터는 커넥터에서 사용하는 AWS 리소스 만들기를 간소화하기 위해 AWS CloudFormation 기반 온보딩 스크립트를 제공합니다.

중요

개요

Amazon Web Services S3 EKS 데이터 커넥터는 다음과 같은 사용 사례를 제공합니다.

  • Kubernetes 보안 모니터링 및 위협 탐지: AWS EKS 감사 로그를 분석하여 Kubernetes 클러스터 내에서 무단 액세스, 권한 에스컬레이션 및 의심스러운 API 호출과 같은 보안 위협을 식별하고 대응합니다. 이러한 로그를 Microsoft Sentinel 수집하면 고급 분석 및 위협 인텔리전스를 사용하여 컨테이너화된 워크로드를 대상으로 하는 악의적인 활동을 검색하고 조사할 수 있습니다.

  • 컨테이너화된 환경에 대한 규정 준수 및 감사: AWS EKS 감사 로그는 컨테이너화된 환경에서 규정 준수 보고 및 감사 목적에 매우 중요한 모든 API 서버 상호 작용에 대한 자세한 레코드를 제공합니다. 커넥터를 사용하면 Microsoft Sentinel 내에서 이러한 감사 로그를 쉽게 액세스하고 분석할 수 있으므로 컨테이너 보안에 대한 규정 요구 사항을 충족할 수 있습니다.

  • DevSecOps 및 클러스터 거버넌스: 개발자 활동, 리소스 액세스 패턴 및 EKS 클러스터 내의 구성 변경 내용을 모니터링하여 DevSecOps 워크플로에서 적절한 거버넌스 및 보안 사례를 확인합니다.

이 문서에서는 Amazon Web Services S3 EKS 커넥터를 구성하는 방법을 설명합니다. 설정하는 프로세스에는 AWS 쪽과 Microsoft Sentinel 쪽의 두 부분으로 구성됩니다. 각 측의 프로세스는 다른 쪽에서 사용하는 정보를 생성합니다. 이 양방향 인증은 보안 통신을 만듭니다.

필수 구성 요소

  • Microsoft Sentinel 작업 영역에 대한 쓰기 권한이 있어야 합니다.

  • Microsoft Sentinel 콘텐츠 허브에서 Amazon Web Services 솔루션을 설치합니다. 이전 버전의 솔루션을 이미 설치한 경우 콘텐츠 허브에서 솔루션을 업데이트하여 이 커넥터를 포함하는 최신 버전이 있는지 확인합니다. 자세한 내용은 기본 제공 콘텐츠 Microsoft Sentinel 검색 및 관리를 참조하세요.

  • 감사 로깅을 사용하도록 설정된 기존 AWS EKS 클러스터 또는 설치 프로세스 중에 EKS 클러스터에서 감사 로깅을 사용하도록 설정하는 기능이 있어야 합니다.

  • 다음을 수행하려면 적절한 AWS IAM 권한이 있어야 합니다.

    • IAM 역할 및 정책 만들기
    • S3 버킷 만들기 및 버킷 정책 구성
    • SQS 큐 만들기 및 큐 정책 구성
    • CloudFormation 스택 만들기
    • EKS 클러스터 로깅 설정 구성
    • Kinesis Data Firehose 배달 스트림 만들기
    • 람다 함수 만들기

Amazon Web Services S3 EKS 커넥터 사용 및 구성

커넥터를 사용하도록 설정하고 구성하려면 다음 작업을 완료합니다.

  • AWS 환경에서 다음을 수행합니다.

    Microsoft Sentinel Amazon Web Services S3 EKS 커넥터 페이지는 다음 AWS 작업을 자동화하는 다운로드 가능한 AWS CloudFormation 스택 템플릿을 제공합니다.

    • 감사 로그를 CloudWatch 로그로 보내도록 AWS EKS 클러스터를 구성합니다.

    • Kinesis Data Firehose 배달 스트림을 만들어 CloudWatch에서 S3으로 로그를 변환하고 배달합니다.

    • 처리된 감사 로그를 저장할 S3 버킷 을 만듭니다.

    • SQS(Simple Queue Service) 큐를 만들어 S3에서 새 로그 파일을 만들 때 알림을 제공합니다.

    • OIDC(OpenID Connect)를 통해 AWS에 사용자를 인증하는 웹 ID 공급자 를 만듭니다.

    • AWS 리소스에 액세스하기 위해 OIDC 웹 ID 공급자가 인증한 사용자에게 권한을 부여하는 역할을 만듭니다.

    • 적절한 IAM 권한 정책을 연결하여 해당 리소스에 대한 역할 액세스 권한을 부여합니다(S3 버킷, SQS).

    • EKS 감사 로그를 Microsoft Sentinel 필요한 형식으로 변환하는 람다 함수를 만듭니다.

  • Microsoft Sentinel:

    • SQS 큐를 폴링하고 S3 버킷에서 로그 데이터를 검색하는 로그 수집기를 추가하여 Microsoft Sentinel 포털에서 Amazon Web Services S3 EKS 커넥터를 구성합니다. 아래 지침을 참조하세요.

AWS 환경 설정

온보딩 프로세스를 간소화하기 위해 Microsoft Sentinel Amazon Web Services S3 EKS 커넥터 페이지는 AWS CloudFormation 서비스에서 사용할 다운로드 가능한 템플릿을 제공합니다. CloudFormation 서비스는 이러한 템플릿을 사용하여 AWS에서 리소스 스택을 자동으로 만듭니다. 이러한 스택에는 자격 증명, 권한 및 정책과 함께 이 문서에 설명된 리소스가 포함됩니다.

참고

자동 설정 프로세스를 사용합니다. 특별한 경우는 수동 설정 지침을 참조하세요.

템플릿 파일 준비

AWS 환경을 설정하는 스크립트를 실행하려면 다음 단계를 사용합니다.

  1. Azure Portal Microsoft Sentinel 탐색 메뉴에서 구성을 확장하고 데이터 커넥터를 선택합니다.

    Defender 포털의 빠른 실행 메뉴에서 Microsoft Sentinel > 구성을 확장하고 데이터 커넥터를 선택합니다.

  2. 데이터 커넥터 목록에서 Amazon Web Services S3 EKS 를 선택합니다.

    커넥터가 표시되지 않으면 Microsoft Sentinel 콘텐츠 관리콘텐츠 허브에서 Amazon Web Services 솔루션을 설치하거나 솔루션을 최신 버전으로 업데이트합니다.

  3. 커넥터의 세부 정보 창에서 커넥터 페이지 열기를 선택합니다.

    AWS S3 EKS 커넥터를 보여 주는 데이터 커넥터 갤러리의 스크린샷

  4. 구성 섹션의 1 아래에 있습니다. AWS CloudFormation 배포에서 AWS CloudFormation Stacks 링크를 선택합니다. 이 작업은 새 브라우저 탭에서 AWS 콘솔을 엽니다.

  5. Microsoft Sentinel 열려 있는 포털의 탭으로 돌아갑니다. 템플릿 1: OpenID Connect 인증 배포에서 다운로드를 선택하여 OIDC 웹 ID 공급자를 만드는 템플릿을 다운로드합니다. 템플릿은 지정된 다운로드 폴더에 JSON 파일로 다운로드됩니다.

    참고

    이전 AWS 커넥터 설정의 OIDC 웹 ID 공급자가 이미 있는 경우 이 단계를 건너뜁니다.

  6. 템플릿 2: AWS EKS 리소스 배포에서 다운로드를 선택하여 다른 AWS 리소스를 만드는 템플릿을 다운로드합니다. 템플릿은 지정된 다운로드 폴더에 JSON 파일로 다운로드됩니다.

    AWS S3 EKS 커넥터 구성 페이지의 스크린샷.

AWS CloudFormation 스택 만들기

스택을 만들기 위해 AWS CloudFormation 페이지에 열려 있는 AWS 콘솔 브라우저 탭으로 돌아갑니다.

AWS에 아직 로그인하지 않은 경우 지금 로그인합니다. AWS CloudFormation 페이지로 리디렉션됩니다.

OIDC 웹 ID 공급자 만들기

중요

이전 AWS 커넥터 설정의 OIDC 웹 ID 공급자가 이미 있는 경우 이 단계를 건너뛰고 나머지 AWS 리소스 만들기로 진행합니다.
클라우드용 Microsoft Defender 대해 OIDC Connect 공급자가 이미 설정된 경우 기존 공급자(상업용: api://1462b192-27f7-4cb9-8523-0f4ecb54b47e, Government:api://d4230588-5f84-4281-a9c7-2c15194b28f7)에 대상 그룹으로 Microsoft Sentinel 추가합니다. Microsoft Sentinel 새 OIDC 공급자를 만들려고 하지 마세요.

AWS 콘솔 페이지의 지침에 따라 새 스택을 만듭니다.

  1. 템플릿을 지정하고 템플릿 파일을 업로드합니다.

  2. 파일 선택을 선택하고템플릿 1: 다운로드한 OpenID 연결 인증 deployment.json 파일을 찾습니다.

  3. 스택의 이름을 선택합니다.

  4. 프로세스의 나머지 부분을 진행하여 스택을 만듭니다.

나머지 AWS 리소스 만들기

  1. AWS CloudFormation 스택 페이지로 돌아가서 새 스택을 만듭니다.

  2. 파일 선택을 선택하고 템플릿 2: AWS EKS 리소스 deployment.json 다운로드한 파일을 찾습니다.

  3. 스택의 이름을 선택합니다.

  4. 메시지가 표시되면 다음 매개 변수를 입력합니다.

    • EKSClusterName: 기존 EKS 클러스터의 이름을 입력합니다.
    • Microsoft Sentinel 작업 영역 ID: 작업 영역 ID를 찾으려면 다음을 수행합니다.
      • Azure Portal Microsoft Sentinel 탐색 메뉴에서 구성을 확장하고 설정을 선택합니다. 작업 영역 설정 탭을 선택하고 Log Analytics 작업 영역 페이지에서 작업 영역 ID를 찾습니다.
      • Defender 포털의 빠른 실행 메뉴에서 시스템을 확장하고 설정을 선택합니다. Microsoft Sentinel 선택한 다음 설정에서 [WORKSPACE_NAME]Log Analytics 설정을 선택합니다. 새 브라우저 탭에서 열리는 Log Analytics 작업 영역 페이지에서 작업 영역 ID를 찾습니다.
    • BucketName: EKS 감사 로그가 저장되는 S3 버킷의 고유한 이름을 입력합니다.
    • SentinelSQSQueueName: SQS 큐의 이름을 입력합니다(기본값: MicrosoftSentinelEKSSqs).
    • AwsRoleName: IAM 역할의 이름을 입력합니다("OIDC_", 기본값: OIDC_MicrosoftSentinelRoleEKS).
  5. 프로세스의 나머지 부분을 진행하여 스택을 만듭니다.

  6. 스택 만들기가 완료되면 CloudFormation 스택의 출력 섹션으로 이동하여 다음 값을 확인합니다.

    • SentinelRoleArn: Microsoft Sentinel 액세스를 위해 만든 IAM 역할의 ARN입니다.
    • SentinelSQSQueueURL: SQS 큐의 URL입니다.
    • Step1EnableEKSAuditLogging: EKS 감사 로깅을 사용하도록 설정하는 AWS CLI 명령입니다.
    • 2단계CreateSubscriptionFilter: CLOUDWatch 로그 구독 필터를 만드는 AWS CLI 명령입니다.

EKS 감사 로깅 사용 및 로그 스트리밍 구성

CloudFormation 스택을 만든 후 EKS 클러스터에서 감사 로깅을 사용하도록 설정하고 로그 스트리밍을 구성합니다.

  1. EKS 클러스터에서 감사 로깅을 아직 사용하도록 설정하지 않은 경우 CloudFormation 스택에서 Step1EnableEKSAuditLogging 출력에 제공된 명령을 실행합니다.

  2. 감사 로그가 CloudWatch 로그에 표시되기 시작할 때까지 5분 정도 기다립니다.

  3. Step2CreateSubscriptionFilter 출력에 제공된 명령을 실행하여 CloudWatch에서 Kinesis Data Firehose 배달 스트림으로 감사 로그를 스트리밍하는 구독 필터를 만듭니다.

  4. 람다 함수는 EKS 감사 로그를 Microsoft Sentinel 예상 형식으로 자동으로 변환하고 S3에 전달하여 수집을 위해 SQS 알림을 트리거합니다.

로그 수집기 추가

리소스 스택을 만들고 EKS 감사 로깅을 구성하면 Microsoft Sentinel 데이터 커넥터 페이지로 열려 있는 브라우저 탭으로 돌아가서 구성 프로세스의 두 번째 부분을 시작합니다.

  1. 구성 섹션의 2 아래에 있습니다. 새 수집기를 연결하고새 수집기 추가를 선택합니다.

    AWS EKS 커넥터 구성의 두 번째 부분 스크린샷

  2. 만든 IAM 역할의 역할 ARN을 입력합니다. CloudFormation 스택의 SentinelRoleArn 출력 값을 사용합니다(예: arn:aws:iam::{AWS_ACCOUNT_ID}:role/OIDC_MicrosoftSentinelRoleEKS).

  3. 만든 SQS 큐 URL을 입력합니다. CloudFormation 스택의 SentinelSQSQueueURL 출력 값을 사용합니다(예: https://sqs.{AWS_REGION}.amazonaws.com/{AWS_ACCOUNT_ID}/MicrosoftSentinelEKSSqs).

  4. 연결을 선택하여 수집기를 추가합니다. 이 작업은 로그를 검색하고 Log Analytics 작업 영역의 전용 AWSEKSLogs_CL 테이블에 수집하는 Azure Monitor 에이전트에 대한 데이터 수집 규칙을 만듭니다.

    EKS 로그에 대한 새 수집기를 추가하는 스크린샷

데이터 수집 확인

  1. 커넥터를 설정한 후 로그 페이지(또는 Defender 포털의 고급 헌팅 페이지)로 이동하여 다음 쿼리를 실행합니다. 결과가 있으면 커넥터가 제대로 작동합니다.

    AWSEKSLogs_CL
    | take 10
    
  2. 더 구체적인 쿼리를 실행하여 EKS 감사 데이터를 탐색할 수도 있습니다.

    // View recent EKS audit events by verb (API action)
    AWSEKSLogs_CL
    | where TimeGenerated > ago(1h)
    | summarize count() by Verb
    | order by count_ desc
    
    // Monitor authentication decisions
    AWSEKSLogs_CL
    | where TimeGenerated > ago(24h)
    | where AuthDecision != ""
    | summarize count() by AuthDecision, User
    | order by count_ desc
    
    // Track failed requests (non-200 response codes)
    AWSEKSLogs_CL
    | where TimeGenerated > ago(24h)
    | where ResponseCode != 200
    | project TimeGenerated, User, Verb, ObjectRef, ResponseCode, SourceIPs
    | order by TimeGenerated desc
    

스키마 참조

EKS 감사 로그는 다음 스키마를 사용하여 AWSEKSLogs_CL 테이블에 수집됩니다.

유형 설명
TimeGenerated datetime 감사 이벤트가 생성된 시간
AwsAccountId 문자열 EKS 클러스터가 있는 AWS 계정 ID
지역 문자열 EKS 클러스터가 있는 AWS 지역
ClusterName 문자열 EKS 클러스터의 이름
동사 문자열 API 요청과 연결된 HTTP 동사(GET, POST, PUT, DELETE 등)
사용자 문자열 요청을 하는 사용자에 대한 정보
SourceIPs 동적 요청이 시작된 원본 IP 주소의 배열
UserAgent 문자열 요청을 만드는 클라이언트의 사용자 에이전트 문자열
ObjectRef 문자열 액세스 중인 Kubernetes 개체에 대한 참조
ResponseCode int API 요청에 대한 HTTP 응답 코드
단계 문자열 요청 처리 단계(RequestReceived, ResponseStarted, ResponseComplete, Panic)
AuthDecision 문자열 API 서버에서 내린 권한 부여 결정
RawEvent 동적 고급 분석을 위한 원시 감사 이벤트 데이터 완료

문제 해결

일반적인 문제 및 해결 방법

  • AWSEKSLogs_CL 테이블에 데이터가 표시되지 않습니다.

    • 클러스터에서 EKS 감사 로깅이 사용하도록 설정되어 있는지 확인합니다.
    • CloudWatch 로그 구독 필터가 올바르게 구성되었는지 확인합니다.
    • 람다 함수가 오류 없이 로그를 처리하는지 확인합니다. CloudWatch 로그에서 람다 함수 로그를 확인합니다.
    • SQS 메시지를 트리거하도록 S3 버킷 알림이 올바르게 구성되었는지 확인합니다.
  • CloudFormation 스택 만들기가 실패합니다.

    • 필요한 모든 리소스를 만들 수 있는 충분한 IAM 권한이 있는지 확인합니다.
    • 제공한 EKS 클러스터 이름이 계정에 있는지 확인합니다.
    • S3 버킷 이름이 전역적으로 고유한지 확인합니다.
  • 인증 오류:

    • OIDC 웹 ID 공급자가 올바르게 구성되어 있는지 확인합니다.
    • IAM 역할 권한이 S3 및 SQS 리소스에 액세스하기에 충분한지 확인합니다.
    • CloudFormation 템플릿에 사용되는 작업 영역 ID가 Microsoft Sentinel 작업 영역과 일치하는지 확인합니다.

고급 모니터링

아직 수행하지 않은 경우 커넥터가 데이터를 수신하지 않거나 다른 문제가 있는 시기를 알 수 있도록 데이터 커넥터 상태 모니터링을 구현합니다. 자세한 내용은 데이터 커넥터의 상태 모니터링을 참조하세요.

다음 단계

이 문서에서는 포괄적인 Kubernetes 보안 모니터링을 위해 AWS EKS 감사 로그를 Microsoft Sentinel 연결하는 방법을 알아보았습니다. Microsoft Sentinel 대한 자세한 내용은 다음 문서를 참조하세요.