DNSSEC キーの表示

このページでは、DNSSEC(Domain Name System Security Extensions)鍵を表示する方法について説明します。

DNSSEC のコンセプトの概要については、DNSSEC の概要をご覧ください。

DNSKEY は公開署名鍵を含む DNS レコードタイプです。DNSSEC で署名されたゾーンを別の DNS オペレーターに移行する場合、DNSKEY レコードの確認が必要になることがあります。RFC 6781 の移行プロセスでは、Cloud DNS ゾーンのゾーン署名鍵(ZSK)と鍵署名鍵(KSK)DNSKEY を別のオペレーターのゾーンにインポートする必要があります。

ゾーンに対して DNSSEC を有効にしている場合、Cloud DNS は、DNSSEC 鍵(DNSKEY レコード)の作成とローテーション、リソース レコードのデジタル署名(RRSIG)レコードによるゾーンデータの署名を自動的に管理します。KSK のローテーションにはドメイン登録事業者の手動での操作が必要であるため、Cloud DNS は KSK の自動ローテーションをサポートしていません。ただし、Cloud DNS は ZSK の完全自動ローテーションは実行します。Google Cloud CLI または REST API を使用して、自動管理 DNSKEY を表示できます。

始める前に

DNSSEC 鍵を表示するには、マネージド ゾーンを作成し、このゾーンに対して DNSSEC を有効化して DNSKEY レコードが作成されるようにする必要があります。

現在の DNSKEY を表示する

ゾーンの現在の DNSKEY レコードを表示するには、次の手順を行います。

gcloud

次の gcloud コマンドラインの例では、--project パラメータを指定することで、特定のプロジェクトで操作できます。

すべての DNSKEY を JSON 形式で出力するには、gcloud dns dns-keys list コマンドを使用します。

gcloud dns dns-keys list --zone ZONE_NAME

ZONE_NAME は、マネージド ゾーンの名前に置き換えます。

指定した DNSKEY の詳細を JSON 形式で表示するには、gcloud dns dns-keys describe コマンドを使用します。

gcloud dns dns-keys describe DNSKEY_ID --zone ZONE_NAME

以下を置き換えます。

  • DNSKEY_ID: 詳細を表示する DNSKEY の ID
  • ZONE_NAME: マネージド ゾーンの名前

API

すべての DNSKEY を ResourceRecordSet コレクションに出力するには、空のリクエスト本文を付けて dnsKeys.get メソッドを使用します。

GET https://dns.googleapis.com/dns/v1/projects/PROJECT/managedZones/ZONE_NAME/dnsKeys

以下を置き換えます。

  • PROJECT: DNS プロジェクトの名前または ID
  • ZONE_NAME: マネージド ゾーンの名前

出力は次のようになります。

{
  "kind": "dns#dnsKeysListResponse",
  "header": {
    "operationId": string
  },
  "dnsKeys": [
    dnsKeys Resource
  ],
  "nextPageToken": string
}

指定した DNSKEY の詳細を JSON 形式で表示するには、空のリクエスト本文を付けて dnsKeys DNSKEY_ID.get メソッドを使用します。

GET https://dns.googleapis.com/dns/v1/projects/PROJECT/managedZones/ZONE_NAME/dnsKeys/DNSKEY_ID

以下を置き換えます。

  • PROJECT: DNS プロジェクトの名前または ID
  • ZONE_NAME: マネージド ゾーンの名前
  • DNSKEY_ID: 詳細を表示する DNSKEY の ID

Python

  from apiclient import errors
  from apiclient.discovery import build

  PROJECT_NAME= 'PROJECT_NAME'
  ZONE_NAME= 'ZONE_NAME'

  try:
    service = build('dns', 'v1')
    response = service.dnskeys().list(project=PROJECT_NAME,
                                      managedZone=ZONE_NAME).execute()
  except errors.HttpError, error:
    print 'An error occurred: %s' % error

  try:
    response = service.dnskeys().list(project=PROJECT_NAME,
                                      managedZone=ZONE_NAME,
                                      keyId=KEY_ID).execute()
  except errors.HttpError, error:
    print 'An error occurred: %s' % error

以下を置き換えます。

  • PROJECT_NAME: DNS プロジェクトの名前または ID
  • ZONE_NAME: マネージド ゾーンの名前

次のステップ