반응형
AWS ALB(Application Load Balancer) 또는 NLB(Network Load Balancer)의 액세스 로그를 Amazon S3 버킷에 저장하려면, 로그가 정상적으로 기록될 수 있도록 정확한 권한 설정이 필요하다.
이 문서에서는 실무에서 자주 사용되는 S3 버킷 정책 예시를 기반으로, 어떻게 설정해야 하는지 상세히 설명한다.
✅ 주요 내용 (ALB/NLB)
ALB 로그는 ELB 계정 ID의 root 사용자가 직접 S3에 PutObject 요청을 보낸다. 이 때 ELB 계정 ID는 AWS에서 로드밸런서별로 지역에 따라 고정된 계정 ID이다. ap-northeast-2 기준 600734575887.
ALB는 ELB 서비스의 root principal이 로그를 직접 업로드하는 반면에, NLB 로그는 delivery.logs.amazonaws.com가 업로드한다. 이를 위해서 PutObject 시, s3:x-amz-acl: bucket-owner-full-control 헤더를 포함해야 한다.
✅ 전제 조건
- S3 버킷 이름: test-s3-an2-stg-elb-log
- 로그 저장 Prefix: test-alb-an2-stg-admin/AWSLogs/<AWS_ACCOUNT_ID>/*
- 로그를 업로드할 대상 AWS 계정 ID: <LOG_SENDER_ACCOUNT_ID>
- ALB/NLB의 액세스 로그 설정에서 다음 값을 지정해야 함:
- S3 버킷 이름 : test-s3-an2-stg-elb-log
- Prefix : test-alb-an2-stg-admin(편의상 elb명으로 지정)
- <AWS_ACCOUNT_ID> : ELB가 있는 AWS 계정 ID
- <ELB-ACCOUNT-ID> : 600734575887 (ap-northeast-2 기준)
✅ S3 버킷 정책 예시
{
"Version": "2012-10-17",
"Id": "AWSConsole-AccessLogs-Policy",
"Statement": [
{
"Sid": "AllowPutFromELBAccount",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<ELB-ACCOUNT-ID>:root"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::test-s3-an2-stg-elb-log/test-alb-an2-stg-admin/AWSLogs/<AWS_ACCOUNT_ID>/*"
},
{
"Sid": "AllowPutFromLogDeliveryService",
"Effect": "Allow",
"Principal": {
"Service": "delivery.logs.amazonaws.com"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::test-s3-an2-stg-elb-log/test-alb-an2-stg-admin/AWSLogs/<AWS_ACCOUNT_ID>/*",
"Condition": {
"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control"
}
}
},
{
"Sid": "AllowGetAclFromLogDeliveryService",
"Effect": "Allow",
"Principal": {
"Service": "delivery.logs.amazonaws.com"
},
"Action": "s3:GetBucketAcl",
"Resource": "arn:aws:s3:::test-s3-an2-stg-elb-log"
}
]
}
✅ 각 정책 설명
AllowPutFromELBAccount | ALB를 소유한 계정이 S3에 로그 업로드 가능하게 허용 |
AllowPutFromLogDeliveryService | NLB의 경우 AWS 로그 전송 서비스가 PutObject 가능하도록 허용. 이때 bucket-owner-full-control ACL 필요 |
AllowGetAclFromLogDeliveryService | 로그 전송 서비스가 버킷의 ACL을 확인할 수 있게 허용 |
✅ 실무 체크리스트
- S3 버킷이 ALB/NLB와 같은 리전에 있는가?
- S3 버킷 정책이 정확하게 적용되었는가?
- s3:x-amz-acl: bucket-owner-full-control 조건이 빠지지 않았는가?
- ALB 또는 NLB 설정 시 S3 경로, Prefix, AWS Account ID를 정확히 입력했는가?
반응형
'OPS' 카테고리의 다른 글
[AWS 실무 작업기] Datadog Lambda Forwarder 버전 업그레이드 (v3.73.0 적용 및 트러블슈팅) (0) | 2025.04.21 |
---|---|
[AWS 네트워크] VPC 엔드포인트 완전 정리 (Interface vs Gateway) (0) | 2025.04.21 |
nginx-ingress-controller와 nginx-ingress-controller-admission 어떤 사이야? (0) | 2025.04.02 |
nginx-ingress-controller 보안 취약점, nginx-ingress-controller 업그레이드(v1.12.1) 여정 (0) | 2025.04.02 |
EKS 1.32 업그레이드시 사전 고려사항 정리 (1) | 2025.04.02 |