בדף הזה מוסבר איך להגדיר רוטציה אוטומטית של פרטי הכניסה למסד הנתונים של Cloud SQL ב-Secret Manager.
לפני שמתחילים
- מוודאים שמופע Cloud SQL משתמש בגרסה נתמכת של המנוע של מסד הנתונים, כמו PostgreSQL או SQL Server.
- מוודאים שאתם משתמשים בסוד אזורי. רוטציה אוטומטית של פרטי הכניסה ל-Cloud SQL זמינה רק לסודות אזוריים ב-Secret Manager. התכונה הזו לא נתמכת בסודות גלובליים.
- מוודאים שיש לכם מכונה קיימת של Cloud SQL ומשתמש של מסד נתונים. מידע נוסף מופיע במאמרים בנושא יצירת מופעים ויצירה וניהול של משתמשים.
- צריך לוודא שיש לכם הרשאות לניהול מדיניות IAM במופע Cloud SQL. מידע נוסף זמין במאמר בנושא תפקידים והרשאות.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות להפעלת רוטציה אוטומטית, צריך לבקש מהאדמין להקצות לכם תפקיד שכולל את ההרשאות הבאות:
cloudsql.users.listcloudsql.users.update
אפשר לקבל את ההרשאות האלה באמצעות תפקידים מוגדרים מראש או תפקידים בהתאמה אישית. במאמר תפקידי IAM ל-Cloud SQL מפורטים התפקידים השונים וההרשאות שמשויכות אליהם.
כדי לקרוא הסבר על מתן תפקידים, קראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יצירת סוד של פרטי כניסה למסד נתונים ב-Cloud SQL
כדי להפעיל סיבוב אוטומטי, צריך ליצור סוד מסוג Cloud SQL DB credentials.
המסוף
-
נכנסים לדף Secret Manager במסוף Cloud de Confiance .
-
בדף Secret Manager, לוחצים על הכרטיסייה Regional secrets ואז על Create regional secret.
-
בדף Create regional secret (יצירת Secret אזורי), מזינים שם ל-Secret בשדה Name (שם).
-
מסמנים את תיבת הסימון Set secret type (הגדרת סוג הסוד) ובוחרים באפשרות
Cloud SQL DB credentialsבתור סוג הסוד. -
ברשימה Region, בוחרים את המיקום שבו רוצים לאחסן את הסוד האזורי.
-
(אופציונלי) בקטע Rotation, מגדירים את לוח הזמנים של הרוטציה של הסוד. אם לא מגדירים לוח זמנים להחלפה, צריך להחליף את הסוד באופן ידני.
מסמנים את תיבת הסימון הגדרת תקופת רוטציה.
ברשימה תקופת הרוטציה, בוחרים מבין אפשרויות ברירת המחדל או בוחרים באפשרות בהתאמה אישית כדי להגדיר לוח זמנים משלכם לרוטציה.
בשדה החל מ, מזינים את תאריך ההתחלה ואת השעה של תקופת הרוטציה.
-
לוחצים על Create secret (יצירת סוד).
gcloud
לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
- SECRET_ID: מזהה הסוד
- LOCATION: המיקום של הסוד Cloud de Confiance by S3NS
מריצים את הפקודה הבאה:
Linux, macOS או Cloud Shell
gcloud secrets create SECRET_ID \ --location=LOCATION \ --secret-type=CLOUD_SQL_DB_CREDENTIALS
Windows (PowerShell)
gcloud secrets create SECRET_ID ` --location=LOCATION ` --secret-type=CLOUD_SQL_DB_CREDENTIALS
Windows (cmd.exe)
gcloud secrets create SECRET_ID ^ --location=LOCATION ^ --secret-type=CLOUD_SQL_DB_CREDENTIALS
אמורים לקבל תגובה שדומה לזו:
Created secret [projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID].
REST
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- LOCATION: המיקום של הסוד Cloud de Confiance by S3NS
- PROJECT_ID: מזהה הפרויקט Cloud de Confiance by S3NS
- SECRET_ID: מזהה הסוד
ה-method של ה-HTTP וכתובת ה-URL:
POST https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID
גוף בקשת JSON:
{
"secretType": "CLOUD_SQL_DB_CREDENTIALS"
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID"
PowerShell
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID" | Select-Object -Expand Content
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION/secrets/SECRET_ID",
"createTime": "2026-07-28T05:00:00Z",
"secretType": "CLOUD_SQL_DB_CREDENTIALS",
"etag": "\"1a2b3c4d\"",
"policyMember": {
"iamPolicyUidPrincipal": "principal://secretmanager.googleapis.com/projects/PROJECT_NUMBER/uid/locations/LOCATION/secrets/SECRET_UID"
}
}
מתן הרשאות לזהות הסודית המובנית
לכל סוד יש מזהה ייחודי שמבדיל אותו מכל המשאבים האחרים בפרויקט. Cloud de Confiance by S3NS צריך להעניק לזהות המובנית את ההרשאות הנדרשות לעדכון פרטי הכניסה במופע Cloud SQL. מידע נוסף זמין במאמר הקצאת תפקידים למשאבים עם זהויות מוכללות.
המסוף
-
בדף הפרטים של הסוד, עוברים לכרטיסייה סקירה כללית.
-
רושמים בצד את מזהה חשבון המשתמש ב-IAM של הסוד.
המזהה הוא בפורמט הבא:
principal://secretmanager.googleapis.com/projects/PROJECT_NUMBER/uid/locations/LOCATION/secrets/SECRET_UID. -
נכנסים לדף IAM במסוף Cloud de Confiance .
-
לוחצים על הענקת גישה.
החלונית הענקת גישה מופיעה.
-
בשדה New principals, מזינים את מזהה חשבון המשתמש ב-IAM של הסוד.
-
בוחרים תפקיד מהרשימה Select a role שמעניק את ההרשאות הנדרשות.
מידע נוסף זמין במאמר בנושא תפקידים נדרשים.
-
לוחצים על Save.
gcloud
קבלת הזהות הסודית
לפני שמעניקים הרשאות IAM, צריך לתאר את הסוד כדי לקבל את הזהות המובנית iamPolicyUidPrincipal. אתם מציינים את מחרוזת הזהות הזו בדגל --member כשמוסיפים את קישור מדיניות ה-IAM.
לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
- SECRET_ID: מזהה הסוד
- LOCATION: המיקום של הסוד Cloud de Confiance by S3NS
מריצים את הפקודה הבאה:
Linux, macOS או Cloud Shell
gcloud secrets describe SECRET_ID \ --location=LOCATION \ --format="value(policyMember.iamPolicyUidPrincipal)"
Windows (PowerShell)
gcloud secrets describe SECRET_ID ` --location=LOCATION ` --format="value(policyMember.iamPolicyUidPrincipal)"
Windows (cmd.exe)
gcloud secrets describe SECRET_ID ^ --location=LOCATION ^ --format="value(policyMember.iamPolicyUidPrincipal)"
אמורים לקבל תגובה שדומה לזו:
principal://secretmanager.googleapis.com/projects/PROJECT_NUMBER/uid/locations/LOCATION/secrets/SECRET_UID
הענקת תפקיד ב-IAM לזהות של הסוד
מקצים תפקיד IAM שמכיל את ההרשאות הנדרשות ל-Cloud SQL (כמו cloudsql.users.update ו-cloudsql.users.list, או התפקיד המוגדר מראש roles/cloudsql.admin) לחשבון המשתמש של הסוד שאוחזר בשלב הקודם:
לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט Cloud de Confiance by S3NS
- PROJECT_NUMBER: מספר הפרויקט Cloud de Confiance by S3NS
- LOCATION: המיקום של הסוד Cloud de Confiance by S3NS
- SECRET_UID: המזהה הייחודי של משאב הסוד שנוצר על ידי המערכת
- ROLE: התפקיד ב-IAM שניתן לזהות הסודית
מריצים את הפקודה הבאה:
Linux, macOS או Cloud Shell
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="principal://secretmanager.googleapis.com/projects/PROJECT_NUMBER/uid/locations/LOCATION/secrets/SECRET_UID" \ --role="ROLE"
Windows (PowerShell)
gcloud projects add-iam-policy-binding PROJECT_ID ` --member="principal://secretmanager.googleapis.com/projects/PROJECT_NUMBER/uid/locations/LOCATION/secrets/SECRET_UID" ` --role="ROLE"
Windows (cmd.exe)
gcloud projects add-iam-policy-binding PROJECT_ID ^ --member="principal://secretmanager.googleapis.com/projects/PROJECT_NUMBER/uid/locations/LOCATION/secrets/SECRET_UID" ^ --role="ROLE"
REST
קבלת הזהות הסודית
לפני שמעניקים הרשאות IAM, צריך לאחזר את פרטי הסוד כדי לקבל את הזהות המובנית iamPolicyUidPrincipal. כשמגדירים את מדיניות ה-IAM, מציינים את מחרוזת הזהות הזו ב-JSON של הבקשה.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- LOCATION: המיקום של הסוד Cloud de Confiance by S3NS
- PROJECT_ID: מזהה הפרויקט Cloud de Confiance by S3NS
- SECRET_ID: מזהה הסוד
ה-method של ה-HTTP וכתובת ה-URL:
GET https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID
גוף בקשת JSON:
{
"policy": {
"bindings": [
{
"role": "ROLE",
"members": [
"principal://secretmanager.googleapis.com/projects/PROJECT_NUMBER/uid/locations/LOCATION/secrets/SECRET_UID"
]
}
]
}
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID"
PowerShell
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID" | Select-Object -Expand Content
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION/secrets/SECRET_ID",
"createTime": "2026-07-28T05:00:00Z",
"secretType": "CLOUD_SQL_DB_CREDENTIALS",
"etag": "\"1a2b3c4d\"",
"policyMember": {
"iamPolicyUidPrincipal": "principal://secretmanager.googleapis.com/projects/PROJECT_NUMBER/uid/locations/LOCATION/secrets/SECRET_UID"
}
}
הענקת תפקיד ב-IAM לזהות של הסוד
מקצים תפקיד IAM שמכיל את ההרשאות הנדרשות ל-Cloud SQL (כמו cloudsql.users.update ו-cloudsql.users.list, או התפקיד המוגדר מראש roles/cloudsql.admin) לחשבון המשתמש של הסוד שאוחזר בשלב הקודם:
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט Cloud de Confiance by S3NS
- ROLE: התפקיד ב-IAM שניתן לזהות הסודית
- PROJECT_NUMBER: מספר הפרויקט Cloud de Confiance by S3NS
- LOCATION: המיקום של הסוד Cloud de Confiance by S3NS
- SECRET_UID: המזהה הייחודי של משאב הסוד שנוצר על ידי המערכת
ה-method של ה-HTTP וכתובת ה-URL:
POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
גוף בקשת JSON:
{
"policy": {
"bindings": [
{
"role": "ROLE",
"members": [
"principal://secretmanager.googleapis.com/projects/PROJECT_NUMBER/uid/locations/LOCATION/secrets/SECRET_UID"
]
}
]
}
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy"
PowerShell
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy" | Select-Object -Expand Content
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"version": 1,
"etag": "BwWWv0I7vBw=",
"bindings": [
{
"role": "roles/cloudsql.admin",
"members": [
"principal://secretmanager.googleapis.com/projects/PROJECT_NUMBER/uid/locations/LOCATION/secrets/SECRET_UID"
]
}
]
}
רוטציה של הסוד
סטטוס הרוטציה של הסודות החדשים שנוצרו ב-Cloud SQL הוא Disabled עד לרוטציה הראשונה שמתבצעת בהצלחה. כדי לאמת את ההרשאות ולהתחיל את לוח הזמנים של הרוטציה האוטומטית, צריך לבצע רוטציה של הסוד באופן ידני.
המסוף
-
נכנסים לדף Secret Manager במסוף Cloud de Confiance .
-
בדף Secret Manager (ניהול סודות), לוחצים על הכרטיסייה Regional secrets (סודות אזוריים).
-
לוחצים על שם הסוד כדי לעבור לדף הפרטים של הסוד.
-
לוחצים על סיבוב.
מופיעה החלונית Rotate secret.
-
מציינים את מספר המכונה ואת שם המשתמש של מכונת Cloud SQL שרוצים לעדכן.
-
(אופציונלי) מרחיבים את הקטע הגדרות נוספות כדי להזין סיסמה ספציפית. אם לא מציינים סיסמה, Secret Manager יוצר באופן אוטומטי סיסמה חזקה ואקראית.
-
לוחצים על סיבוב.
gcloud
הפעלת סיבוב מנוהל
לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
- SECRET_ID: מזהה הסוד
- LOCATION: המיקום של הסוד Cloud de Confiance by S3NS
- INSTANCE_ID: מזהה המכונה ב-Cloud SQL
- USERNAME: שם חשבון משתמש במסד הנתונים ב-Cloud SQL
מריצים את הפקודה הבאה:
Linux, macOS או Cloud Shell
gcloud secrets enable-managed-rotation SECRET_ID \ --location=LOCATION \ --instance-id=INSTANCE_ID \ --username=USERNAME
Windows (PowerShell)
gcloud secrets enable-managed-rotation SECRET_ID ` --location=LOCATION ` --instance-id=INSTANCE_ID ` --username=USERNAME
Windows (cmd.exe)
gcloud secrets enable-managed-rotation SECRET_ID ^ --location=LOCATION ^ --instance-id=INSTANCE_ID ^ --username=USERNAME
רוטציה ידנית של הסוד
מפעילים רוטציה ידנית מיידית כדי ליצור את הגרסה הראשונית של הסוד ולאמת את הקישוריות.
לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
- SECRET_ID: מזהה הסוד
- LOCATION: המיקום של הסוד Cloud de Confiance by S3NS
מריצים את הפקודה הבאה:
Linux, macOS או Cloud Shell
gcloud secrets rotate-secret SECRET_ID \ --location=LOCATION
Windows (PowerShell)
gcloud secrets rotate-secret SECRET_ID ` --location=LOCATION
Windows (cmd.exe)
gcloud secrets rotate-secret SECRET_ID ^ --location=LOCATION
אמורים לקבל תגובה שדומה לזו:
Name: projects/PROJECT_NUMBER/locations/LOCATION/secrets/SECRET_ID/versions/1 State: ENABLED
REST
הפעלת סיבוב מנוהל
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- LOCATION: המיקום של הסוד Cloud de Confiance by S3NS
- PROJECT_ID: מזהה הפרויקט Cloud de Confiance by S3NS
- SECRET_ID: מזהה הסוד
- INSTANCE_ID: מזהה המכונה ב-Cloud SQL
- USERNAME: שם חשבון משתמש במסד הנתונים ב-Cloud SQL
ה-method של ה-HTTP וכתובת ה-URL:
POST https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID:enableManagedRotation
גוף בקשת JSON:
{
"cloudSqlSingleUserCredentials": {
"instanceId": "INSTANCE_ID",
"username": "USERNAME"
}
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID:enableManagedRotation"
PowerShell
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID:enableManagedRotation" | Select-Object -Expand Content
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION/secrets/SECRET_ID/versions/1",
"createTime": "2026-07-28T05:00:00Z",
"state": "ENABLED"
}
רוטציה ידנית של הסוד
מפעילים רוטציה ידנית מיידית כדי ליצור את הגרסה הראשונית של הסוד ולאמת את הקישוריות.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- LOCATION: המיקום של הסוד Cloud de Confiance by S3NS
- PROJECT_ID: מזהה הפרויקט Cloud de Confiance by S3NS
- SECRET_ID: מזהה הסוד
ה-method של ה-HTTP וכתובת ה-URL:
POST https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID:rotateSecret
כדי לשלוח את הבקשה אתם צריכים לבחור אחת מהאפשרויות הבאות:
curl
מריצים את הפקודה הבאה:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID:rotateSecret"
PowerShell
מריצים את הפקודה הבאה:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID:rotateSecret" | Select-Object -Expand Content
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION/secrets/SECRET_ID/versions/1",
"createTime": "2026-07-28T05:00:00Z",
"state": "ENABLED"
}
Secret Manager מנסה לעדכן את פרטי הכניסה במופע Cloud SQL. אם הפעולה מצליחה, סטטוס הסיבוב משתנה ל-Enabled, והטיימר של הסיבוב האוטומטי המתוזמן מתחיל לפעול.