במדריך הזה נסביר איך להשתמש ב-Certificate Manager כדי לפרוס אישור גלובלי בניהול Google עם הרשאה של DNS למאזן עומסים פנימי של אפליקציות (ALB) בין אזורים.
אם רוצים לפרוס למאזני עומסים חיצוניים גלובליים או למאזני עומסים אזוריים, אפשר לעיין במאמרים הבאים:
מטרות
במדריך הזה מוסבר איך לבצע את הפעולות הבאות:
- יוצרים אישור שמנוהל על ידי Google ומונפק על ידי רשות אישורים שמהימנה על הציבור, עם הרשאת DNS, באמצעות Certificate Manager.
- פורסים את האישור למאזן עומסים נתמך באמצעות פרוקסי HTTPS של יעד.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Compute Engine, Certificate Manager APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Compute Engine, Certificate Manager APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init - יצירת תחום DNS ציבורי
התפקידים הנדרשים
כדי לבצע את המשימות במדריך הזה, צריך לוודא שיש לכם את התפקידים הבאים:
בעלים של Certificate Manager (
roles/certificatemanager.owner)נדרשת כדי ליצור ולנהל משאבים של Certificate Manager.
אדמין של איזון עומסים ב-Compute (
roles/compute.loadBalancerAdmin) או אדמין של רשת מחשוב (roles/compute.networkAdmin)נדרש כדי ליצור ולנהל שרת proxy ליעד HTTPS.
אדמין DNS (
roles/dns.admin)נדרש אם רוצים להשתמש ב-Cloud DNS כפתרון DNS.
למידע נוסף, קראו את המאמרים הבאים:
- תפקידים והרשאות עבור Certificate Manager.
- תפקידים והרשאות ב-IAM של Compute Engine ל-Compute Engine.
- תפקידים והרשאות ל-Cloud DNS.
שמות דומיין
כדי ליצור אישורים, צריך לקבל את שמות הדומיין שמוגדרים במלואם (FQDN) של הדומיינים שבבעלותכם. אם אין לכם דומיין, אתם יכולים להשתמש ב-Cloud Domains כדי לרשום דומיין.
יצירת מאזן העומסים
במדריך הזה מניחים שכבר יצרתם והגדרתם את הקצוות העורפיים של מאזן העומסים, בדיקות התקינות, השירותים לקצה העורפי ומיפוי כתובות ה-URL. חשוב לרשום את השם של מפת כתובות ה-URL, כי תצטרכו אותו בהמשך המדריך הזה.
אם לא יצרתם מאזן עומסים פנימי של אפליקציות (ALB) בכמה אזורים, כדאי לעיין במאמר בנושא הגדרה של מאזן עומסים פנימי של אפליקציות (ALB) בכמה אזורים עם קצה עורפי של קבוצת מכונות וירטואליות.
יצירת אישור שמנוהל על ידי Google באמצעות אימות DNS
לפני שיוצרים את האישור, צריך ליצור תחום DNS ציבורי. לאחר מכן, יוצרים הרשאת DNS ומוסיפים את רשומת ה-CNAME לתחום ה-DNS של היעד.
יצירת הרשאת DNS
אישור DNS מכסה רק שם דומיין אחד. צריך ליצור הרשאת DNS נפרדת לכל שם דומיין שרוצים להשתמש בו עם אישור היעד.
אם אתם יוצרים הרשאת DNS עבור תעודת wildcard, כמו *.myorg.example.com, צריך להגדיר את הרשאת ה-DNS עבור דומיין האב – לדוגמה, myorg.example.com.
המסוף
כשיוצרים אישור, אפשר ליצור אישור 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]
מחליפים את מה שכתוב בשדות הבאים:
-
AUTHORIZATION_NAME: השם של אישור ה-DNS. -
DOMAIN_NAME: השם של דומיין היעד שעבורו יוצרים את אישור ה-DNS הזה. שם הדומיין חייב להיות שם דומיין שמוגדר במלואו, כמוmyorg.example.com.
אחרי שיוצרים את הרשאת ה-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
מחליפים את מה שכתוב בשדות הבאים:
-
AUTHORIZATION_NAME: השם של אישור ה-DNS. -
DOMAIN_NAME: השם של דומיין היעד שעבורו יוצרים את אישור ה-DNS הזה. שם הדומיין חייב להיות שם דומיין שמוגדר במלואו, כמוmyorg.example.com.
אחרי שיוצרים את הרשאת ה-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'
API
כדי ליצור הרשאת DNS, שולחים בקשת POST אל ה-method dnsAuthorizations.create:
POST /v1/projects/PROJECT_ID/locations/global/dnsAuthorizations?dns_authorization_id=AUTHORIZATION_NAME
{
"domain": "DOMAIN_NAME",
"type": "PER_PROJECT_RECORD" //optional
}
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
AUTHORIZATION_NAME: השם של אישור ה-DNS. -
DOMAIN_NAME: השם של דומיין היעד שעבורו יוצרים את אישור ה-DNS הזה. שם הדומיין חייב להיות שם דומיין שמוגדר במלואו, כמוmyorg.example.com.
יצירת אישור בניהול Google שמפנה להרשאת ה-DNS
כדי ליצור אישור שמנוהל על ידי Google ומפנה להרשאת ה-DNS שיצרתם בשלבים הקודמים:
המסוף
נכנסים לדף Certificate Manager במסוף Google Cloud .
בכרטיסייה אישורים, לוחצים על הוספת אישור.
בשדה שם האישור, מזינים שם ייחודי לאישור.
אופציונלי: בשדה Description, מזינים תיאור של האישור. התיאור מאפשר לכם לזהות את האישור.
בקטע מיקום, בוחרים באפשרות גלובלי.
בקטע היקף, בוחרים באפשרות כל האזורים.
בשדה Certificate type (סוג האישור), בוחרים באפשרות Create Google-managed certificate (יצירת אישור בניהול Google).
בקטע סוג רשות האישורים, בוחרים באפשרות ציבורי.
בשדה שמות דומיינים, מציינים רשימה מופרדת בפסיקים של שמות דומיינים של האישור. כל שם דומיין צריך להיות שם דומיין שמוגדר במלואו, כמו
myorg.example.com. שם הדומיין יכול להיות גם שם דומיין עם תו כללי, כמו*.example.com.בקטע סוג הרשאה, בוחרים באפשרות הרשאת DNS.
בדף מופיעים אישורי ה-DNS של שמות הדומיינים. אם לשם דומיין אין הרשאה משויכת ב-DNS, פועלים לפי השלבים הבאים כדי ליצור אחת:
- לוחצים על יצירת הרשאת DNS חסרה.
- בשדה DNS authorization name (שם הרשאת DNS), מציינים את השם של הרשאת ה-DNS.
סוג ההרשאה של DNS שמוגדר כברירת מחדל הוא
FIXED_RECORD. כדי לנהל אישורים באופן עצמאי בכמה פרויקטים, מסמנים את תיבת הסימון הרשאה לכל פרויקט. - לוחצים על יצירת הרשאת DNS.
בשדה Labels (תוויות), מציינים את התוויות שרוצים לשייך לאישור. כדי להוסיף תווית, לוחצים על Add label ומציינים מפתח וערך לתווית.
לוחצים על יצירה.
האישור החדש מופיע ברשימת האישורים.
gcloud
כדי ליצור אישור חוצה אזורים שמנוהל על ידי Google עם הרשאת DNS, משתמשים בפקודה certificate-manager certificates create עם הדגלים dns-authorizations ו---scope:
gcloud certificate-manager certificates create CERTIFICATE_NAME \
--domains="DOMAIN_NAME, *.DOMAIN_NAME" \
--dns-authorizations="AUTHORIZATION_NAMES" \
--scope=all-regions
מחליפים את מה שכתוב בשדות הבאים:
-
CERTIFICATE_NAME: שם האישור. -
DOMAIN_NAME: השם של דומיין היעד. שם הדומיין חייב להיות שם דומיין שמוגדר במלואו, כמוmyorg.example.com, או דומיין עם תו כללי לחיפוש, כמו*.myorg.example.com. הקידומת של כוכבית ונקודה (*.) מציינת תעודת wildcard. -
AUTHORIZATION_NAMES: רשימה מופרדת בפסיקים של שמות הרשאות DNS.
API
כדי ליצור את האישור, שולחים בקשת POST ל-method certificates.create באופן הבא:
POST /v1/projects/PROJECT_ID/locations/global/certificates?certificate_id=CERTIFICATE_NAME
{
"managed": {
"domains": ["DOMAIN_NAME"],
"dnsAuthorizations": [
"projects/PROJECT_ID/locations/global/dnsAuthorizations/AUTHORIZATION_NAME",
],
"scope": "ALL_REGIONS"
}
}
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
CERTIFICATE_NAME: שם האישור. -
DOMAIN_NAME: השם של דומיין היעד. שם הדומיין חייב להיות שם דומיין שמוגדר במלואו, כמוmyorg.example.com, או דומיין עם תו כללי לחיפוש, כמו*.myorg.example.com. הקידומת של כוכבית ונקודה (*.) מציינת תעודת wildcard. -
AUTHORIZATION_NAMES: רשימה מופרדת בפסיקים של שמות הרשאות DNS.
הוספת רשומת ה-CNAME להגדרת ה-DNS
אם אתם משתמשים בפתרון DNS של צד שלישי כדי לנהל את ה-DNS, תוכלו לעיין במסמכי התיעוד שלו כדי להוסיף את רשומת ה-CNAME להגדרות ה-DNS. אם אתם משתמשים ב-Google Cloud כדי לנהל את ה-DNS, אתם צריכים לבצע את השלבים שמפורטים בקטע הזה.
המסוף
כדי ליצור קבוצת רשומות, פועלים לפי השלבים הבאים:
נכנסים לדף DNS zones במסוף Google Cloud .
לוחצים על השם של תחום ה-DNS שרוצים להוסיף אליו את הרשומה.
בדף פרטי האזור, לוחצים על הוספת רשומה רגילה.
בדף יצירת סט הרשומות, בשדה שם ה-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.
בשדה סוג רשומת משאב בוחרים באפשרות CNAME.
בשדה TTL, מזינים ערך מספרי חיובי לאורך החיים של רשומת המשאב, כלומר משך הזמן שבו אפשר לשמור אותה במטמון.
ברשימה יחידת TTL, בוחרים את יחידת הזמן – לדוגמה,
30 minutes.בשדה Canonical name, מזינים את הערך המלא של השדה
dnsResourceRecord.dataכפי שהוא מוצג בפלט של הפקודהgcloud certificate-manager dns-authorizations describe.כדי להזין פרטים נוספים, לוחצים על הוספת פריט.
לוחצים על יצירה.
gcloud
כשיוצרים אימות DNS, פקודת ה-CLI של gcloud מחזירה את רשומת ה-CNAME המתאימה. כדי להוסיף את רשומת ה-CNAME להגדרות ה-DNS בתחום ה-DNS של דומיין היעד, פועלים לפי השלבים הבאים:
מתחילים את העסקה של רשומת ה-DNS:
gcloud dns record-sets transaction start --zone="DNS_ZONE_NAME"
מחליפים את
DNS_ZONE_NAMEבשם של אזור ה-DNS של היעד.מוסיפים את רשומת ה-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"-
מריצים את טרנזקציית רשומת ה-DNS כדי לשמור את השינויים:
gcloud dns record-sets transaction execute --zone="DNS_ZONE_NAME"
מחליפים את
DNS_ZONE_NAMEבשם של אזור ה-DNS של היעד.
Terraform
כדי להוסיף את רשומת ה-CNAME להגדרת ה-DNS, אפשר להשתמש במשאב google_dns_record_set.
אימות הסטטוס של האישור
לפני שמקצים אישור למאזן עומסים, צריך לוודא שהוא פעיל. יכול להיות שיחלפו כמה דקות עד שמצב האישור ישתנה לACTIVE.
המסוף
נכנסים לדף Certificate Manager במסוף Google Cloud .
בכרטיסייה Certificates (אישורים), בודקים את העמודה Status (סטטוס) של האישור.
gcloud
כדי לבדוק את סטטוס האישור, מריצים את הפקודה הבאה:
gcloud certificate-manager certificates describe CERTIFICATE_NAME
מחליפים את CERTIFICATE_NAME בשם של אישור מנוהל על ידי Google.
הפלט אמור להיראות כך:
createTime: '2021-10-20T12:19:53.370778666Z'
expireTime: '2022-05-07T05:03:49Z'
managed:
authorizationAttemptInfo:
- domain: myorg.example.com
state: AUTHORIZED
dnsAuthorizations:
- projects/myProject/locations/global/dnsAuthorizations/myCert
domains:
- myorg.example.com
state: ACTIVE
name: projects/myProject/locations/global/certificates/myCert
pemCertificate: |
-----BEGIN CERTIFICATE-----
[...]
-----END CERTIFICATE-----
sanDnsnames:
- myorg.example.com
updateTime: '2021-10-20T12:19:55.083385630Z'
אם מצב האישור לא משתנה ל-ACTIVE אחרי כמה שעות, צריך לבדוק שהוספתם נכון את רשומת CNAME להגדרות ה-DNS.
שלבים נוספים לפתרון בעיות זמינים במאמר בנושא פתרון בעיות ב-Certificate Manager.
פריסת האישור במאזן עומסים
כדי לפרוס את האישור הגלובלי שמנוהל על ידי Google, צריך לצרף אותו ישירות לשרת ה-proxy של היעד.
צירוף האישור ישירות לשרת ה-proxy של היעד
אפשר לצרף את האישור לשרת proxy חדש של יעד או לשרת proxy קיים של יעד.
כדי לצרף את האישור לשרת proxy חדש ליעד, משתמשים בפקודה gcloud compute
target-https-proxies create:
gcloud compute target-https-proxies create PROXY_NAME \
--url-map=URL_MAP \
--certificate-manager-certificates=CERTIFICATE_NAME \
--global
מחליפים את מה שכתוב בשדות הבאים:
-
PROXY_NAME: שם של שרת proxy של היעד. -
URL_MAP: השם של מפת URL. יצרתם את מפת ה-URL כשיצרתם את מאזן העומסים. -
CERTIFICATE_NAME: שם האישור.
כדי לצרף את האישור ל-proxy קיים של HTTPS, משתמשים בפקודה gcloud
compute target-https-proxies update. אם אתם לא יודעים את השם של שרת ה-proxy הקיים ליעד, עוברים לדף Target proxies ורושמים את השם של שרת ה-proxy ליעד.
gcloud compute target-https-proxies update PROXY_NAME \
--global \
--certificate-manager-certificates=CERTIFICATE_NAME
אחרי שיוצרים או מעדכנים את פרוקסי היעד, מריצים את הפקודה הבאה כדי לאמת אותו:
gcloud compute target-https-proxies list
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud על המשאבים שבהם השתמשתם במדריך הזה, מוחקים אותם.
מחיקת מאזן העומסים והמשאבים שלו.
מוחקים את האישור שמנוהל על ידי Google:
המסוף
נכנסים לדף Certificate Manager במסוף Google Cloud .
בכרטיסייה אישורים, מסמנים את תיבת הסימון של האישור.
לוחצים על Delete.
בתיבת הדו-שיח שמופיעה, לוחצים על מחיקה כדי לאשר.
gcloud
gcloud certificate-manager certificates delete CERTIFICATE_NAME
מחליפים את
CERTIFICATE_NAMEבשם של אישור היעד.מחיקת אימות ה-DNS:
gcloud certificate-manager dns-authorizations delete AUTHORIZATION_NAME
מחליפים את
AUTHORIZATION_NAMEבשם של הרשאת ה-DNS של היעד.