DNS 승인 관리

DNS 승인을 사용하면 Google 관리형 인증서의 도메인 소유권을 증명할 수 있습니다. Google 관리형 인증서를 만들 때 프로비저닝 및 갱신에 사용할 DNS 승인을 하나 이상 지정할 수 있습니다.

이 페이지에서는 Google 관리형 인증서에 사용할 DNS 승인을 만들고 관리하는 방법을 설명합니다.

자세한 내용은 도메인 승인을 참고하세요.

DNS 승인 만들기

DNS 승인은 단일 도메인 이름에만 적용됩니다. 대상 인증서와 함께 사용할 각 도메인 이름에 대해 별도의 DNS 승인을 만들어야 합니다.

*.myorg.example.com과 같이 와일드 카드 인증서에 DNS 승인을 만드는 경우 상위 도메인에 대한 DNS 승인을 구성합니다(예: myorg.example.com).

여러 프로젝트에서 인증서를 독립적으로 관리하려면 PER_PROJECT_RECORD DNS 승인을 사용하면 됩니다. 인증서 관리자는 Google Cloud내에서 각 프로젝트의 인증서 발급 및 관리를 독립적으로 처리할 수 있습니다. 프로젝트 내에서 사용하는 DNS 승인 및 인증서는 독립 실행형이며 다른 프로젝트의 승인 및 인증서와 상호작용하지 않습니다.

콘솔

인증서를 만들 때 DNS 승인을 만들거나 기존 DNS 승인을 연결할 수 있습니다. 자세한 내용은 DNS 승인을 참조하는 Google 관리형 인증서 만들기를 참고하세요.

gcloud

DNS 승인을 만들려면 certificate-manager dns-authorizations create 명령어를 사용합니다.

gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \
    --domain="DOMAIN_NAME" \
    [--type=TYPE] \
    [–-location="LOCATION"]

다음을 바꿉니다.

  • AUTHORIZATION_NAME: DNS 승인 이름입니다.
  • DOMAIN_NAME: 이 DNS 승인을 만들 대상 도메인의 이름입니다. 도메인 이름은 myorg.example.com과 같은 정규화된 도메인 이름이어야 합니다.
  • TYPE: DNS 승인 유형입니다. FIXED_RECORD 또는 PER_PROJECT_RECORD를 지정할 수 있습니다. 자세한 내용은 DNS 승인을 참고하세요.
  • LOCATION: DNS 승인을 만드는 대상 Google Cloud 위치입니다.

DNS 승인을 만든 후 certificate-manager dns-authorizations describe 명령어를 사용하여 확인합니다.

gcloud certificate-manager dns-authorizations describe AUTHORIZATION_NAME

출력은 다음과 비슷합니다. 출력에서 dnsResourceRecord 줄을 찾아 CNAME 레코드 (data, name, type)를 가져와 DNS 구성에 추가합니다.

createTime: '2022-01-14T13:35:00.258409106Z'
dnsResourceRecord:
  data: 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog.
  name: _acme-challenge.myorg.example.com.
  type: CNAME
domain: myorg.example.com
name: projects/myProject/locations/global/dnsAuthorizations/myAuthorization
updateTime: '2022-01-14T13:35:01.571086137Z'

Terraform

DNS 승인을 만들려면 google_certificate_manager_dns_authorization 리소스를 사용하면 됩니다.

resource "google_certificate_manager_dns_authorization" "default" {
  name        = "${local.name}-dnsauth-${random_id.tf_prefix.hex}"
  description = "The default dns auth"
  domain      = local.domain
  labels = {
    "terraform" : true
  }
}

Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참조하세요.

API

DNS 승인을 만들려면 dnsAuthorizations.create 메서드에 POST 요청을 실행합니다.

POST /v1/projects/PROJECT_ID/locations/LOCATION/dnsAuthorizations?dns_authorization_id=AUTHORIZATION_NAME"
{
  "domain": "DOMAIN_NAME",
  "type": "PER_PROJECT_RECORD" //optional
}

