לפני שמתחילים
לפני שמגדירים או עורכים את המדיניות dataform.restrictGitRemotes, צריך למצוא את כתובות ה-URL המלאות של מאגרי ה-Git המרוחקים שרוצים להוסיף לרשימת ההיתרים.
כדי למצוא את כתובת ה-URL המלאה של מאגר Git מרוחק שכבר מחובר למאגר Dataform, פועלים לפי השלבים הבאים:
נכנסים לדף Dataform במסוף Google Cloud .
בוחרים מאגר ואז לוחצים על הגדרות.
חשוב לזכור שכתובות URL של מאגרי מידע מרוחקים שמוצגות בדף Dataform מקוצרות, ואי אפשר להשתמש בהן במדיניות
dataform.restrictGitRemotes.בדף הגדרות, בקטע הגדרות חיבור ל-Git, מעתיקים את הערך של מקור המאגר.
הערך של Repository source הוא כתובת ה-URL המלאה של המאגר המרוחק. אפשר להשתמש בכתובת ה-URL הזו במדיניות
dataform.restrictGitRemotes.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות לניהול מדיניות הארגון, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM Organization policy administrator (אדמין של מדיניות הארגון) (roles/orgpolicy.policyAdmin) בארגון.
כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
זהו תפקיד שמוגדר מראש וכולל את ההרשאות שנדרשות לניהול מדיניות הארגון. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי לנהל את מדיניות הארגון, נדרשות ההרשאות הבאות:
-
orgpolicy.constraints.list -
orgpolicy.policies.create -
orgpolicy.policies.delete -
orgpolicy.policies.list -
orgpolicy.policies.update -
orgpolicy.policy.get -
orgpolicy.policy.set
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
מידע על הגבלת מאגרי Git מרוחקים
אפשר לקשר מאגר Dataform למאגר GitHub או למאגר GitLab.
כדאי להגביל את מאגר המאגרי המרוחקים שאליהם מאגרי Dataform יכולים להתחבר, כדי למנוע מגורמים זדוניים לגשת לבסיס הקוד של Dataform ולטוקנים של גישה דרך עותקים לא מוגנים של המאגר.
אתם יכולים להשתמש בשירות מדיניות הארגון כדי ליצור מדיניות ארגונית שמגבילה את כתובות ה-URL של מאגרי Git שאליהם Dataform יכול להתחבר.
ההגבלה להגבלת מאגרי Git מרוחקים ב-Dataform היא:
constraints/dataform.restrictGitRemotes
כדי להשתמש באילוץ, יוצרים מדיניות ארגונית עם
allowedValues רשימה של כתובות URL
של מאגרי Git מרוחקים שיכולים להתחבר למאגר Dataform.
מאגרי Git מרוחקים מזוהים לפי כתובת ה-URL המלאה שלהם.
למדיניות dataform.restrictGitRemotes יש השפעה רטרואקטיבית, כלומר ההגבלה משפיעה על מאגרי Dataform קיימים.
כשמדיניות הארגון מופעלת, מאגר Dataform יכול להתחבר רק למאגרי Git מרוחקים שמופיעים ברשימה allowedValues. מאגרי Git מרוחקים שלא הוגדרו במפורש במדיניות הארגון לא יכולים להתחבר למאגר Dataform.
אם לא מגדירים את המדיניות dataform.restrictGitRemotes, התקשורת בין מאגרי Dataform לבין מאגרי Git מרוחקים לא מוגבלת.
אפשר להשתמש במדיניות dataform.restrictGitRemotes בדרכים הבאות:
Allow all- מאגרי Dataform יכולים להתחבר לכל כתובות ה-URL של מאגרים מרוחקים. בוחרים באפשרות הזו אם הארגון לא רוצה לחסום תקשורת עם מאגרים מרוחקים. לחלופין, כדי לאפשר את כל כתובות ה-URL של מאגרי מידע מרוחקים, אפשר להשאיר את מדיניות הארגון ללא הגדרה.
allowedValuesרשימת כתובות URL- מאגרי Dataform יכולים להתחבר רק למאגרים מרוחקים שנכללים ברשימת ההיתרים. בוחרים באפשרות הזו כדי למנוע זליגת מידע.
Deny all- אי אפשר לחבר מאגרי Dataform לכתובות URL מרוחקות. בוחרים באפשרות הזו אם הארגון רוצה לחסום את כל התקשורת ולהשתמש במאגרי Dataform.
הדרישות להוספת מאגרי Git מרחוק לרשימת ההיתרים
אפשר להחיל את הגבלת הרשימה הזו רק על מאגרי GitHub ו-GitLab.
מדיניות הארגון חלה באופן רטרואקטיבי ומשפיעה על מאגרי Dataform קיימים.
ההגבלה הזו מקבלת את הערך
allowedValues, שחוסם את החיבור לכל מאגרי Git מרוחקים אחרים, או את הערךDeny all. ברירת המחדל היאAllow all– מדיניות ארגונית לא מוגדרת מאפשרת תקשורת עם כל מאגרי ה-Git המרוחקים. מומלץ להגדיר את מדיניות הארגון לערךallowedValues.באחריותכם או באחריות האדמין עם ההרשאות הנדרשות לנהל ולתחזק את המדיניות. חשוב לוודא שהמידע על האדמין של המדיניות מועבר בתוך הארגון.
הגדרת האילוץ של מדיניות הארגון ברמת הארגון
המסוף
- עוברים לדף /Organizational Policies/Organization Policies.
- אם צריך, בוחרים את הארגון הנדרש מהתפריט הנפתח של הפרויקט.
- לוחצים על הגבלת גישה ל-git remotes עבור repositories ב-Dataform.
- לוחצים על ניהול המדיניות. אם אי אפשר ללחוץ על הלחצן ניהול מדיניות, סימן שאין לכם את ההרשאות הנכונות.
בוחרים באפשרות התאמה אישית כדי להגדיר את מדיניות הארגון למאגרי Git מרוחקים ספציפיים.
בוחרים את אכיפת המדיניות וסוג המדיניות הנדרשים.
בשדה ערכי מדיניות, בוחרים באפשרות בהתאמה אישית.
מזינים את כתובת ה-URL המלאה של מאגר Git מרוחק.
לוחצים על New policy value ומזינים כתובות URL מלאות של מאגרי Git מרוחקים לפי הצורך.
לוחצים על שמירה כדי להחיל את ההגבלה.
gcloud
כדי להגדיר אילוץ למאגרי Git מרוחקים, קודם צריך לדעת את מזהה הארגון. כדי למצוא את מזהה הארגון, מריצים את הפקודה organizations list ומחפשים את המזהה המספרי בתשובה:
gcloud organizations list
ה-CLI של gcloud מחזיר רשימה של ארגונים בפורמט הבא:
DISPLAY_NAME ID example-organization1 29252605212 example-organization2 1234567890
משתמשים בפקודה gcloud resource-manager org-policies set-policy כדי להגדיר את מדיניות הארגון. צריך לספק את המדיניות כקובץ JSON או YAML.
יוצרים קובץ JSON בפורמט הבא:
{
"name": "organizations/ORGANIZATION_ID/policies/dataform.restrictGitRemotes",
"spec": {
"rules": [
{
"values": {
"allowedValues": ["https://github.com/example/allowed-repository.git"]
}
}
]
}
}
מחליפים את ORGANIZATION_ID במזהה המספרי של הארגון.
אם אתם לא רוצים שמאגרי Dataform יוכלו להתחבר למאגרי Git מרוחקים, אתם יכולים להגדיר מדיניות ארגונית עם denyAll
הגדרה ל-true:
{
"name": "organizations/ORGANIZATION_ID/policies/dataform.restrictGitRemotes",
"spec": {
"rules": [
{
"denyAll": true
}
]
}
}
מחליפים את ORGANIZATION_ID במזהה המספרי של הארגון.
API
משתמשים ב-API של setOrgPolicy() כדי להגדיר את ההגבלה. ל-Dataform יש הרשאה להתחבר לכתובות ה-URL של מאגר Git מרוחק ברשימה allowedValues שאתם מציינים.
לדוגמה, הבקשה הבאה היא להחלת האילוץ dataform.restrictGitRemotes על ארגון שבו נבחרו מאגרי Git מרוחקים שמאגרי Dataform יכולים להתחבר אליהם:
POST https://orgpolicy.googleapis.com/v2/organizations/ORGANIZATION_ID/policies
כאשר ORGANIZATION_ID הוא המספר המזהה של הארגון.
עכשיו, בגוף הבקשה, מציינים את מדיניות הארגון הרצויה לאילוץ הזה:
{
"name": "organizations/ORGANIZATION_ID/policies/dataform.restrictGitRemotes",
"spec": {
"rules": [
{
"values": {
"allowedValues": ["https://github.com/example/allowed-repository.git"]
}
}
]
}
}
Replace <code><var>ORGANIZATION_ID</var></code> with the numeric ID
of the organization.
אם אתם לא רוצים שמאגרי Dataform יוכלו להתחבר למאגרי Git מרוחקים, אתם יכולים להגדיר מדיניות ארגונית עם denyAll שמוגדר ל-true:
{
"name": "organizations/ORGANIZATION_ID/policies/dataform.restrictGitRemotes",
"spec": {
"rules": [
{
"denyAll": true
}
]
}
}
Replace <code><var>ORGANIZATION_ID</var></code> with the numeric ID
of the organization.
אם מדיניות הארגון כבר מוגדרת, צריך להריץ את הבקשה הבאה עם הגדרת מדיניות הארגון כגוף הבקשה:
PATCH https://orgpolicy.googleapis.com/v2/organizations/ORGANIZATION_ID/policies/dataform.restrictGitRemotes
הגדרת מדיניות הארגון ברמת הפרויקט
הגדרה של מדיניות ארגונית ברמת הפרויקט מבטלת את המדיניות הארגונית ברמת הארגון או מתמזגת איתה. במקרה של מיזוג, denyAll מקבל עדיפות על פני allowedValues. לדוגמה, אם מדיניות הארגון ברמת הארגון מוגדרת ל-denyAll, ובמדיניות הממוזגת ברמת הפרויקט מופיעה כתובת URL של מאגר מרוחק ברשימה allowedValues, ל-Dataform אין הרשאה להתחבר למאגר המרוחק. במקרה כזה, מדיניות הארגון ברמת הפרויקט צריכה לבטל את המדיניות ברמת הארגון, כדי ש-Dataform יוכל להתחבר למאגר המרוחק. מידע נוסף על ההיררכיה של מדיניות הארגון זמין במאמר הסבר על הערכת ההיררכיה.
המסוף
פועלים לפי אותו תהליך שמתואר בקטע הגדרת ההגבלה של מדיניות הארגון ברמת הארגון, אבל בוחרים את הפרויקט הרצוי בכלי לבחירת פרויקטים במקום בארגון.
gcloud
משתמשים בפקודה gcloud resource-manager org-policies set-policy כדי להגדיר את מדיניות הארגון. צריך לספק את המדיניות כקובץ JSON או YAML.
יוצרים קובץ JSON בפורמט הבא:
{
"name": "projects/PROJECT_ID_OR_NUMBER/policies/dataform.restrictGitRemotes",
"spec": {
"rules": [
{
"values": {
"allowedValues": ["https://github.com/example/allowed-repository.git"]
}
}
]
}
}
מחליפים את PROJECT_ID_OR_NUMBER במזהה הפרויקט או במספר הפרויקט של מדיניות הארגון הזו.
לאחר מכן מעבירים את הקובץ עם הבקשה:
gcloud resource-manager org-policies set-policy MY_POLICY.JSON --project=PROJECT_ID
API
משתמשים ב-API של setOrgPolicy() כדי להגדיר את ההגבלה. ל-Dataform יש הרשאה להתחבר לכתובות ה-URL של מאגר Git מרוחק ברשימה allowedValues שאתם מציינים.
לדוגמה, הבקשה הבאה היא להחיל את האילוץ dataform.restrictGitRemotes על ארגון שבו מאגרי Dataform יכולים להתחבר רק למאגרי Git מרוחקים שנבחרו, ומדיניות constraints/dataform.restrictGitRemotes עדיין לא הוגדרה:
POST https://orgpolicy.googleapis.com/v2/projects/PROJECT_ID_OR_NUMBER/policies
גוף הבקשה מכיל את מדיניות הארגון הרצויה לאילוץ הזה:
{
"name": "projects/PROJECT_ID_OR_NUMBER/policies/dataform.restrictGitRemotes",
"spec": {
"rules": [
{
"values": {
"allowedValues": ["https://github.com/example/allowed-repository.git"]
}
}
]
}
}
מחליפים את PROJECT_ID_OR_NUMBER במזהה הפרויקט או במספר הפרויקט של הבקשה הזו.
זוהי בקשה להחיל את האילוץ dataform.restrictGitRemotes על ארגון שבו מאגרי Dataform יכולים להתחבר רק למאגרי Git מרוחקים שנבחרו, והמדיניות constraints/dataform.restrictGitRemotes כבר מוגדרת:
PATCH https://orgpolicy.googleapis.com/v2/projects/PROJECT_ID_OR_NUMBER/policies/dataform.restrictGitRemotes
גוף הבקשה מכיל את מדיניות הארגון הרצויה לאילוץ הזה:
{
"name": "projects/PROJECT_ID_OR_NUMBER/policies/dataform.restrictGitRemotes",
"spec": {
"rules": [
{
"values": {
"allowedValues": ["https://github.com/example/allowed-repository.git"]
}
}
]
}
}
מחליפים את PROJECT_ID_OR_NUMBER במזהה הפרויקט או במספר הפרויקט של הבקשה הזו.
שיטות מומלצות להוספת מאגרי Git מרוחקים לרשימת ההיתרים
כדי לצמצם את הסיכון לזליגת נתונים, צריך להגדיר במפורש את האילוץ
dataform.restrictGitRemotesכדי להוסיף לרשימת ההיתרים מבחר של מאגרי Git מרוחקים מהימנים.אם אתם משתמשים רק במאגרי Dataform שלא מחוברים למאגרי Git מרוחקים, צריך להגדיר את האילוץ
dataform.restrictGitRemotesל-Deny All.אין להשתמש ברשימה
deniedValuesעם המגבלה הזו. אם מגדירים ערכים ברשימהdeniedValues, המשמעות היא שרק מאגרי ה-Git המרוחקים ברשימהdeniedValuesמוגבלים מחיבור. זה עלול להיות בעייתי מבחינת אבטחה אם רוצים לשלוט בדיוק במאגרי ה-Git המרוחקים שאליהם Dataform יכול להתחבר. אם רוצים להסיר מאגרי Git מרוחקים מסוימים מהרשימהallowedValues, צריך לעדכן את מדיניות הארגון הקיימת כדי להסיר אותם מהרשימהallowedValues, במקום להוסיף את המאגר המרוחק לרשימהdeniedValuesבהיררכיה נמוכה יותר.אם רוצים להגדיר מדיניות ארגונית על חלק גדול בהיררכיית המשאבים, אבל להחריג פרויקטים מסוימים, אפשר לשחזר את מדיניות הארגון שמוגדרת כברירת מחדל באמצעות השיטה
setOrgPolicy. לשם כך, צריך לציין את האובייקטrestoreDefaultכדי לאפשר לכל מאגרי Dataform בפרויקטים להתחבר למאגרי Git מרוחקים. המדיניות שמוגדרת כרגע לפרויקטים לא מושפעת מהגדרת ברירת המחדל.כדי לשלוט טוב יותר בגישה לבסיס הקוד של Dataform, אפשר להשתמש במדיניות הארגון יחד עם תפקידי IAM.
כל מאגרי Dataform בארגון או בפרויקט שבהם מדיניות הארגון מופעלת כפופים למדיניות הזו. אם זו בעיה, מומלץ להגדיר שירותים ומוצרים אחרים בפרויקט אחר שלא חלה עליו מדיניות הארגון, ולהשתמש ב-VPC משותף, אם צריך.
לפני שמגדירים את מדיניות
dataform.restrictGitRemotes, חשוב לוודא שכל העובדים בארגון מודעים למדיניות הארגונית ולאדמין שלה. באחריותכם או באחריות האדמין עם ההרשאות הנדרשות לנהל ולתחזק את המדיניות.
המאמרים הבאים
- מידע נוסף על מדיניות הארגון זמין במאמר מבוא לשירות של מדיניות הארגון.
- מידע נוסף על מגבלות שקשורות למדיניות הארגון זמין במאמר בנושא מגבלות שקשורות למדיניות הארגון.
- במאמר ניהול המשאבים Google Cloud מוסבר איך לנהל משאבים באמצעות Resource Manager. Google Cloud