ניהול הרשאות DNS

הרשאות DNS מאפשרות להוכיח בעלות על דומיינים עבור אישורים שמנוהלים על ידי Google. כשיוצרים אישור שמנוהל על ידי Google, אפשר לציין הרשאת DNS אחת או יותר לשימוש בהקצאה ובחידוש.

בדף הזה מוסבר איך ליצור ולאשר DNS לשימוש עם אישורים שמנוהלים על ידי Google.

מידע נוסף זמין במאמר בנושא הרשאות לדומיין.

יצירת הרשאת DNS

אישור DNS מכסה רק שם דומיין אחד. צריך ליצור הרשאת DNS נפרדת לכל שם דומיין שרוצים להשתמש בו עם אישור היעד.

אם אתם יוצרים הרשאת DNS עבור תעודת wildcard, כמו *.myorg.example.com, צריך להגדיר את הרשאת ה-DNS עבור דומיין האב – לדוגמה, myorg.example.com.

כדי לנהל אישורים באופן עצמאי בכמה פרויקטים, אפשר להשתמש PER_PROJECT_RECORD בהרשאה של DNS. ב-Certificate Manager אפשר לטפל בהנפקת אישורים ובניהול שלהם לכל פרויקט בנפרד בתוך Google Cloud. הרשאות DNS ואישורים שבהם אתם משתמשים בפרויקט מסוים הם עצמאיים ולא מתקשרים עם אלה שבפרויקטים אחרים.

המסוף

כשיוצרים אישור, אפשר ליצור אישור DNS או לצרף אישור DNS קיים. מידע נוסף זמין במאמר בנושא יצירת אישור בניהול Google עם הפניה לאישור DNS.

gcloud

בהתאם לדרישות שלכם, אתם יכולים ליצור אחד משני סוגי ההרשאות הבאים של DNS: ‏ FIXED_RECORD או PER_PROJECT_RECORD. מידע נוסף זמין במאמר בנושא אימות DNS.

הרשאה ל-DNS מסוג FIXED_RECORD

כדי ליצור הרשאת DNS מסוג FIXED_RECORD, משתמשים בפקודה gcloud certificate-manager dns-authorizations create הבאה:

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

מחליפים את מה שכתוב בשדות הבאים:

  • AUTHORIZATION_NAME: השם של אישור ה-DNS.
  • DOMAIN_NAME: השם של דומיין היעד שעבורו יוצרים את אישור ה-DNS הזה. שם הדומיין חייב להיות שם דומיין שמוגדר במלואו, כמו myorg.example.com.
  • LOCATION: מיקום היעד Google Cloud שבו יוצרים את אישור ה-DNS.

אחרי שיוצרים את הרשאת ה-DNS‏ FIXED_RECORD, מאמתים אותה באמצעות הפקודה gcloud 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'

הרשאה של DNS לרשומה בכל פרויקט

כדי ליצור הרשאת DNS מסוג PER_PROJECT_RECORD, משתמשים בפקודה gcloud certificate-manager dns-authorizations create הבאה:

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

מחליפים את מה שכתוב בשדות הבאים:

  • AUTHORIZATION_NAME: השם של אישור ה-DNS.
  • DOMAIN_NAME: השם של דומיין היעד שעבורו יוצרים את אישור ה-DNS הזה. שם הדומיין חייב להיות שם דומיין שמוגדר במלואו, כמו myorg.example.com.
  • LOCATION: מיקום היעד Google Cloud שבו יוצרים את אישור ה-DNS.

אחרי שיוצרים את הרשאת ה-DNS של PER_PROJECT_RECORD, מאמתים אותה באמצעות הפקודה gcloud 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_ujmmovf2vn55tgye.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, שולחים בקשת POST אל ה-method‏ dnsAuthorizations.create:

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 .
  • LOCATION: מיקום היעד Google Cloud שבו יוצרים את אישור ה-DNS. למיקום הגלובלי, צריך להשתמש בערך global.
  • AUTHORIZATION_NAME: השם של אישור ה-DNS.
  • DOMAIN_NAME: השם של דומיין היעד שעבורו יוצרים את אישור ה-DNS הזה. שם הדומיין חייב להיות שם דומיין שמוגדר במלואו, כמו myorg.example.com.

הוספת רשומת ה-CNAME להגדרת ה-DNS

אם אתם משתמשים בפתרון DNS של צד שלישי כדי לנהל את ה-DNS, תוכלו לעיין במסמכי התיעוד שלו כדי להוסיף את רשומת ה-CNAME להגדרות ה-DNS. אם אתם משתמשים ב-Google Cloud כדי לנהל את ה-DNS, אתם צריכים לבצע את השלבים שמפורטים בקטע הזה.

המסוף