다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트의 ID
  • LOCATION: DNS 승인을 만드는 대상 Google Cloud 위치입니다. 전역 위치의 경우 global을 사용합니다.
  • AUTHORIZATION_NAME: DNS 승인 이름입니다.
  • DOMAIN_NAME: 이 DNS 승인을 만들 대상 도메인의 이름입니다. 도메인 이름은 myorg.example.com과 같은 정규화된 도메인 이름이어야 합니다.

DNS 구성에 CNAME 레코드 추가

서드 파티 DNS 솔루션을 사용하여 DNS를 관리하는 경우 해당 문서를 참고하여 DNS 구성에 CNAME 레코드를 추가합니다.Google Cloud 를 사용하여 DNS를 관리하는 경우 이 섹션의 단계를 완료합니다.

콘솔

레코드 모음을 만들려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 DNS 영역 페이지로 이동합니다.

    Cloud DNS 영역으로 이동

  2. 레코드를 추가할 DNS 영역의 이름을 클릭합니다.

  3. 영역 세부정보 페이지에서 표준 추가를 클릭합니다.

  4. 레코드 모음 만들기 페이지의 DNS 이름 필드에 DNS 영역의 하위 도메인을 입력합니다.

    하위 도메인 이름을 입력할 때 DNS 이름 필드에 표시된 비활성화된 텍스트를 포함한 하위 도메인 이름이 gcloud certificate-manager dns-authorizations describe 명령어의 출력에 표시된 dnsResourceRecord.name 필드의 전체 값과 일치하는지 확인합니다.

    다음 예를 참조하세요.

    • dnsResourceRecord.name 필드 값이 _acme-challenge.myorg.example.com.이고 DNS 이름 필드의 비활성화된 텍스트가 .example.com.이면 _acme-challenge.myorg를 입력합니다.

    • dnsResourceRecord.name 필드 값이 _acme-challenge.myorg.example.com.이고 DNS 이름 필드의 비활성화된 텍스트가 .myorg.example.com.이면 _acme-challenge를 입력합니다.

    • dnsResourceRecord.name 필드의 값이 _acme-challenge_ujmmovf2vn55tgye.myorg.example.com.이고 DNS 이름 필드의 비활성화된 텍스트가 .myorg.example.com.이면 _acme-challenge_ujmmovf2vn55tgye를 입력합니다.

  5. 리소스 레코드 유형 필드에서 CNAME을 선택합니다.

  6. TTL 필드에 리소스 레코드가 캐시될 수 있는 기간인 리소스 레코드의 TTL(수명)에 대한 양수 숫자 값을 입력합니다.

  7. TTL 단위 목록에서 시간 단위를 선택합니다(예: 30 minutes).

  8. 표준 이름 필드에 gcloud certificate-manager dns-authorizations describe 명령어의 출력에 표시된 dnsResourceRecord.data 필드의 전체 값을 입력합니다.

  9. 추가 정보를 입력하려면 항목 추가를 클릭합니다.

  10. 만들기를 클릭합니다.

gcloud

