사용자 지정 소스에서 데이터 수집 - Amazon Security Lake

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

사용자 지정 소스에서 데이터 수집

Amazon Security Lake는 타사 사용자 지정 소스에서 로그와 이벤트를 수집할 수 있습니다. Security Lake는 각 사용자 지정 소스에 대해 다음을 처리합니다.

  • Amazon S3 버킷의 소스에 고유한 접두사를 제공합니다.

  • 사용자 지정 소스가 데이터 레이크에 데이터를 쓸 수 있도록 허용하는 역할 AWS Identity and Access Management (IAM) 을 생성합니다. 이 역할의 권한 경계는 라는 AWS 관리형 정책에 의해 설정됩니다. AmazonSecurityLakePermissionsBoundary

  • 소스가 Security Lake에 쓰는 객체를 구성하는 AWS Lake Formation 테이블을 생성합니다.

  • AWS Glue 크롤러를 설정하여 소스 데이터를 분할합니다. 크롤러가 테이블로 채웁니다. AWS Glue Data Catalog 또한 새 소스 데이터를 자동으로 검색하고 스키마 정의를 추출합니다.

사용자 지정 소스를 Security Lake에 추가하려면 다음 요구 사항을 충족해야 합니다.

  1. 대상 - 사용자 지정 소스는 소스에 할당된 접두사 아래에 있는 S3 객체 세트로 Security Lake에 데이터를 쓸 수 있어야 합니다. 여러 범주의 데이터가 포함된 원본의 경우 고유한 OCSF (개방형 사이버 보안 스키마 프레임워크) 이벤트 클래스를 각각 별도의 원본으로 제공해야 합니다. Security Lake는 사용자 지정 소스가 S3 버킷의 지정된 위치에 쓸 수 있도록 허용하는 IAM 역할을 생성합니다.

    참고

    OCSF 유효성 검사 도구를 사용하여 사용자 지정 소스가 호환되는지 확인하십시오. OCSF Schema 1.1

  2. 형식 - 사용자 지정 소스에서 수집된 각 S3 객체는 Apache Parquet 파일 형식을 지정해야 합니다.

  3. 스키마 - Parquet 형식 객체 내의 각 레코드에 동일한 OCSF 이벤트 클래스를 적용해야 합니다.

사용자 지정 소스 수집 모범 사례

효율적인 데이터 처리 및 쿼리를 촉진하려면 Security Lake에 사용자 지정 소스를 추가할 때 다음 모범 사례를 따르는 것이 좋습니다.

분할

개체는 소스 위치, AWS 리전 AWS 계정, 날짜를 기준으로 파티셔닝해야 합니다. 파티션 데이터 경로의 형식은 bucket-name/source-location/region=region/accountId=accountID/eventDay=YYYYMMDD와 같습니다.

샘플 파티션은 aws-security-data-lake-us-west-2-lake-uid/source-location/region=us-west-2/accountId=123456789012/eventDay=20230428/과 같습니다.

  • bucket-name— Security Lake가 사용자 지정 소스 데이터를 저장하는 Amazon S3 버킷의 이름입니다.

  • source-location— S3 버킷에 있는 사용자 지정 소스의 접두사. Security Lake는 지정된 소스의 모든 S3 객체를 이 접두사 아래에 저장하며 접두사는 해당 소스에 고유합니다.

  • region— 데이터가 AWS 리전 기록되는 대상.

  • accountId— 소스 파티션의 레코드가 속하는 AWS 계정 ID입니다.

  • eventDay— 이벤트가 발생한 날짜로, 8자리 문자열 (YYYYMMDD) 형식으로 지정됩니다.

객체 크기 및 속도

Security Lake에 기록된 객체는 5분 동안 레코드를 버퍼링해야 합니다. 버퍼 기간에 데이터가 너무 많아 효율적으로 쿼리할 수 없는 경우 사용자 지정 소스는 해당 파일의 평균 크기가 256MB 미만으로 유지되는 한 5분 내에 여러 레코드를 쓸 수 있습니다. 처리량이 낮은 사용자 지정 소스는 5분마다 더 작은 객체를 작성하여 5분의 수집 지연 시간을 유지하고 더 오랜 기간 동안 레코드를 버퍼링할 수 있습니다.