כדי ליצור קבוצת רשומות, פועלים לפי השלבים הבאים:

  1. נכנסים לדף DNS zones במסוף Google Cloud .

    מעבר לאזורים ב-Cloud DNS

  2. לוחצים על השם של תחום ה-DNS שרוצים להוסיף אליו את הרשומה.

  3. בדף פרטי האזור, לוחצים על הוספת רשומה רגילה.

  4. בדף יצירת סט הרשומות, בשדה שם ה-DNS, מזינים את התת-דומיין של תחום ה-DNS.

    כשמזינים את שם תת-הדומיין, צריך לוודא ששם תת-הדומיין, כולל הטקסט האפור שמוצג בשדה שם ה-DNS, זהה לערך המלא של השדה dnsResourceRecord.name שמוצג בפלט של הפקודה gcloud certificate-manager dns-authorizations describe.

    דוגמאות:

    • אם ערך השדה 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, מזינים ערך מספרי חיובי לאורך החיים של רשומת המשאב, כלומר משך הזמן שבו אפשר לשמור אותה במטמון.

  7. ברשימה יחידת TTL, בוחרים את יחידת הזמן – לדוגמה, 30 minutes.

  8. בשדה Canonical name, מזינים את הערך המלא של השדה dnsResourceRecord.data כפי שהוא מוצג בפלט של הפקודה gcloud certificate-manager dns-authorizations describe.

  9. כדי להזין פרטים נוספים, לוחצים על הוספת פריט.

  10. לוחצים על יצירה.

gcloud

כשיוצרים אימות DNS, פקודת ה-CLI של gcloud מחזירה את רשומת ה-CNAME המתאימה. כדי להוסיף את רשומת ה-CNAME להגדרות ה-DNS בתחום ה-DNS של דומיין היעד, פועלים לפי השלבים הבאים:

  1. מתחילים את העסקה של רשומת ה-DNS:

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

    מחליפים את DNS_ZONE_NAME בשם של אזור ה-DNS של היעד.

  2. מוסיפים את רשומת ה-CNAME לתחום ה-DNS של היעד:

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

    מחליפים את מה שכתוב בשדות הבאים:

    • CNAME_RECORD: ערך הנתונים המלא של רשומת ה-CNAME שמוחזרת על ידי פקודת Google Cloud CLI שיצרה את הרשאת ה-DNS המתאימה.
    • VALIDATION_SUBDOMAIN_NAME: תת-הדומיין של הקידומת בתחום ה-DNS, למשל _acme-challenge. אפשר להעתיק את השם מיומן הפקודות של gcloud certificate-manager dns-authorizations describe, כמו שמתואר במאמר יצירת הרשאת DNS.
    • DOMAIN_NAME: השם של דומיין היעד.שם הדומיין חייב להיות שם דומיין מלא (FQDN), כמו myorg.example.com. צריך גם לכלול את הנקודה בסוף אחרי שם דומיין היעד.
    • DNS_ZONE_NAME: השם של תחום ה-DNS של היעד.

    למידע נוסף על ההבדל בין הרשאות DNS של FIXED_RECORD לבין PER_PROJECT_RECORD, אפשר לעיין בדוגמאות הבאות. ההבדל היחיד בין שתי הדוגמאות הוא הערך של הדגל --name.

    הרשאה ל-DNS מסוג FIXED_RECORD

    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"
    

    הרשאה של DNS לרשומה בכל פרויקט

    gcloud dns record-sets transaction add 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog. \
        --name="_acme-challenge_ujmmovf2vn55tgye.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

כדי לעדכן אישור DNS, צריך לשלוח בקשת PATCH ל-method‏ dnsAuthorizations.patch באופן הבא:

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

מחליפים את מה שכתוב בשדות הבאים:

  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • 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"'

    דוגמאות נוספות לסינון שאפשר להשתמש בהן ב-Certificate Manager זמינות במאמר מיון וסינון של תוצאות רשימה במסמכי התיעוד של Cloud Key Management Service.

  • PAGE_SIZE: מספר התוצאות שרוצים להחזיר בכל דף

  • LIMIT: המספר המקסימלי של התוצאות שרוצים להחזיר

  • SORT_BY: רשימה מופרדת בפסיקים של name שדות שלפיהם התוצאות שמוחזרות ממוינות. סדר המיון שמוגדר כברירת מחדל הוא סדר עולה. כדי להגדיר סדר יורד, מוסיפים טילדה (~) לפני השדה.

  • LOCATION: מיקום היעד. Google Cloud כדי לראות רשימה של הרשאות DNS מכל האזורים, משתמשים בערך -. ערך ברירת המחדל הוא -. הדגל הזה הוא אופציונלי.

API

כדי לראות את כל ההרשאות שהוגדרו ל-DNS, שולחים בקשת GET לשיטה dnsAuthorizations.list באופן הבא:

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

מחליפים את מה שכתוב בשדות הבאים:

  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • 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

כדי למחוק הרשאת DNS שמוקצית לאישורים שמנוהלים על ידי Google, צריך למחוק את האישורים לפני שמוחקים את הרשאת ה-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

כדי למחוק הרשאת DNS, שולחים בקשת DELETE ל-method‏ dnsAuthorizations.delete באופן הבא:

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

מחליפים את מה שכתוב בשדות הבאים:

  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • LOCATION: מיקום היעד. Google Cloud מיקום ברירת המחדל הוא global.
  • AUTHORIZATION_NAME: השם של אישור ה-DNS.

המאמרים הבאים