DNS 승인을 만들면 gcloud CLI 명령어에서 해당 CNAME 레코드를 반환합니다. 대상 도메인의 DNS 영역에 있는 DNS 구성에 CNAME 레코드를 추가하려면 다음 단계를 따르세요.

  1. DNS 레코드 트랜잭션을 시작합니다.

    gcloud dns record-sets transaction start --zone="DNS_ZONE_NAME"
    

    DNS_ZONE_NAME을 대상 DNS 영역 이름으로 바꿉니다.

  2. 대상 DNS 영역에 CNAME 레코드를 추가합니다.

    gcloud dns record-sets transaction add CNAME_RECORD \
        --name="VALIDATION_SUBDOMAIN_NAME.DOMAIN_NAME." \
        --ttl="30" \
        --type="CNAME" \
        --zone="DNS_ZONE_NAME"
    

    다음을 바꿉니다.

    • CNAME_RECORD: 해당 DNS 승인을 만든 Google Cloud CLI 명령어에서 반환한 CNAME 레코드의 전체 데이터 값입니다.
    • VALIDATION_SUBDOMAIN_NAME: DNS 영역의 접두사 하위 도메인(예: _acme-challenge) DNS 승인 만들기에 설명된 대로 gcloud certificate-manager dns-authorizations describe 명령어 로그에서 이름을 복사할 수 있습니다.
    • DOMAIN_NAME: 대상 도메인 이름입니다.도메인 이름은 myorg.example.com과 같은 정규화된 도메인 이름이어야 합니다. 대상 도메인 이름 뒤에 후행 마침표도 포함해야 합니다.
    • DNS_ZONE_NAME: 대상 DNS 영역 이름입니다.

    아래 예시를 참조하세요.

    gcloud dns record-sets transaction add 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog. \
        --name="_acme-challenge.myorg.example.com." \
        --ttl="30" \
        --type="CNAME" \
        --zone="myorg-example-com"
    
  3. DNS 레코드 트랜잭션을 실행하여 변경사항을 저장합니다.

    gcloud dns record-sets transaction execute --zone="DNS_ZONE_NAME"
    

    DNS_ZONE_NAME을 대상 DNS 영역 이름으로 바꿉니다.

Terraform

CNAME 레코드를 DNS 구성에 추가하려면 google_dns_record_set 리소스를 사용하면 됩니다.

resource "google_dns_record_set" "cname" {
  name         = google_certificate_manager_dns_authorization.default.dns_resource_record[0].name
  managed_zone = google_dns_managed_zone.default.name
  type         = google_certificate_manager_dns_authorization.default.dns_resource_record[0].type
  ttl          = 300
  rrdatas      = [google_certificate_manager_dns_authorization.default.dns_resource_record[0].data]
}

DNS 승인 업데이트

DNS 승인을 업데이트할 때 다음 작업을 할 수 있습니다.

  • 새 라벨 지정
  • 새 설명 지정

gcloud

DNS 승인을 업데이트하려면 certificate-manager dns-authorizations update 명령어를 사용합니다.

gcloud certificate-manager dns-authorizations update AUTHORIZATION_NAME \
    [--update-labels="LABELS"] \
    [--description="DESCRIPTION"] \
    [--location="LOCATION"]

다음을 바꿉니다.

  • AUTHORIZATION_NAME: DNS 승인 이름입니다.
  • LABELS: 이 DNS 승인의 라벨입니다. 이 플래그는 선택사항입니다.
  • DESCRIPTION: 이 DNS 승인의 설명입니다. 이 플래그는 선택사항입니다.
  • LOCATION: 대상 Google Cloud 위치입니다. 기본 위치는 global입니다.

API

다음과 같이 dnsAuthorizations.patch 메서드에 PATCH 요청을 전송하여 DNS 승인을 업데이트합니다.

PATCH /v1/projects/PROJECT_ID/locations/LOCATION/dnsAuthorizations/AUTHORIZATION_NAME?updateMask=labels,description"
{
    description: "DESCRIPTION",
    labels: { "LABEL_KEY": "LABEL_VALUE" }
}

다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트의 ID
  • LOCATION: 대상 Google Cloud 위치입니다. 기본 위치는 global입니다.
  • AUTHORIZATION_NAME: DNS 승인 이름입니다.
  • DESCRIPTION: 이 DNS 승인의 설명을 지정하는 필드이며 선택사항입니다.
  • LABEL_KEY: 이 DNS 승인에 적용되는 라벨 키입니다.
  • LABEL_VALUE: 이 DNS 승인에 적용되는 라벨 값입니다.

DNS 승인 나열

프로젝트의 모든 DNS 승인과 세부정보를 볼 수 있습니다.

gcloud