Parquet 설정

Security Lake는 Parquet 버전 1.x 및 2.x를 지원합니다. 데이터 페이지 크기는 1MB (비압축)로 제한해야 합니다. 행 그룹 크기는 256MB (압축)를 넘지 않아야 합니다. Parquet 개체 내에서 압축하려면 표준이 선호됩니다.

정렬

데이터를 쿼리하는 비용을 줄이려면 Parquet 형식의 각 개체 내에서 레코드를 시간순으로 정렬해야 합니다.

사용자 지정 소스를 추가하기 위한 사전 요구 사항

사용자 지정 소스를 추가할 때 Security Lake는 원본이 데이터 레이크의 올바른 위치에 데이터를 쓸 수 있도록 허용하는 IAM 역할을 생성합니다. 역할 이름은 형식을 AmazonSecurityLake-Provider-{name of the custom source}-{region} 따릅니다. 여기서 region 는 사용자 지정 소스를 추가하는 형식입니다. AWS 리전 Security Lake는 데이터 레이크에 대한 액세스를 허용하는 정책을 역할에 연결합니다. 고객 관리 AWS KMS 키로 데이터 레이크를 암호화한 경우 Security Lake는 kms:Decrypt kms:GenerateDataKey 권한과 함께 정책도 역할에 연결합니다. 이 역할의 권한 경계는 라는 AWS AmazonSecurityLakePermissionsBoundary관리형 정책에 의해 설정됩니다.

권한 확인

사용자 지정 소스를 추가하기 전에 다음 작업을 수행할 권한이 있는지 확인합니다.

권한을 확인하려면 IAM을 사용하여 IAM 자격 증명에 연결된 IAM 정책을 검토하십시오. 그런 다음 해당 정책의 정보를 사용자 지정 소스를 추가하기 위해 수행할 수 있어야 하는 다음 작업 목록과 비교하십시오.

  • glue:CreateCrawler

  • glue:CreateDatabase

  • glue:CreateTable

  • glue:StopCrawlerSchedule

  • iam:GetRole

  • iam:PutRolePolicy

  • iam:DeleteRolePolicy

  • iam:PassRole

  • lakeformation:RegisterResource

  • lakeformation:GrantPermissions

  • s3:ListBucket

  • s3:PutObject

이러한 작업을 통해 사용자 지정 소스에서 로그와 이벤트를 수집하여 올바른 AWS Glue 데이터베이스 및 테이블로 전송하고 Amazon S3에 저장할 수 있습니다.

데이터 레이크의 서버 측 암호화에 AWS KMS 키를 사용하는 경우, 및 에 대한 kms:CreateGrant 권한도 필요합니다. kms:DescribeKey kms:GenerateDataKey

중요

Security Lake 콘솔을 사용하여 사용자 지정 소스를 추가하려는 경우 다음 단계를 건너뛰고 다음으로 진행하면 됩니다. 사용자 정의 소스 추가 Security Lake 콘솔은 간소화된 시작 프로세스를 제공하며, 필요한 모든 IAM 역할을 생성하거나 사용자 대신 기존 역할을 사용합니다.

Security Lake API를 사용하거나 사용자 지정 소스를 AWS CLI 추가하려는 경우 다음 단계로 진행하여 Security Lake 버킷 위치에 대한 쓰기 액세스를 허용하는 IAM 역할을 생성하십시오.

Security Lake 버킷 위치 (API 및 AWS CLI전용 단계) 에 대한 쓰기 액세스를 허용하는 IAM 역할을 생성합니다.

Security Lake API를 사용하거나 사용자 지정 소스를 AWS CLI 추가하는 경우 이 IAM 역할을 추가하여 사용자 지정 소스 데이터를 크롤링하고 데이터에서 파티션을 식별할 AWS Glue 권한을 부여하십시오. 이러한 파티션은 데이터를 구성하고 데이터 카탈로그에서 테이블을 생성 및 업데이트하는 데 필요합니다.

