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

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

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에 데이터를 쓸 수 있어야 합니다. 여러 범주의 데이터가 포함된 소스의 경우 각 고유한 Open Cybersecurity Schema Framework(OCSF) 이벤트 클래스를 별도의 소스로 제공해야 합니다. Security Lake는 사용자 지정 소스가 S3 버킷의 지정된 위치에 쓸 수 있도록 허용하는 IAM 역할을 생성합니다.

    참고

    OCSF 검증 도구를 사용하여 사용자 지정 소스가 와 호환되는지 확인합니다OCSF Schema 1.1.

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

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

Security Lake에서 사용자 지정 소스를 수집하는 모범 사례

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

분할

객체는 소스 위치, AWS 리전, AWS 계정및 날짜별로 분할되어야 합니다.

  • 파티션 데이터 경로의 형식은 다음과 같습니다.

    bucket-name/ext/custom-source-name/region=region/accountId=accountID/eventDay=YYYYMMDD.

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

  • 사용자 지정 소스에 소스 버전을 추가한 경우 파티션 데이터 경로의 형식은 다음과 같습니다.

    bucket-name/ext/custom-source-name/custom-source-version/region=us-west-2/accountId=123456789012/eventDay=20230428/

    소스 버전을 포함하는 샘플 파티션은 입니다aws-security-data-lake-us-west-2-lake-uid/ext/custom-source-name/2.0/region=us-west-2/accountId=123456789012/eventDay=20230428/.

다음 목록은 파티션에 사용되는 파라미터를 설명합니다.

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

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

  • source-version - 사용자 지정 소스의 소스 버전입니다.

  • region - 데이터가 기록되는 AWS 리전 대상입니다.

  • accountId –소스 파티션의 레코드가 관련된 AWS 계정 ID입니다.

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

객체 크기 및 속도

Security Lake로 전송된 파일은 5분에서 1일의 이벤트 날짜까지 증분 단위로 전송해야 합니다. 파일 크기가 256MB를 초과하는 경우 고객은 5분 이상 파일을 보낼 수 있습니다. 객체 및 크기 요구 사항은 쿼리 성능을 위한 Security Lake를 최적화하는 것입니다. 사용자 지정 소스 요구 사항을 따르지 않으면 Security Lake 성능에 영향을 미칠 수 있습니다.

Parquet 설정

Security Lake는 Parquet 버전 1.x 및 2.x를 지원합니다. 데이터 페이지 크기는 1MB (비압축)로 제한해야 합니다. 행 그룹 크기는 256MB (압축)를 넘지 않아야 합니다. Parquet 객체 내의 압축의 경우 zstandard이 선호됩니다.

정렬

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

Security Lake에서 사용자 지정 소스를 추가하기 위한 사전 조건

사용자 지정 소스를 추가할 때 Security Lake는 소스가 데이터 레이크의 올바른 위치에 데이터를 쓸 수 있도록 허용하는 IAM 역할을 생성합니다. 역할의 이름은 형식 을 따르며AmazonSecurityLake-Provider-{name of the custom source}-{region}, 여기서 region는 사용자 지정 소스를 추가하는 AWS 리전 입니다. Security Lake는 데이터 레이크에 대한 액세스를 허용하는 정책을 역할에 연결합니다. 고객 관리형 AWS KMS 키로 데이터 레이크를 암호화한 경우 Security Lake는 역할 kms:Decryptkms: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:CreateGrantkms:DescribeKeykms:GenerateDataKey.

중요

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

Security Lake API 또는 AWS CLI 를 사용하여 사용자 지정 소스를 추가하려면 다음 단계를 진행하여 Security Lake 버킷 위치에 대한 쓰기 액세스를 허용하는 IAM 역할을 생성합니다.

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

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

이 IAM 역할을 생성한 후 사용자 지정 소스를 추가하려면 역할의 Amazon 리소스 이름(ARN)이 필요합니다.

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

필요한 권한을 부여하려면 가 사용자 지정 소스에서 데이터 파일을 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 버킷이 고객 관리형 로 암호화된 경우 역할 및 KMS 키 정책에 다음 정책도 연결 AWS KMS key해야 합니다.

{ "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}}" ] }