Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
AWSSupport-ConfigureDNSQueryLogging 런북을 사용하여 R53 DNS 쿼리의 로깅을 구성하는 방법
본 기사는 AWS 지원 자동화 워크플로우 (Support Automation Workflow)의 “AWSSupport-ConfigureDNSQueryLogging” 런북을 사용하여 Route53 DNS 쿼리 로깅을 구성하는 방법에 관해 설명합니다.
[안내]
DNS 쿼리 로그 구성은 VPC 또는 Route53 호스팅 영역에서 생성된 DNS 쿼리 트래픽 흐름을 캡처할 수 있게 해주는 기능입니다. 로그 데이터는 리소스의 연결 문제를 조사하고 문제를 해결하는 데 사용될 수 있습니다. 쿼리 로깅 및 해석기 쿼리 로그에 대한 자세한 내용은 퍼블릭 DNS 쿼리 로깅 및 리졸버 쿼리 로깅을 참조하시길 바랍니다.
[중요사항]
로그를 전달하려는 AWS 서비스(CloudWatch Logs, S3 또는 Amazon Kinesis Firehose)와 관련된 스토리지 비용이 계정에 청구됩니다.
참고: LogDestinationArn 값을 지정하지 않으면, 런북은 AWSSupport-ConfigureDNSQueryLogging-automation:EXECUTION_ID 이름으로 새로운 CloudWatch 로그 그룹을 생성하려고 시도합니다. 또한 런북은 새 CloudWatch 로그 그룹을 생성할 때, 로그 데이터 보존 기간을 14일로 설정하며, 퍼블릭 DNS 쿼리 로그는 CloudWatch 로그 그룹만 LogDestinationArn으로 지원합니다.
[런북 자동화 실행 절차]
1.AWS Systems Manager 콘솔로 이동하여 왼쪽 네비게이션에서 자동화(Automation)을 선택합니다.
2.우측의 런북 실행(Excute runbook) 버튼을 클릭합니다.
3.자동화 런북 모음에서 “AWSSupport-ConfigureDNSQueryLogging”를 선택한 후 Next를 클릭합니다.
4.자동화 런북 실행 시 4개의 실행 옵션이 있습니다.
- Simple execution : 단일 계정에서 설정된 파라미터에 대해 가장 기본적인 로깅 실행 방식입니다. 이를 통해 특정 VPC, 호스팅 영역에 대해 DNS 쿼리 로깅을 구성합니다.
- Rate control : 여러 리소스에 대해 동시에 실행할 때 사용하며 동시성(Concurrency)과 오류 임계값(Error threshold)을 설정할 수 있습니다.
- Multi-account and Region : 여러 AWS 계정과 리전에 걸쳐 DNS 쿼리 로깅을 구성할 때 사용하며 Organizations 또는 리소스 데이터 동기화와 함께 사용할 수 있습니다.
- Manual execution : 자동화 워크플로우의 각 실행 단계를 순차적으로 수동으로 제어할 때 사용합니다.
본 기사에서는 Simple excution을 통해 단일 계정에서 수행하는 과정에 대해 소개하겠습니다.
- 입력 파라미터(Input Parameters) 항목에 필요한 정보를 입력합니다.
- ResourceId : DNS 로깅을 생성하실 리소스 ID입니다. QueryLogType이 Public일 경우 리소스는 Route 53 프라이빗 호스팅 영역의 ID여야 하며 QueryLogType이 Resolver/Private일 경우 리소스는 VPC의 ID여야 합니다.
- QueryLogType : Public(Hosted Zone ID) 또는 Resolver/Private(VPC Id)을 선택할 수 있습니다.
- LogDestinationArn : 로깅이 저장될 위치입니다. Cloudwatch log group, S3버킷 또는 Kinesis stream의 ARN을 입력해야 합니다. 지정하지 않을 경우 런북은 Cloudwatch log group을 자동으로 생성합니다.
- AutomationAssumeRole (선택사항): AWS IAM(Identity and Access Management) 역할의 Amazon Resource Name(ARN)을 의미합니다. 해당 항목에 입력이 없는 경우 현재 IAM 사용자를 통해 런북을 실행합니다. “AWSSupport-ConfigureDNSQueryLogging”를 실행하기 위해서는 다음과 같은 IAM 권한(IAM permission)이 필요합니다. 런북에 사용될 서비스 역할을 생성해야 하는 경우 콘솔을 사용하여 Automation을 위한 서비스 역할 생성을 참고하시길 바랍니다.
* ec2:DescribeVpcs
* firehose:ListTagsForDeliveryStream
* firehose:PutRecord
* firehose:PutRecordBatch
* firehose:TagDeliveryStream
* iam:AttachRolePolicy
* iam:CreatePolicy
* iam:CreateRole
* iam:CreateServiceLinkedRole
* iam:DeletePolicy
* iam:DeleteRole
* iam:DeleteRolePolicy
* iam:GetPolicy
* iam:GetRole
* iam:PassRole
* iam:PutRolePolicy
* iam:TagRole
* iam:UpdateRole
* logs:CreateLogDelivery
* logs:CreateLogGroup
* logs:DeleteLogDelivery
* logs:DeleteLogGroup
* logs:DescribeLogGroups
* logs:DescribeLogStreams
* logs:DescribeResourcePolicies
* logs:ListLogDeliveries
* logs:PutResourcePolicy
* logs:PutRetentionPolicy
* logs:UpdateLogDelivery
* logs:TagResource
* route53:CreateQueryLoggingConfig
* route53:DeleteQueryLoggingConfig
* route53:GetHostedZone
* route53resolver:AssociateResolverQueryLogConfig
* route53resolver:CreateResolverQueryLogConfig
* route53resolver:DeleteResolverQueryLogConfig
* route53resolver:TagResource
* s3:GetBucketAcl
- 하단에 실행(Excute)를 클릭할 경우 아래 그림과 같이 4개의 Step이 완료됩니다.
주요 유의사항 : Public 대상 런북 실행 중 4단계에서 다음과 같은 CreateQueryLoggingConfig 에러가 발생하는 경우 추가적으로 R53에서 cloudwatch log 리소스에 대한 권한을 부여해야 합니다.
RuntimeError - Something went wrong on the DNS query log creation, please check: An error occurred (InsufficientCloudWatchLogsResourcePolicy) when calling the CreateQueryLoggingConfig operation: The resource policy that you're using for Route 53 query logging doesn't grant Route 53 sufficient permission to create a log stream in the specified log group.
이때 CloudWatch 콘솔을 사용하여 리소스 정책을 생성하거나 편집할 수 없으므로 CloudWatch API, AWS SDK 중 하나 또는 AWS CLI를 사용해야 합니다.
- AWS CLI를 통해 부여하는 방법은 다음과 같습니다.
- AWS CLI가 수행되는 위치에 다음과 같이 권한을 부여할 r53.json을 생성합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Route53LogsToCloudWatchLogs",
"Effect": "Allow",
"Principal": {
"Service": [
"route53.amazonaws.com"
]
},
"Action": [
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:us-east-1:<ACCOUNTID>:log-group:*"
}
]
}
- 이어서 다음과 같이 AWS CLI를 수행합니다.
#aws logs put-resource-policy --policy-name R53permissions --policy-document file://r53.json --region us-east-1
{
"resourcePolicy": {
"policyName": "R53permissions",
"policyDocument": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"Route53LogsToCloudWatchLogs\",\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"Service\": [\n \"route53.amazonaws.com\"\n ]\n },\n \"Action\": [\n \"logs:CreateLogStream\",\n \"logs:PutLogEvents\"\n ],\n \"Resource\": \"arn:aws:logs:us-east-1:<ACCOUNTID>:log-group:*\"\n }\n ]\n}\n",
"lastUpdatedTime": 1745317760301
}
}
- 이어서 런북을 통해 생성된 로깅 환경을 확인 가능합니다.
[퍼블릭 환경]
[프라이빗 환경]
[DNS 쿼리 로그 비활성화]
런북 수행 이후 생성된 DNS 쿼리 로깅을 삭제하길 원하신다면 다음과 같이 삭제할 수 있습니다.
퍼블릭 DNS 쿼리 로그의 경우:
- Amazon Route 53 콘솔 열기
- 호스팅 영역 섹션으로 이동
- 쿼리 로깅을 비활성화할 호스팅 영역 선택
- 호스팅 영역 세부 정보 창 위의 "쿼리 로깅 구성" 탭 클릭
- "삭제" 버튼을 클릭하여 쿼리 로깅 구성 제거
Resolver/프라이빗 DNS 쿼리 로그의 경우:
- Amazon Route 53 콘솔 열기
- Resolver 섹션으로 이동
- VPC 탭 선택
- 비활성화할 쿼리 로깅 구성 선택 및 로깅 중지
- "삭제" 버튼을 클릭하여 구성 제거
- 구성이 VPC와 연결되어 있는 경우, 삭제하기 전에 VPC에서 연결 해제 필요
이러한 단계를 따르면 DNS 쿼리 로그 구성을 비활성화하고 지정된 대상으로의 DNS 쿼리 데이터 캡처 및 전달을 중지할 수 있습니다.
이와 같이 AWS 지원 자동화 워크플로우 (Support Automation Workflow) 런북을 실행하였으나 이슈가 발생한 경우, AWS Support 에 문의하여 추가 지원을 받을 수 있습니다. 이때 앞서 실행한 런북 실행 ID 및 실행 결과 등의 정보를 포함하여 문의하시면 신속한 지원에 도움이 됩니다.
유용한 정보 감사합니다!
관련 콘텐츠
- 질문됨 2년 전lg...
- 질문됨 10달 전lg...