AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
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년 전
AWS 공식업데이트됨 9달 전