DNS 승인을 나열하려면 certificate-manager dns-authorizations list 명령어를 사용합니다.

gcloud certificate-manager dns-authorizations list \
    --filter="FILTER" \
    --page-size="PAGE_SIZE" \
    --limit="LIMIT" \
    --sort-by="SORT_BY" \
    [--location="LOCATION"]

다음을 바꿉니다.

  • FILTER: 반환된 결과를 특정 값으로 제한하는 표현식입니다.

    예를 들어 다음 기준에 따라 결과를 필터링할 수 있습니다.

    • 도메인: --filter='domain=myorg.example.com'
    • 라벨 및 생성 시간: --filter='labels.key:value AND create_time > "2021-09-01T00:00:00Z"'

    인증서 관리자에서 사용할 수 있는 필터링 예시는 Cloud Key Management Service 문서의 목록 결과 정렬 및 필터링을 참조하세요.

  • PAGE_SIZE: 페이지당 반환할 결과 수입니다.

  • LIMIT: 반환할 최대 결과 수입니다.

  • SORT_BY: 쉼표로 구분된 name 필드의 목록으로, 반환된 결과가 정렬됩니다. 기본 정렬 순서는 오름차순입니다. 내림차순 정렬 순서의 경우 필드 앞에 물결(~)로 프리픽스를 붙입니다.

  • LOCATION: 대상 Google Cloud 위치입니다. 모든 리전의 DNS 승인을 나열하려면 -를 값으로 사용합니다. 기본값은 -입니다. 이 플래그는 선택사항입니다.

API

다음과 같이 dnsAuthorizations.list 메서드에 GET 요청을 전송하여 구성된 모든 DNS 승인을 나열합니다.

GET /v1/projects/PROJECT_ID/locations/LOCATION/dnsAuthorizations?filter=FILTER&pageSize=PAGE_SIZE&sortBy=SORT_BY

다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트의 ID
  • LOCATION: 대상 Google Cloud 위치입니다. 모든 위치의 모든 DNS 승인을 보려면 하이픈 하나 (-)를 지정합니다.
  • FILTER: 반환된 결과를 특정 값으로 제한하는 표현식입니다.

    예를 들어 다음 기준에 따라 결과를 필터링할 수 있습니다.

    • 도메인: --filter='domain=myorg.example.com'
    • 라벨 및 생성 시간: --filter='labels.key:value AND create_time > "2021-09-01T00:00:00Z"'
  • PAGE_SIZE: 페이지당 반환할 결과 수입니다.

  • SORT_BY: 쉼표로 구분된 name 필드의 목록으로, 반환된 결과가 정렬됩니다. 기본 정렬 순서는 오름차순입니다. 내림차순 정렬 순서의 경우 필드 앞에 물결(~)로 프리픽스를 붙입니다.

DNS 승인 삭제

Google 관리형 인증서에 할당된 DNS 승인을 삭제하려면 DNS 승인을 삭제하기 전에 인증서를 삭제해야 합니다.

gcloud

DNS 승인을 삭제하려면 certificate-manager dns-authorizations delete 명령어를 사용합니다.

gcloud certificate-manager dns-authorizations delete AUTHORIZATION_NAME \
    [--location="LOCATION"]

다음을 바꿉니다.

  • AUTHORIZATION_NAME: DNS 승인 이름입니다.
  • LOCATION: 대상 Google Cloud 위치입니다. 기본 위치는 global입니다.

API

다음과 같이 dnsAuthorizations.delete 메서드에 DELETE 요청을 전송하여 DNS 승인을 삭제합니다.

DELETE /v1/projects/PROJECT_ID/locations/LOCATION>/dnsAuthorizations/AUTHORIZATION_NAME

다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트의 ID
  • LOCATION: 대상 Google Cloud 위치입니다. 기본 위치는 global입니다.
  • AUTHORIZATION_NAME: DNS 승인 이름입니다.

다음 단계