부분 쿼리 로그 활성화

DNS 쿼리 로그는 DNS 네임서버가 처리하는 모든 요청을 자세히 기록하여 DNS 트래픽, 죽은 레코드, 성장 분석에 대한 통찰력을 제공합니다. IBM® NS1 Connect® 에서 쿼리 로그는 시간 버킷(30초) 내에 집계되어 고객이 정의한 S3 위치(버킷 및 접두사)로 전송됩니다. S3 객체는 각 줄이 단일 집계를 나타내는 gzip 인코딩된 JSONL(줄로 구분된 JSON)입니다. 객체 키는 처리 시간으로 포맷되는 반면, 로그는 이벤트 시간으로 타임스탬프가 지정됩니다.

다음에 대한 액세스 권한 부여 NS1 Connect

AWS 문서에 제공된 지침에 따라 타사에게 S3 위치에 대한 액세스 권한을 부여합니다. 그런 다음 다음 정보와 함께 IBM 지원팀으로 문의하세요:

  • S3 버킷 이름, 지역, 접두사. 참고: 접두사는 슬래시(/)로 끝나야 합니다.
  • 다음 정책을 사용하는 AWS ID 및 액세스 관리(IAM) 역할의 Amazon 리소스 이름(ARN)입니다:
    • 위 S3 위치에 대한 최소한의 s3:PutObject 권한이 필요합니다.
    • arn:aws:iam::025043166333:role/ service-role/pipeline-querylogs-role-ukj3oed7NS1 Connect sts:AssumeRole 권한을 부여하는 트러스트 정책.
  • 위 신뢰 정책이 적용되는 고유 식별자( sts:ExternalId, 일반적으로 UUID).

적절한 IAM 역할 및 정책을 만들려면 Terraform® 구성 예시를 참조하세요.

예제 데이터

개체 접두사는 연도, 월, 일, 시간(GMT 기준)으로 구분됩니다.

객체 키의 예
s3://<customer_bucket>/<customer_prefix>dns.query.logs/2019/10/16/20/2019-10-16-20-46- 33.115951011.gz
참고 : 각 개체는 gzip으로 인코딩되어 있습니다. 압축되지 않은 데이터 형식은 줄로 구분된 JSON입니다.
예제 로그 라인
{ 
   “count”: 10, 
   “customer”: 12345, 
   “domain”: “abc.example.com”, 
   “metric_name”: “dns.query.logs”, 
   “network”: “0”, 
   "pop":"iad",
   “rectype”: “A”, 
   “timestamp”: 1571250180, 
   “zone”: “example.com” 
}
매개변수 설명
count 집계 기간(30초) 내에 이 레코드가 쿼리된 횟수입니다
customer NS1 Connect 계정 ID
domain 쿼리된 레코드
metric_name dns.queries.logs 현재 포함된 데이터 세트입니다.
network 전용 네트워크를 사용하는 고객을 위한 고유 네트워크 식별자(기본값은 0)
pop 존재 지점의 물리적 위치 ( PoP ) 네임 서버
rectype 쿼리된 DNS 레코드 유형
timestamp 쿼리 이벤트 시간
zone 쿼리된 레코드의 포괄적인 DNS 영역
예제 Terraform 구성

Terraform 를 사용하여 AWS 리소스를 관리하는 경우 아래 코드를 복사하여 붙여넣고 Terraform 를 사용하여 구성을 적용합니다.

variable "ns1_querylogs_s3_bucket" {
  type        = string
  description = "The name of the destination bucket for NS1 query log objects."
}

variable "ns1_querylogs_s3_prefix" {
    type = string
    description = "The s3 prefix to prepend to all NS1 query log objects. Omit leading slash. Include trailing slash."
}

variable "ns1_querylogs_external_id" {
    type = string
    description = "An agreed-upon value for assuming external IAM roles (typically a UUID): https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html"
}

resource "aws_iam_role" "ns1_querylogs" {
  name = "ns1-querylogs-role"
  description = "The role that NS1 assumes to send query logs logs to this AWS account."
  path               = "/"
  assume_role_policy = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::025043166333:role/service-role/pipeline-querylogs-role-ukj3oed7"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "sts:ExternalId": "${var.ns1_querylogs_external_id}"
        }
      }
    }
  ]
}
EOF
}

resource "aws_iam_policy" "ns1_querylogs" {
  name = "ns1-querylogs-policy"
  description = "Allows s3 objects to be put to a specific bucket and prefix."
  path        = "/"
  policy      = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::${var.ns1_querylogs_s3_bucket}/${var.ns1_querylogs_s3_prefix}*"
    }
  ]
}
EOF
}

resource "aws_iam_role_policy_attachment" "ns1_querylogs" {
  role       = aws_iam_role.ns1_querylogs.name
  policy_arn = aws_iam_policy.ns1_querylogs.arn
}