בדף הזה מוסבר איך להשתמש באילוצים מותאמים אישית של שירות מדיניות הארגון כדי להגביל פעולות ספציפיות ב Trusted Cloud by S3NS משאבים הבאים:
dns.googleapis.com/ManagedZone
dns.googleapis.com/Policy
dns.googleapis.com/ResponsePolicy
dns.googleapis.com/ResponsePolicyRule
מידע נוסף על מדיניות הארגון זמין במאמר מדיניות ארגונית בהתאמה אישית.
מידע על כללי המדיניות והאילוצים של הארגון
Trusted Cloud שירות מדיניות הארגון מעניק שליטה מרוכזת ופרוגרמטית על המשאבים של הארגון. בתור אדמין של מדיניות הארגון, אתם יכולים להגדיר מדיניות ארגונית. זוהי קבוצה של הגבלות שנקראות אילוצים שחלות על משאביTrusted Cloud ועל הצאצאים של המשאבים האלה בהיררכיית המשאבים שלTrusted Cloud by S3NS . אפשר לאכוף את כללי המדיניות של הארגון ברמת הארגון, התיקייה או הפרויקט.
מדיניות הארגון מספקת אילוצים מנוהלים מובנים לשירותים שונים Trusted Cloud . עם זאת, אם אתם רוצים שליטה מפורטת יותר ומתואמת אישית על השדות הספציפיים המוגבלים במדיניות הארגון, אתם יכולים גם ליצור אילוצים מותאמים אישית ולהשתמש באילוצים המותאמים אישית האלה במדיניות הארגון.
ירושה של מדיניות
כברירת מחדל, כללי המדיניות של הארגון עוברים בירושה לצאצאים של המשאבים שבהם אתם אוכפים את המדיניות. לדוגמה, אם אוכפים מדיניות על תיקייה, Trusted Cloud אוכף את המדיניות על כל הפרויקטים בתיקייה. מידע נוסף על ההתנהגות הזו ועל הדרכים לשינוי שלה זמין במאמר כללי הערכה של היררכיות.
יתרונות
אפשר להשתמש בכללי מדיניות ארגונית בהתאמה אישית כדי לאפשר או לדחות ערכים ספציפיים למשאבים של Cloud DNS. לדוגמה, אם בקשה ליצירה או לעדכון של מכונה של Cloud DNS לא עומדת באימות האילוצים בהתאמה אישית שהוגדרו במדיניות הארגון, הבקשה תיכשל ותוחזר שגיאה למבצע הקריאה החוזרת.
מגבלות
כמו כל האילוצים של מדיניות הארגון, שינויים במדיניות לא חלים באופן רטרואקטיבי על מכונות קיימות.
- מדיניות חדשה לא משפיעה על הגדרות המכונות הקיימות.
- הגדרות של מכונה קיימת יישארו בתוקף, אלא אם תשנו אותן מערך תואם לערך לא תואם באמצעות מסוףTrusted Cloud , Google Cloud CLI או RPC.
לפני שמתחילים
-
In the Trusted Cloud console, on the project selector page, select or create a Trusted Cloud project.
-
Make sure that billing is enabled for your Trusted Cloud project.
-
Install the Google Cloud CLI.
-
Configure the gcloud CLI to use your federated identity.
For more information, see Sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- חשוב לדעת מהו מספר הארגון שלכם.
ORGANIZATION_ID
: מזהה הארגון, למשל123456789
.CONSTRAINT_NAME
: השם הרצוי לאילוץ בהתאמה אישית החדש. אילוץ מותאם אישית חייב להתחיל ב-custom.
, ויכול לכלול רק אותיות גדולות, אותיות קטנות או מספרים. לדוגמה,custom.restrictManagedZoneWithDeniedDescription
. האורך המקסימלי של השדה הזה הוא 70 תווים.RESOURCE_NAME
: השם המלא של המשאבTrusted Cloud שמכיל את האובייקט והשדה שרוצים להגביל. לדוגמה,dns.googleapis.com/ManagedZone
.CONDITION
: תנאי CEL שנכתב לגבי ייצוג של משאב שירות נתמך. האורך המקסימלי של השדה הוא 1,000 תווים. במאמר משאבים נתמכים מפורט מידע נוסף על המשאבים שאפשר לכתוב להם תנאים. לדוגמה,resource.description.contains('denied')
.ACTION
: הפעולה שצריך לבצע אם התנאיcondition
מתקיים. הערכים האפשריים הםALLOW
ו-DENY
.DISPLAY_NAME
: שם ידידותי למשתמש של האילוץ. האורך המקסימלי של השדה הוא 200 תווים.DESCRIPTION
: תיאור ידידותי של האילוץ שיוצג כהודעת שגיאה כשהמדיניות תבוצע. האורך המקסימלי של השדה הוא 2,000 תווים.- נכנסים לדף Organization policies במסוף Trusted Cloud .
- בבורר הפרויקטים, בוחרים את הפרויקט שרוצים להגדיר לו את מדיניות הארגון.
- בוחרים את האילוץ מהרשימה בדף Organization policies כדי להציג את הדף Policy details של האילוץ הזה.
- כדי להגדיר את מדיניות הארגון למשאב הזה, לוחצים על Manage policy.
- בדף Edit policy, בוחרים באפשרות Override parent's policy.
- לוחצים על Add a rule.
- בקטע Enforcement, בוחרים אם לאכוף את המדיניות הארגונית הזו או לא.
- אם רוצים להגדיר את מדיניות הארגון כמותנית בתג, לוחצים על Add condition. חשוב לזכור שאם מוסיפים כלל מותנה למדיניות ארגונית, צריך להוסיף לפחות כלל אחד ללא תנאי, אחרת לא ניתן לשמור את המדיניות. למידע נוסף, ראו הגדרת מדיניות ארגון באמצעות תגים.
- לוחצים על בדיקת שינויים כדי לדמות את ההשפעה של מדיניות הארגון. סימולציה של מדיניות לא זמינה לאילוצים מנוהלים מדור קודם. למידע נוסף, ראו בדיקת שינויים במדיניות הארגון באמצעות סימולטור המדיניות.
- כדי לסיים ולהחיל את מדיניות הארגון, לוחצים על Set policy. המדיניות נכנסת לתוקף תוך 15 דקות לכל היותר.
-
PROJECT_ID
: הפרויקט שבו רוצים לאכוף את האילוץ. -
CONSTRAINT_NAME
: השם שהגדרתם לאילוץ בהתאמה אישית. לדוגמה,custom.restrictManagedZoneWithDeniedDescription
. - מידע נוסף על השירות של מדיניות הארגון
- מידע נוסף על יצירה וניהול של כללי מדיניות ארגונית
- כאן אפשר לראות את הרשימה המלאה של אילוצים של מדיניות הארגון.
התפקידים הנדרשים
כדי לקבל את ההרשאות הנדרשות לניהול כללי מדיניות מותאמים אישית ברמת הארגון, צריך לבקש מהאדמין להקצות לכם את התפקיד אדמין של מדיניות הארגון (roles/orgpolicy.policyAdmin
) ב-IAM במשאב הארגוני.
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
יצירת אילוץ מותאם אישית
אילוץ בהתאמה אישית מוגדר בקובץ YAML לפי המשאבים, השיטות, התנאים והפעולות שנתמכים בשירות שבו אוכפים את מדיניות הארגון. התנאים של האילוצים המותאמים אישית מוגדרים באמצעות Common Expression Language (CEL). מידע נוסף על יצירת תנאים באילוצים מותאמים אישית באמצעות CEL זמין בקטע CEL במאמר יצירה וניהול של אילוצים מותאמים אישית.
כדי ליצור אילוץ בהתאמה אישית, יוצרים קובץ YAML בפורמט הבא:
name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- RESOURCE_NAME
methodTypes:
- CREATE
- UPDATE
condition: "CONDITION"
actionType: ACTION
displayName: DISPLAY_NAME
description: DESCRIPTION
מחליפים את מה שכתוב בשדות הבאים:
מידע נוסף על יצירת אילוצים מותאמים אישית זמין במאמר הגדרת אילוצים מותאמים אישית.
הגדרת אילוץ בהתאמה אישית
אחרי שיוצרים את קובץ ה-YAML של אילוץ מותאם אישית חדש, צריך להגדיר אותו כדי שהוא יהיה זמין למדיניות הארגון. כדי להגדיר אילוץ בהתאמה אישית, משתמשים בפקודהgcloud org-policies set-custom-constraint
:
gcloud org-policies set-custom-constraint CONSTRAINT_PATH
CONSTRAINT_PATH
בנתיב המלא לקובץ האילוצים המותאם אישית. לדוגמה, /home/user/customconstraint.yaml
.
בסיום, האילוצים המותאמים אישית יהיו זמינים כמדיניות הארגון ברשימה של Trusted Cloud by S3NS מדיניות הארגון.
כדי לוודא שהאילוץ בהתאמה אישית קיים, משתמשים בפקודה gcloud org-policies list-custom-constraints
:
gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
ORGANIZATION_ID
במזהה המשאב הארגוני.
למידע נוסף, ראו הצגת מדיניות הארגון.
אכיפת מדיניות מותאמת אישית של הארגון
כדי לאכוף אילוץ, יוצרים מדיניות ארגון שמפנה אליו, ואז מחילים את מדיניות הארגון הזו על Trusted Cloud by S3NS משאב.המסוף
gcloud
כדי ליצור מדיניות ארגונית עם כללים בוליאניים, יוצרים קובץ YAML של מדיניות שמפנה לאילוץ:
name: projects/PROJECT_ID/policies/CONSTRAINT_NAME spec: rules: - enforce: true
מחליפים את מה שכתוב בשדות הבאים:
כדי לאכוף את מדיניות הארגון שמכילה את האילוץ, מריצים את הפקודה הבאה:
gcloud org-policies set-policy POLICY_PATH
מחליפים את הערך POLICY_PATH
בנתיב המלא לקובץ ה-YAML של מדיניות הארגון. המדיניות נכנסת לתוקף תוך 15 דקות לכל היותר.
דוגמאות למדיניות ארגונית מותאמת אישית לתרחישים נפוצים
בטבלה הבאה מופיע התחביר של כמה אילוצים מותאמים אישית לתרחישים נפוצים לדוגמה:
תיאור | תחביר האילוצים |
---|---|
הגבלת הרישום ביומן למכונות של Cloud DNS |
name: organizations/ORGANIZATION_ID/customConstraints/custom.restrictManagedZoneWithDeniedDescription resourceTypes: - dns.googleapis.com/ManagedZone methodTypes: - CREATE - UPDATE condition: resource.description.contains('denied') actionType: DENY displayName: Restrict create / update for Cloud DNS ManagedZone resources description: Prevents users from creating / updating for Cloud DNS ManagedZone resources |
משאבים נתמכים ב-Cloud DNS
בטבלה הבאה מפורטים המשאבים של Cloud DNS שאפשר להפנות אליהם באילוצים מותאמים אישית.מקור מידע | שדה |
---|---|
dns.googleapis.com/ManagedZone |
resource.cloudLoggingConfig.enableLogging
|
resource.description
| |
resource.dnsName
| |
resource.dnssecConfig.defaultKeySpecs.algorithm
| |
resource.dnssecConfig.defaultKeySpecs.keyLength
| |
resource.dnssecConfig.defaultKeySpecs.keyType
| |
resource.dnssecConfig.nonExistence
| |
resource.dnssecConfig.state
| |
resource.forwardingConfig.targetNameServers.domainName
| |
resource.forwardingConfig.targetNameServers.forwardingPath
| |
resource.forwardingConfig.targetNameServers.ipv4Address
| |
resource.forwardingConfig.targetNameServers.ipv6Address
| |
resource.name
| |
resource.privateVisibilityConfig.gkeClusters.gkeClusterName
| |
resource.privateVisibilityConfig.networks.networkUrl
| |
resource.serviceDirectoryConfig.namespace.namespaceUrl
| |
resource.visibility
| |
dns.googleapis.com/Policy |
resource.alternativeNameServerConfig.targetNameServers.forwardingPath
|
resource.alternativeNameServerConfig.targetNameServers.ipv4Address
| |
resource.alternativeNameServerConfig.targetNameServers.ipv6Address
| |
resource.description
| |
resource.dns64Config.scope.allQueries
| |
resource.enableInboundForwarding
| |
resource.enableLogging
| |
resource.name
| |
resource.networks.networkUrl
| |
dns.googleapis.com/ResponsePolicy |
resource.description
|
resource.gkeClusters.gkeClusterName
| |
resource.networks.networkUrl
| |
resource.responsePolicyName
| |
dns.googleapis.com/ResponsePolicyRule |
resource.behavior
|
resource.dnsName
| |
resource.localData.localData.name
| |
resource.localData.localData.routingPolicy.geo.enableFencing
| |
resource.localData.localData.routingPolicy.geo.item.healthCheckedTargets.externalEndpoints
| |
resource.localData.localData.routingPolicy.geo.item.healthCheckedTargets.internalLoadBalancer.ipAddress
| |
resource.localData.localData.routingPolicy.geo.item.healthCheckedTargets.internalLoadBalancer.ipProtocol
| |
resource.localData.localData.routingPolicy.geo.item.healthCheckedTargets.internalLoadBalancer.loadBalancerType
| |
resource.localData.localData.routingPolicy.geo.item.healthCheckedTargets.internalLoadBalancer.networkUrl
| |
resource.localData.localData.routingPolicy.geo.item.healthCheckedTargets.internalLoadBalancer.port
| |
resource.localData.localData.routingPolicy.geo.item.healthCheckedTargets.internalLoadBalancer.project
| |
resource.localData.localData.routingPolicy.geo.item.healthCheckedTargets.internalLoadBalancer.region
| |
resource.localData.localData.routingPolicy.geo.item.location
| |
resource.localData.localData.routingPolicy.geo.item.rrdata
| |
resource.localData.localData.routingPolicy.healthCheck
| |
resource.localData.localData.routingPolicy.primaryBackup.backupGeoTargets.enableFencing
| |
resource.localData.localData.routingPolicy.primaryBackup.backupGeoTargets.item.healthCheckedTargets.externalEndpoints
| |
resource.localData.localData.routingPolicy.primaryBackup.backupGeoTargets.item.healthCheckedTargets.internalLoadBalancer.ipAddress
| |
resource.localData.localData.routingPolicy.primaryBackup.backupGeoTargets.item.healthCheckedTargets.internalLoadBalancer.ipProtocol
| |
resource.localData.localData.routingPolicy.primaryBackup.backupGeoTargets.item.healthCheckedTargets.internalLoadBalancer.loadBalancerType
| |
resource.localData.localData.routingPolicy.primaryBackup.backupGeoTargets.item.healthCheckedTargets.internalLoadBalancer.networkUrl
| |
resource.localData.localData.routingPolicy.primaryBackup.backupGeoTargets.item.healthCheckedTargets.internalLoadBalancer.port
| |
resource.localData.localData.routingPolicy.primaryBackup.backupGeoTargets.item.healthCheckedTargets.internalLoadBalancer.project
| |
resource.localData.localData.routingPolicy.primaryBackup.backupGeoTargets.item.healthCheckedTargets.internalLoadBalancer.region
| |
resource.localData.localData.routingPolicy.primaryBackup.backupGeoTargets.item.location
| |
resource.localData.localData.routingPolicy.primaryBackup.backupGeoTargets.item.rrdata
| |
resource.localData.localData.routingPolicy.primaryBackup.primaryTargets.externalEndpoints
| |
resource.localData.localData.routingPolicy.primaryBackup.primaryTargets.internalLoadBalancer.ipAddress
| |
resource.localData.localData.routingPolicy.primaryBackup.primaryTargets.internalLoadBalancer.ipProtocol
| |
resource.localData.localData.routingPolicy.primaryBackup.primaryTargets.internalLoadBalancer.loadBalancerType
| |
resource.localData.localData.routingPolicy.primaryBackup.primaryTargets.internalLoadBalancer.networkUrl
| |
resource.localData.localData.routingPolicy.primaryBackup.primaryTargets.internalLoadBalancer.port
| |
resource.localData.localData.routingPolicy.primaryBackup.primaryTargets.internalLoadBalancer.project
| |
resource.localData.localData.routingPolicy.primaryBackup.primaryTargets.internalLoadBalancer.region
| |
resource.localData.localData.routingPolicy.primaryBackup.trickleTraffic
| |
resource.localData.localData.routingPolicy.wrr.item.healthCheckedTargets.externalEndpoints
| |
resource.localData.localData.routingPolicy.wrr.item.healthCheckedTargets.internalLoadBalancer.ipAddress
| |
resource.localData.localData.routingPolicy.wrr.item.healthCheckedTargets.internalLoadBalancer.ipProtocol
| |
resource.localData.localData.routingPolicy.wrr.item.healthCheckedTargets.internalLoadBalancer.loadBalancerType
| |
resource.localData.localData.routingPolicy.wrr.item.healthCheckedTargets.internalLoadBalancer.networkUrl
| |
resource.localData.localData.routingPolicy.wrr.item.healthCheckedTargets.internalLoadBalancer.port
| |
resource.localData.localData.routingPolicy.wrr.item.healthCheckedTargets.internalLoadBalancer.project
| |
resource.localData.localData.routingPolicy.wrr.item.healthCheckedTargets.internalLoadBalancer.region
| |
resource.localData.localData.routingPolicy.wrr.item.rrdata
| |
resource.localData.localData.routingPolicy.wrr.item.weight
| |
resource.localData.localData.rrdata
| |
resource.localData.localData.ttl
| |
resource.localData.localData.type
| |
resource.ruleName
|