[AWS] GuardDuty 결과 내보내기

HYEOB KIM·2022년 6월 17일
1

aws

목록 보기
44/62

GuardDuty 결과 내보내기

GuardDuty는 활성 결과 내보내기를 지원합니다. 결과는 S3 버킷으로 이동할 수 있습니다. 새로운 활성 결과 GuardDuty 에서 결과 생성 후 약 5분 이내에 자동으로 내보내집니다. 결과 업데이트 빈도를 통해 내보내는 빈도를 설정할 수 있습니다.

  • 내보내기 설정은 리전별로 설정됩니다. 각 리전의 내보내기 대상으로 동일한 버킷을 사용할 수 있습니다.

  • 억제된 결과의 새 인스턴스를 포함하여 보관된 결과는 내보내지 않습니다.

  • 연결된 멤버 계정의 모든 결과도 관리자 계정에 대해 구성한 동일한 버킷 위치로 내보내집니다.

검색 결과 내보내기를 구성하는데 필요한 권한

결과를 내보내기 위한 옵션을 구성하려면 GuardDuty 작업에 대한 권한 외에도 사용자 계정에 아래의 권한이 부여되어 있어야 합니다.

  • kms:ListAliases
  • s3:CreateBucket
  • s3:GetBucketLocation
  • s3:ListAllMyBuckets
  • s3:PutBucketAcl
  • s3:PutBucketPublicAccessBlock
  • s3:PutBucketPolicy
  • s3:PutObject

KMS 키 생성

KMS 콘솔 > [고객 관리형 키] > [키 생성]을 누릅니다.

키 구성

레이블 추가

키 관리 권한 정의

KMS API를 통해 이 키를 관리할 수 있는 IAM 사용자 및 역할을 선택합니다. 해당 사용자 또는 역할로 이 콘솔에서 이 키를 관리하려면 권한을 추가해야 할 수 있습니다.

아무것도 선택하지 않으면 루트 계정만 키 관리 권한을 가집니다.

키 사용 권한 정의

암호화 작업에서 KMS 키를 사용할 수 있는 IAM 사용자 및 역할을 선택합니다.

아무것도 선택하지 않으면 모든 게정이 키를 사용할 수 있습니다.

결과 내보내기 버킷 설정

결과 업데이트 빈도

결과 업데이트 빈도를 통해 버킷으로 내보내는 주기를 설정할 수 있습니다.

내보낼 버킷 설정

새 버킷 생성

KMS키를 선택하면 해당 키의 정책에 아래 내용을 추가해주어야 합니다.

{    
    "Sid": "AllowGuardDutyKey",
    "Effect": "Allow",
    "Principal": {
        "Service": "guardduty.amazonaws.com"
    },
    "Action": "kms:GenerateDataKey",
    "Resource": "arn:aws:kms:Region:<계정 ID>:key/<KMS 키 ID>",
    "Condition": {
        "StringEquals": {
            "aws:SourceAccount": "<계정 ID>",
            "aws:SourceArn": "arn:aws:guardduty:Region:<계정 ID>:detector/<감지기 ID>"	
        }
    }
}

해당 키 정책 내용은 정책 보기를 누르면 완성된 정책 내용이 나와있습니다.

KMS 키 정책 내용을 전체 복사해서 KMS 콘솔의 해당 키의 키 정책 편집을 통해서 아래쪽에 내용을 추가합니다.

기존 버킷에 연결할 경우

  • 새로운 버킷에 연결할 경우에는 버킷에 대한 GuardDuty 접근 정책이 자동으로 설정되지만, 기존에 있는 버킷을 연결할 경우에는 기존 버킷에 아래와 같은 버킷 정책수동으로 추가해주어야 합니다.
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowGuardDutygetBucketLocation",
            "Effect": "Allow",
            "Principal": {
                "Service": "guardduty.amazonaws.com"
            },
            "Action": "s3:GetBucketLocation",
            "Resource": "arn:aws:s3:::<버킷 이름>",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "<계정 ID>",
                    "aws:SourceArn": "arn:aws:guardduty:<리전 명>:<계정 ID>:detector/<감지기 ID>"	

                }
            }
        },
        {
            "Sid": "AllowGuardDutyPutObject",
            "Effect": "Allow",
            "Principal": {
                "Service": "guardduty.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::<버킷 이름>/<접두사>/*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "<계정 ID>",
                    "aws:SourceArn": "arn:aws:guardduty:<리전 명>:<계정 ID>:detector/<감지기 ID>"	

                }
            }
        },
        {
            "Sid": "DenyUnencryptedUploadsThis is optional",
            "Effect": "Deny",
            "Principal": {
                "Service": "guardduty.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::<버킷 이름>/<접두사>/*",
            "Condition": {
                "StringNotEquals": {
                    "s3:x-amz-server-side-encryption": "aws:kms"
                }
            }
        },
        {
            "Sid": "DenyIncorrectHeaderThis is optional",
            "Effect": "Deny",
            "Principal": {
                "Service": "guardduty.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::<버킷 이름>/<접두사>/*",
            "Condition": {
                "StringNotEquals": {
                    "s3:x-amz-server-side-encryption-aws-kms-key-id": "arn:aws:kms:<리전 명>:<계정 ID>:key/<KMS 키 ID>"
                }
            }
        },
        {
            "Sid": "DenyNon-HTTPS",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::<버킷 이름>/<접두사>/*",
            "Condition": {
                "Bool": {
                    "aws:SecureTransport": "false"
                }
            }
        }
    ]
}
profile
Devops Engineer

0개의 댓글