בדף הזה מוסבר איך להפעיל ולהשתמש באילוצים מותאמים אישית בסביבת GKE on AWS. Google CloudOrganization Policy Service עוזר לכם לנהל את הגדרות המשאבים וליצור אמצעי הגנה בסביבת הענן.
סקירה כללית
באמצעות כללי מדיניות ארגוניים בהתאמה אישית, אתם יכולים ליצור כללי מדיניות מפורטים לגבי משאבים בסביבות GKE Multi-Cloud כדי לעמוד בדרישות האבטחה והתאימות הספציפיות של הארגון. אפשר גם ליצור מדיניות ארגונית במצב פרימטר לבדיקות כדי לבדוק מדיניות חדשה בלי להשפיע על עומסי העבודה בסביבת הייצור.
מידע נוסף על מדיניות הארגון זמין במאמר מבוא לשירות של מדיניות הארגון.
לפני שמתחילים
לפני שמתחילים, חשוב להבין את הנושאים הבאים.
העברה בירושה של מדיניות
כברירת מחדל, צאצאים של משאבים שמוחלת עליהם מדיניות ארגונית יורשים את המדיניות הזו. לדוגמה, אם אוכפים מדיניות על ארגון, Google Cloud המדיניות נאכפת על כל הפרויקטים בארגון. מידע נוסף על ירושה של מדיניות ועל שינוי כללי ההערכה מופיע במאמר כללי הערכה בהיררכיה.
מגבלות
לפני שיוצרים אילוצים בהתאמה אישית, חשוב לזכור את המגבלות הבאות:
- אפשר לאכוף אילוצים מותאמים אישית רק על השיטות
CREATEאוUPDATEלמשאבי GKE ב-AWS. - אילוצים מותאמים אישית חדשים שנאכפים לא חלים אוטומטית על משאבים קיימים. כדי להחיל את האילוץ, צריך לעדכן את המשאבים הקיימים. כדי למצוא משאבים קיימים שצריך לעדכן, אפשר לאכוף מדיניות ארגון בהרצת ניסיון.
- כדי ליצור אילוצים ולאכוף את מדיניות הארגון, צריך לקבל את תפקיד ה-IAM Organization Policy Administrator (אדמין מדיניות הארגון) (
roles/orgpolicy.policyAdmin) בארגון Google Cloud . מידע נוסף על ההרשאות שנדרשות לניהול מדיניות הארגון עם אילוצים בהתאמה אישית זמין במאמר בנושא תפקידים נדרשים.
תמחור
מדיניות הארגון ומגבלות בהתאמה אישית מוצעות ללא תשלום.
יצירת אילוצים מותאמים אישית
צריך לציין אילוצים מותאמים אישית באמצעות השדות במפרטים של משאבי ה-API AwsCluster ו-AwsNodepool, לא כולל שדות שמתוארים כ-Output only (פלט בלבד).יצירת אילוץ בהתאמה אישית
כדי ליצור אילוץ חדש בהתאמה אישית, מגדירים את האילוץ בקובץ YAML ומחילים את האילוץ בהתאמה אישית בארגון באמצעות Google Cloud CLI. האילוץ הזה צריך לכלול את המדיניות הספציפית שרוצים לאכוף במשאבי GKE ב-AWS.
יוצרים קובץ YAML להגדרת אילוץ בהתאמה אישית באשכול:
name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- gkemulticloud.googleapis.com/AwsCluster
methodTypes:
- CREATE
condition: CONDITION
actionType: ACTION
displayName: DISPLAY_NAME
description: DESCRIPTION
כדי להגדיר אילוץ בהתאמה אישית במאגר הצמתים, משתמשים בהגדרת ה-YAML הבאה:
name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- gkemulticloud.googleapis.com/AwsNodePool
methodTypes:
- CREATE
condition: CONDITION
actionType: ACTION
displayName: DISPLAY_NAME
description: DESCRIPTION
מחליפים את מה שכתוב בשדות הבאים:
ORGANIZATION_ID: מזהה הארגון, למשל123456789.
CONSTRAINT_NAME: השם של האילוץ החדש בהתאמה אישית. אילוץ מותאם אישית חייב להתחיל ב-custom., ויכול לכלול רק אותיות גדולות, אותיות קטנות או מספרים. לדוגמה,custom.allowClusterCreateIfAnnotationPresent. האורך המקסימלי של השדה הוא 70 תווים, לא כולל הקידומת, למשלorganizations/123456789/customConstraints/custom.
CONDITION: תנאי שנכתב על ייצוג של Google Cloud משאב. התנאים נכתבים ב-Common Expression Language (CEL). האורך המקסימלי של השדה הוא 1,000 תווים. לדוגמה, תנאי:"key" in resource.annotations && resource.annotations.key == "created-by".
ACTION: הפעולה שתתבצע אם התנאי יתקיים. הערך יכול להיותALLOWאוDENY.
DISPLAY_NAME: השם המוצג של האילוץ. האורך המקסימלי של השדה הוא 200 תווים.
DESCRIPTION: תיאור של ההגבלה שיוצג כהודעת שגיאה אם המדיניות תופר. לדוגמה,"Allow new clusters only when certain annotations are set."האורך המקסימלי של השדה הוא 2,000 תווים.
מידע נוסף על יצירת אילוץ בהתאמה אישית זמין במאמר הגדרת אילוצים בהתאמה אישית.
משייכים את האילוץ למשאבים
אחרי שיוצרים קובץ YAML לאילוץ חדש בהתאמה אישית, צריך להגדיר אותו כדי שהאילוץ יהיה זמין למדיניות הארגונית.
כדי להגדיר אילוץ בהתאמה אישית, משתמשים בפקודה
gcloud org-policies set-custom-constraint:gcloud org-policies set-custom-constraint PATH_TO_FILEמחליפים את
PATH_TO_FILEבנתיב של הגדרת ה-YAML של האילוץ בהתאמה אישית.כדי לוודא שהאילוץ המותאם אישית נוצר, משתמשים בפקודה
gcloud org-policies list-custom-constraints:gcloud org-policies list-custom-constraints --organization=ORGANIZATION_IDהפלט יציג את המדיניות שנוצרה:
CUSTOM_CONSTRAINT: custom.allowClusterCreateIfAnnotationPresent ACTION_TYPE: ALLOW METHOD_TYPES: CREATE RESOURCE_TYPES: gkemulticloud.googleapis.com/AwsCluster DISPLAY_NAME: Allow new clusters only when certain annotations are set.
אכיפה של האילוץ המותאם אישית
כדי לאכוף את האילוץ החדש בהתאמה אישית, יוצרים מדיניות ארגון שמפנה לאילוץ, ואז מחילים את מדיניות הארגון.
יוצרים קובץ YAML למדיניות הארגון:
name: RESOURCE_HIERARCHY/policies/POLICY_NAME spec: rules: - enforce: trueמחליפים את מה שכתוב בשדות הבאים:
RESOURCE_HIERARCHY: המיקום של המדיניות החדשה, שמשפיע על היקף האכיפה. אפשר להיעזר בהיררכיית המשאבים. Google Cloud לדוגמה, אם רוצים לאכוף את המדיניות בפרויקט ספציפי, משתמשים ב-projects/PROJECT_ID. כדי לאכוף את המדיניות בארגון ספציפי, משתמשים ב-organizations/ORGANIZATION_ID.
POLICY_NAME: השם של המדיניות החדשה.
אכיפת המדיניות:
gcloud org-policies set-policy PATH_TO_POLICYמחליפים את
PATH_TO_POLICYבנתיב לקובץ הגדרת המדיניות.מוודאים שהמדיניות קיימת:
gcloud org-policies list --RESOURCE_FLAG=RESOURCE_IDמחליפים את מה שכתוב בשדות הבאים:
RESOURCE_FLAG: המשאב Google Cloud שבו נאכפה המדיניות. לדוגמה, פרויקט או ארגון.
RESOURCE_ID: המזהה של המשאב שבו נאכפה המדיניות. לדוגמה, מזהה הפרויקט או מזהה הארגון.
הפלט אמור להיראות כך:
CONSTRAINT: custom.allowClusterCreateIfAnnotationPresent LIST_POLICY: - BOOLEAN_POLICY: SET ETAG: CPjb27wGEOijhL4B-
בדיקת המדיניות
בודקים את מדיניות הארגון על ידי יצירת אשכול AWS חדש בפרויקט מוגבל.יצירת אשכול AWS בפרויקט מוגבל.
gcloud container aws clusters create CLUSTER_NAME \ --aws-region AWS_REGION \ --location GOOGLE_CLOUD_LOCATION \ --cluster-version CLUSTER_VERSION \ --fleet-project FLEET_PROJECT \ --vpc-id VPC_ID \ --subnet-ids CONTROL_PLANE_SUBNET_1,CONTROL_PLANE_SUBNET_2,CONTROL_PLANE_SUBNET_3 \ --pod-address-cidr-blocks POD_ADDRESS_CIDR_BLOCKS \ --service-address-cidr-blocks SERVICE_ADDRESS_CIDR_BLOCKS \ --role-arn API_ROLE_ARN \ --database-encryption-kms-key-arn DB_KMS_KEY_ARN \ --admin-users ADMIN_USERS_LIST \ --config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \ --iam-instance-profile CONTROL_PLANE_PROFILE \ --tags "Name=CLUSTER_NAME-cp"הפלט אמור להיראות כך:
FAILED_PRECONDITION: Operation denied by org policy on resource 'projects/PROJECT_NUMBER/locations/GOOGLE_CLOUD_REGION': ["customConstraints/custom.allowClusterCreateIfAnnotationPresent": "Allow new clusters only when certain annotations are set."] '@type': type.googleapis.com/google.rpc.ErrorInfo domain: googleapis.com metadata: customConstraints: customConstraints/custom.allowClusterCreateIfAnnotationPresent service: gkemulticloud.googleapis.com reason: CUSTOM_ORG_POLICY_VIOLATION