יצירת אילוצים מותאמים אישית של מדיניות הארגון

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

לפני שמתחילים

  1. In the Trusted Cloud console, on the project selector page, select or create a Trusted Cloud project.

    Go to project selector

  2. Make sure that billing is enabled for your Trusted Cloud project.

  3. Install the Google Cloud CLI.

  4. Configure the gcloud CLI to use your federated identity.

    For more information, see Sign in to the gcloud CLI with your federated identity.

  5. To initialize the gcloud CLI, run the following command:

    gcloud init
  6. חשוב לדעת מהו מספר הארגון שלכם.
  7. התפקידים הנדרשים

    כדי לקבל את ההרשאות הנדרשות לניהול כללי מדיניות מותאמים אישית ברמת הארגון, צריך לבקש מהאדמין להקצות לכם את התפקיד אדמין של מדיניות הארגון (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
    

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

    • 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 תווים.

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

    הגדרת אילוץ בהתאמה אישית

    אחרי שיוצרים את קובץ ה-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 משאב.

    המסוף

    1. נכנסים לדף Organization policies במסוף Trusted Cloud .

      כניסה לדף 'מדיניות הארגון'

    2. בבורר הפרויקטים, בוחרים את הפרויקט שרוצים להגדיר לו את מדיניות הארגון.
    3. בוחרים את האילוץ מהרשימה בדף Organization policies כדי להציג את הדף Policy details של האילוץ הזה.
    4. כדי להגדיר את מדיניות הארגון למשאב הזה, לוחצים על Manage policy.
    5. בדף Edit policy, בוחרים באפשרות Override parent's policy.
    6. לוחצים על Add a rule.
    7. בקטע Enforcement, בוחרים אם לאכוף את המדיניות הארגונית הזו או לא.
    8. אם רוצים להגדיר את מדיניות הארגון כמותנית בתג, לוחצים על Add condition. חשוב לזכור שאם מוסיפים כלל מותנה למדיניות ארגונית, צריך להוסיף לפחות כלל אחד ללא תנאי, אחרת לא ניתן לשמור את המדיניות. למידע נוסף, ראו הגדרת מדיניות ארגון באמצעות תגים.
    9. לוחצים על בדיקת שינויים כדי לדמות את ההשפעה של מדיניות הארגון. סימולציה של מדיניות לא זמינה לאילוצים מנוהלים מדור קודם. למידע נוסף, ראו בדיקת שינויים במדיניות הארגון באמצעות סימולטור המדיניות.
    10. כדי לסיים ולהחיל את מדיניות הארגון, לוחצים על Set policy. המדיניות נכנסת לתוקף תוך 15 דקות לכל היותר.

    gcloud

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

          name: projects/PROJECT_ID/policies/CONSTRAINT_NAME
          spec:
            rules:
            - enforce: true
        

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

    • PROJECT_ID: הפרויקט שבו רוצים לאכוף את האילוץ.
    • CONSTRAINT_NAME: השם שהגדרתם לאילוץ בהתאמה אישית. לדוגמה, custom.restrictManagedZoneWithDeniedDescription.

    כדי לאכוף את מדיניות הארגון שמכילה את האילוץ, מריצים את הפקודה הבאה:

        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

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