이 IAM 역할을 정의한 후에는 역할의 Amazon 리소스 이름(ARN)이 있어야 사용자 지정 소스를 추가할 수 있습니다.

arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole AWS 관리형 정책을 연결해야 합니다.

필요한 권한을 부여하려면 사용자 지정 원본에서 데이터 파일을 읽고 Data Catalog에서 테이블을 생성/업데이트할 수 AWS Glue 크롤러 있도록 다음과 같은 인라인 정책을 만들어 역할에 내장해야 합니다. AWS Glue

{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3WriteRead", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::{{bucketName}}/*" ] } ] }

다음 신뢰 정책을 AWS 계정 연결하여 외부 ID를 기반으로 역할을 수임할 수 있도록 허용하십시오.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "glue.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

사용자 지정 소스를 추가하려는 지역의 S3 버킷이 고객 AWS KMS key관리형으로 암호화된 경우 다음 정책도 역할 및 KMS 키 정책에 연결해야 합니다.

{ "Effect": "Allow", "Action": [ "kms:GenerateDataKey" "kms:Decrypt" ], "Condition": { "StringLike": { "kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::{{name of S3 bucket created by Security Lake}" ] } }, "Resource": [ "{{ARN of customer managed key}}" ] }

사용자 정의 소스 추가

IAM 역할을 생성하여 AWS Glue 크롤러를 호출한 후 다음 단계에 따라 Security Lake에 사용자 지정 소스를 추가하십시오.

Console
  1. Security Lake 콘솔(https://console.aws.amazon.com/securitylake/)을 엽니다.

  2. 페이지 오른쪽 상단의 AWS 리전 선택기를 사용하여 사용자 지정 소스를 생성할 지역을 선택합니다.

  3. 탐색 창에서 사용자 지정 소스를 선택한 다음 사용자 지정 소스 만들기를 선택합니다.

  4. 사용자 지정 소스 세부 정보 섹션에서 사용자 지정 소스의 전 세계적으로 고유한 이름을 입력합니다. 그런 다음 사용자 지정 소스가 Security Lake로 전송할 데이터 유형을 설명하는 OCSF 이벤트 클래스를 선택합니다.

  5. AWS 계정 데이터 쓰기 권한이 있는 경우 데이터 레이크에 로그와 이벤트를 기록할 사용자 지정 소스의 AWS 계정 ID외부 ID를 입력합니다.

  6. 서비스 액세스의 경우 새 서비스 역할을 만들어 사용하거나 Security Lake에 AWS Glue를 간접 호출하는 권한을 부여하는 기존 서비스 역할을 사용하십시오.

  7. 생성을 선택합니다.

API

프로그래밍 방식으로 사용자 지정 소스를 추가하려면 Security Lake API의 CreateCustomLogSource작업을 사용하십시오. 사용자 지정 소스를 만들려는 AWS 리전 위치에서 작업을 사용하십시오. AWS Command Line Interface (AWS CLI) 를 사용하는 경우 create-custom-log-source 명령을 실행하십시오.

요청 시 지원되는 파라미터를 사용하여 사용자 지정 소스의 구성 설정을 지정하십시오.

  • sourceName— 소스 이름을 지정합니다. 이름은 리전 고유 값이어야 합니다.

  • eventClasses— 원본이 Security Lake로 전송할 데이터 유형을 설명하는 OCSF 이벤트 클래스를 하나 이상 지정합니다. Security Lake에서 소스로 지원되는 OCSF 이벤트 클래스 목록은 개방형 사이버 보안 스키마 프레임워크 (OCSF) 를 참조하십시오.

  • sourceVersion— 선택적으로 로그 수집을 사용자 지정 소스 데이터의 특정 버전으로 제한하는 값을 지정할 수 있습니다.

  • crawlerConfiguration— 크롤러를 호출하기 위해 생성한 IAM 역할의 Amazon 리소스 이름 (ARN) 을 지정합니다. AWS Glue IAM 역할을 생성하는 자세한 단계는 사용자 지정 소스를 추가하기 위한 사전 요구 사항을 참조하십시오.

  • providerIdentity— 소스가 로그 및 이벤트를 데이터 레이크에 기록하는 데 사용할 ID 및 외부 ID를 지정합니다. AWS

다음 예에서는 지정된 지역의 지정된 로그 제공자 계정에 사용자 지정 소스를 로그 소스로 추가합니다. 이 예제는 Linux, macOS 또는 Unix용으로 포맷되었으며 가독성을 높이기 위해 백슬래시(\) 줄 연속 문자를 사용합니다.

$ aws securitylake create-custom-log-source \ --source-name EXAMPLE_CUSTOM_SOURCE \ --event-classes '["DNS_ACTIVITY", "NETWORK_ACTIVITY"]' \ --configuration crawlerConfiguration={"roleArn=arn:aws:iam::XXX:role/service-role/RoleName"},providerIdentity={"externalId=ExternalId,principal=principal"} \ --region=[“ap-southeast-2”]

에서 사용자 지정 소스 데이터를 최신 상태로 유지 AWS Glue

Security Lake에 사용자 지정 소스를 추가하면 Security Lake에서 AWS Glue 크롤러를 생성합니다. 크롤러는 사용자 지정 소스에 연결하여 데이터 구조를 결정하고 AWS Glue 데이터 카탈로그를 테이블로 채웁니다.

크롤러를 수동으로 실행하여 사용자 지정 소스 스키마를 최신 상태로 유지하고 Athena 및 기타 쿼리 서비스에서 쿼리 기능을 유지하는 것이 좋습니다. 특히 사용자 지정 소스의 입력 데이터 집합에서 다음 변경 사항 중 하나가 발생하는 경우 크롤러를 실행해야 합니다.

  • 데이터 세트에는 새 최상위 열이 하나 이상 있습니다.

  • 데이터 세트의 열에는 struct 데이터 유형이 있는 열에 하나 이상의 새 필드가 있습니다.

크롤러 실행에 대한 지침은 개발자 안내서의 AWS Glue 크롤러 예약을 참조하십시오.AWS Glue

Security Lake는 계정의 기존 크롤러를 삭제하거나 업데이트할 수 없습니다. 사용자 지정 소스를 삭제하는 경우 나중에 같은 이름의 사용자 지정 소스를 만들 계획이라면 연결된 크롤러를 삭제하는 것이 좋습니다.

사용자 지정 소스 삭제

소스에서 Security Lake로 데이터를 더 이상 보내지 않으려면 사용자 지정 소스를 삭제하세요.

Console
  1. Security Lake 콘솔(https://console.aws.amazon.com/securitylake/)을 엽니다.

  2. 페이지 오른쪽 상단의 AWS 리전 선택기를 사용하여 사용자 지정 소스를 제거하려는 지역을 선택합니다.

  3. 탐색 창에서 사용자 지정 소스를 선택합니다.

  4. 제거할 사용자 지정 소스를 선택합니다.

  5. 사용자 지정 소스 등록 취소를 선택한 다음 삭제를 선택하여 작업을 확인합니다.

API

프로그래밍 방식으로 사용자 지정 소스를 삭제하려면 Security Lake API의 DeleteCustomLogSource작업을 사용하십시오. AWS Command Line Interface (AWS CLI) 를 사용하는 경우 delete-custom-log-source 명령을 실행하십시오. 사용자 지정 소스를 삭제하려는 AWS 리전 위치에서 작업을 사용하십시오.

요청 시 sourceName 파라미터를 사용하여 삭제할 사용자 지정 소스의 이름을 지정합니다. 또는 사용자 지정 소스의 이름을 지정하고 sourceVersion 파라미터를 사용하여 삭제 범위를 사용자 지정 소스의 특정 버전 데이터로만 제한할 수 있습니다.

다음 예제는 Security Lake에서 사용자 지정 로그 소스를 삭제합니다.

이 예제는 Linux, macOS 또는 Unix용으로 포맷되었으며 가독성을 높이기 위해 백슬래시(\) 줄 연속 문자를 사용합니다.

$ aws securitylake delete-custom-log-source \ --source-name EXAMPLE_CUSTOM_SOURCE