בדף הזה מוסבר איך להגדיר מדיניות ניהול זהויות והרשאות גישה (IAM) בתיקיות מנוהלות, כדי לקבל בקרת גישה מפורטת לקבוצות ספציפיות של אובייקטים בתוך קטגוריה.
אם אתם מחפשים שיטות אחרות לבקרת גישה, תוכלו להיעזר במקורות המידע הבאים:
במאמר הגדרה וניהול של מדיניות IAM בקטגוריות מוסבר איך לקבוע את הגישה לקטגוריות שלמות ולאובייקטים שבתוכן.
דרך חלופית לניהול הגישה לאובייקטים ספציפיים בקטגוריות מופיעה במאמר רשימות של בקרת גישה.
מידע נוסף על בקרת הגישה למשאבים של Cloud Storage זמין במאמר סקירה כללית של בקרת הגישה.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות להגדרה ולניהול של כללי מדיניות IAM בתיקיות מנוהלות, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM 'אדמין לניהול תיקיות' (roles/storage.folderAdmin) בקטגוריה שמכילה את התיקיות המנוהלות.
התפקיד הזה מכיל את ההרשאות הבאות, שנדרשות להגדרה ולניהול של מדיניות IAM בתיקיות מנוהלות:
storage.managedFolders.getIamPolicystorage.managedFolders.setIamPolicy
אפשר לקבל את ההרשאות האלה גם באמצעות תפקידים בהתאמה אישית.
במאמר הגדרה וניהול של מדיניות IAM בקטגוריות מוסבר איך מקצים תפקידים לקטגוריות.
הגדרת מדיניות IAM בתיקייה מנוהלת
המסוף
- במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.
ברשימת הקטגוריות, לוחצים על שם הקטגוריה שמכילה את התיקייה המנוהלת שרוצים להגדיר לה מדיניות IAM.
בדף פרטי הקטגוריה, לוחצים על סמל האפשרויות הנוספות בחלונית סייר התיקיות לצד התיקייה המנוהלת שרוצים להגדיר לה מדיניות IAM.
אם רוצים לשלוט בגישה בתוך תיקייה או תיקייה מדומה, צריך לפעול לפי השלבים במאמר יצירת תיקייה מנוהלת כדי להפעיל ניהול בתיקייה או בתיקייה המדומה.
לוחצים על עריכת הגישה.
בחלונית Permissions for
MANAGED_FOLDER_NAME, לוחצים על Add principal .בשדה New principals, מזינים את חשבון המשתמש שרוצים להעניק לו גישה. מידע נוסף על חשבונות המשתמשים שאפשר לכלול מופיע במאמר מזהים של חשבונות משתמשים.
בקטע Assign roles, משתמשים בתפריט הנפתח Select a role כדי לציין את רמת הגישה שרוצים לתת לחשבון המשתמש.
לוחצים על Save.
שורת הפקודה
יוצרים קובץ JSON שמכיל את הפרטים הבאים:
{ "bindings":[ { "role": "IAM_ROLE", "members":[ "PRINCIPAL_IDENTIFIER" ] } ] }
כאשר:
IAM_ROLEהוא תפקיד ה-IAM שמקצים. לדוגמה,roles/storage.objectViewer.
PRINCIPAL_IDENTIFIERמזהה למי אתם מעניקים גישה לתיקייה המנוהלת. לדוגמה,user:jeffersonloveshiking@gmail.com. רשימת הפורמטים של מזהי חשבון המשתמש מופיעה במאמר מזהים של חשבונות משתמשים.
משתמשים בפקודה
gcloud storage managed-folders set-iam-policy:gcloud storage managed-folders set-iam-policy gs://BUCKET_NAME/MANAGED_FOLDER_NAME POLICY_FILE
כאשר:
BUCKET_NAMEהוא שם הקטגוריה שמכילה את התיקייה המנוהלת שרוצים להחיל עליה את מדיניות ה-IAM. לדוגמה,my-bucket.
MANAGED_FOLDER_NAMEהוא שם התיקייה המנוהלת שעליה רוצים להחיל את מדיניות ה-IAM. לדוגמה,my-managed-folder/.
POLICY_FILEהוא הנתיב לקובץ JSON שיצרתם בשלב 1.
ממשקי API בארכיטקטורת REST
JSON
התקנה והפעלה של ה-CLI של gcloud, שמאפשרות ליצור אסימון גישה לכותרת
Authorization.יוצרים קובץ JSON שמכיל את הפרטים הבאים:
{ "bindings":[ { "role": "IAM_ROLE", "members":[ "PRINCIPAL_IDENTIFIER" ] } ] }
כאשר:
IAM_ROLEהוא תפקיד ה-IAM שנותנים. לדוגמה:roles/storage.objectViewer.
PRINCIPAL_IDENTIFIERמזהה למי אתם מעניקים גישה לתיקייה המנוהלת. לדוגמה,user:jeffersonloveshiking@gmail.com. רשימת הפורמטים של מזהי חשבון המשתמש מופיעה במאמר מזהים של חשבונות משתמשים.
משתמשים ב-
cURLכדי לשלוח קריאה ל-API בפורמט JSON באמצעות בקשתPUT setIamPolicy:curl -X PUT --data-binary @POLICY_FILE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAME/iam"
כאשר:
POLICY_FILEהוא הנתיב לקובץ המדיניות בפורמט JSON שיצרתם בשלב הקודם.
BUCKET_NAMEהוא שם הקטגוריה שמכילה את התיקייה המנוהלת שעליה רוצים להחיל את מדיניות ה-IAM. לדוגמה,my-bucket.
MANAGED_FOLDER_NAMEהוא שם התיקייה המנוהלת שאליה אתם רוצים לתת גישה לחשבון המשתמש. לדוגמה,my-managed-folder/.
צפייה במדיניות ה-IAM של תיקייה מנוהלת
המסוף
- במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.
ברשימת הקטגוריות, לוחצים על שם הקטגוריה שמכילה את התיקייה המנוהלת שרוצים לראות את מדיניות ה-IAM שלה.
בדף Bucket details, לוחצים על סמל האפשרויות הנוספות בחלונית Folder browser, ליד התיקייה המנוהלת שרוצים לראות את מדיניות ה-IAM שלה.
לוחצים על עריכת הרשאות הגישה.
בחלונית Permissions for FOLDER_NAME מוצגות ההרשאות בתיקייה המנוהלת, כולל חשבון המשתמש, התפקיד, התפקידים שעברו בירושה ותנאי IAM.
שורת הפקודה
משתמשים בפקודה gcloud storage managed-folder get-iam-policy:
gcloud storage managed-folders get-iam-policy gs://BUCKET_NAME/MANAGED_FOLDER_NAME
כאשר:
BUCKET_NAMEהוא שם הקטגוריה שמכילה את התיקייה המנוהלת שאת מדיניות ה-IAM שלה רוצים לראות. לדוגמה,my-bucket.
MANAGED_FOLDER_NAMEהוא שם התיקייה המנוהלת שאת מדיניות ה-IAM שלה רוצים להציג. לדוגמה,my-managed-folder/.
ממשקי API בארכיטקטורת REST
JSON
להתקין ולהפעיל את ה-CLI של gcloud, כדי שתוכלו ליצור אסימון גישה לכותרת
Authorization.משתמשים ב-
cURLכדי לשלוח קריאה ל-API בפורמט JSON באמצעות בקשתGET getIamPolicy:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAME/iam"
כאשר:
BUCKET_NAMEהוא שם הקטגוריה שמכילה את התיקייה המנוהלת שרוצים לצפות במדיניות ה-IAM שלה. לדוגמה,my-bucket.
MANAGED_FOLDER_NAMEהוא שם התיקייה המנוהלת שרוצים לצפות במדיניות ה-IAM שלה. לדוגמה,my-managed-folder/.
הסרת חשבון משתמש ממדיניות של תיקייה מנוהלת
המסוף
- במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.
ברשימת הקטגוריות, לוחצים על שם הקטגוריה שמכילה את התיקייה המנוהלת שרוצים לראות את מדיניות ה-IAM שלה.
בדף Bucket details, לוחצים על סמל האפשרויות הנוספות בחלונית Folder browser, לצד התיקייה המנוהלת שממנה רוצים להסיר את החשבון הראשי.
לוחצים על עריכת הגישה.
בחלונית Permissions for
FOLDER_NAME, מזינים את שם הגורם המורשה בשדה Filter.לוחצים על סמל המחיקה כדי למחוק את חשבון המשתמש.
Cloud Storage מוחק את חשבון המשתמש מהתיקייה המנוהלת.
שורת הפקודה
משתמשים בפקודה gcloud storage managed-folder remove-iam-policy-binding:
gcloud storage managed-folders remove-iam-policy-binding gs://BUCKET_NAME/MANAGED_FOLDER_NAME --member=PRINCIPAL_IDENTIFIER --role=IAM_ROLE
כאשר:
BUCKET_NAMEהוא שם הקטגוריה שמכילה את התיקייה המנוהלת שאליה רוצים לבטל את הגישה. לדוגמה,my-bucket.
MANAGED_FOLDER_NAMEהוא שם התיקייה המנוהלת שרוצים להסיר את מדיניות ה-IAM שלה. לדוגמה,my-managed-folder/.
PRINCIPAL_IDENTIFIERמזהה למי אתם מבטלים את הגישה. לדוגמה,user:jeffersonloveshiking@gmail.com. רשימת הפורמטים של מזהי חשבון המשתמש מופיעה במאמר מזהים של חשבונות משתמשים.
IAM_ROLEהוא תפקיד ה-IAM שרוצים לבטל. לדוגמה,roles/storage.objectViewer.
ממשקי API בארכיטקטורת REST
JSON
להתקין ולהפעיל את ה-CLI של gcloud, כדי שתוכלו ליצור אסימון גישה לכותרת
Authorization.מחילים את המדיניות הקיימת על התיקייה המנוהלת. כדי לעשות את זה, משתמשים ב-
cURLכדי לשלוח קריאה ל-API בפורמט JSON באמצעות בקשתGET getIamPolicy:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAME/iam"
כאשר:
BUCKET_NAMEהוא שם הקטגוריה שמכילה את התיקייה המנוהלת שאליה רוצים לבטל את הגישה. לדוגמה,my-bucket.
MANAGED_FOLDER_NAMEהוא שם התיקייה המנוהלת שרוצים להסיר את מדיניות ה-IAM שלה. לדוגמה,my-managed-folder/.
יוצרים קובץ JSON שמכיל את המדיניות שאחזרתם בשלב הקודם.
עורכים את קובץ ה-JSON כדי להסיר מהמדיניות את חשבון המשתמש.
כדי לשלוח קריאה ל-API בפורמט JSON באמצעות בקשת
PUT setIamPolicy, משתמשים ב-cURL:curl -X PUT --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAME/iam"
כאשר:
JSON_FILE_NAMEהוא הנתיב לקובץ שיצרתם בשלב 3.
BUCKET_NAMEהוא שם הקטגוריה שמכילה את התיקייה המנוהלת שאליה רוצים לבטל את הגישה. לדוגמה,my-bucket.
MANAGED_FOLDER_NAMEהוא שם התיקייה המנוהלת שרוצים להסיר את מדיניות ה-IAM שלה. לדוגמה,my-managed-folder/.
שימוש בתנאי IAM בתיקיות מנוהלות
בקטעים הבאים מוסבר איך להוסיף ולהסיר תנאי IAM בתיקיות מנוהלות. כדי לצפות בתנאי ה-IAM של תיקיות מנוהלות, היכנסו למאמר צפייה במדיניות ה-IAM של תיקייה מנוהלת. למידע נוסף על השימוש בתנאי IAM עם Cloud Storage, קראו את המאמר תנאים.
אפשר לציין תיקיות מנוהלות כמשאב בתנאים של מדיניות ההרשאות ב-IAM, אבל אי אפשר לציין אותן כמשאב בתנאים של מדיניות הדחייה ב-IAM. תנאי דחייה מזהים רק פונקציות של תגי משאבים, ואי אפשר לצרף תגים לתיקיות מנוהלות.
לפני שמוסיפים תנאים לתיקיות מנוהלות, צריך להפעיל גישה אחידה ברמת הקטגוריה.
הגדרת תנאי חדש בתיקייה מנוהלת
שורת הפקודה
יוצרים קובץ JSON או YAML שמגדיר את התנאי, כולל:
titleהוא הכותרת של התנאי,expressionהוא הביטוי הלוגי מבוסס-המאפיינים שלו, ואופציונלי,descriptionהוא התיאור של התנאי.שימו לב שב-Cloud Storage יש תמיכה רק במאפיינים תאריך/שעה, סוג המשאב ושם המשאב של
expression.משתמשים בפקודה
gcloud storage managed-folders add-iam-policy-bindingעם הדגל--condition-from-file:
gcloud storage managed-folders add-iam-policy-binding gs://BUCKET_NAME/MANAGED_FOLDER_NAME --member=PRINCIPAL_IDENTIFIER --role=IAM_ROLE --condition-from-file=CONDITION_FILE
כאשר:
BUCKET_NAMEהוא שם הקטגוריה שמכילה את התיקייה המנוהלת שאליה אתם נותנים גישה לחשבון המשתמש. לדוגמה,my-bucket.
MANAGED_FOLDER_NAMEהוא שם התיקייה המנוהלת שאליה מעניקים גישה לחשבון המשתמש. לדוגמה,my-managed-folder/.
PRINCIPAL_IDENTIFIERמזהה על מי חל התנאי. לדוגמה,user:jeffersonloveshiking@gmail.com. רשימת הפורמטים של מזהי חשבון המשתמש מופיעה במאמר מזהים של חשבונות משתמשים.
IAM_ROLEהוא תפקיד ה-IAM שמעניקים לחשבון המשתמש. לדוגמה:roles/storage.objectViewer.
CONDITION_FILEהוא הקובץ שיצרתם בשלב הקודם.
לחלופין, אפשר לכלול את התנאי ישירות בפקודה עם הדגל --condition במקום הדגל --condition-from-file.
ממשקי API בארכיטקטורת REST
JSON
להתקין ולהפעיל את ה-CLI של gcloud, כדי שתוכלו ליצור אסימון גישה לכותרת
Authorization.משתמשים בבקשה
GET getIamPolicyכדי לשמור את מדיניות ה-IAM של התיקייה המנוהלת בקובץ JSON זמני:curl \ 'https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAMEiam' \ --header 'Authorization: Bearer $(gcloud auth print-access-token)' > tmp-policy.json
כאשר:
BUCKET_NAMEהוא שם הקטגוריה שמכילה את התיקייה המנוהלת שרוצים להגדיר לה תנאי IAM.
MANAGED_FOLDER_NAMEהוא שם התיקייה המנוהלת שרוצים להגדיר לה תנאי IAM.
כדי להוסיף תנאים חדשים לקישור במדיניות IAM, עורכים את הקובץ
tmp-policy.jsonבכלי לעריכת טקסט:{ "version": VERSION, "bindings": [ { "role": "IAM_ROLE", "members": [ "PRINCIPAL_IDENTIFIER" ], "condition": { "title": "TITLE", "description": "DESCRIPTION", "expression": "EXPRESSION" } } ], "etag": "ETAG" }כאשר:
VERSIONהיא הגרסה של מדיניות ה-IAM. לתיקיות מנוהלות עם תנאים ב-IAM הגרסה צריכה להיות 3.
IAM_ROLEהוא התפקיד שעליו חל התנאי. לדוגמה,roles/storage.objectViewer.
PRINCIPAL_IDENTIFIERמזהה על מי חל התנאי. לדוגמה,user:jeffersonloveshiking@gmail.com. רשימת הפורמטים של מזהי חשבון המשתמש מופיעה במאמר מזהים של חשבונות משתמשים.
TITLEהיא הכותרת של התנאי. לדוגמה,expires in 2019.
DESCRIPTIONהוא תיאור אופציונלי של התנאי. לדוגמה,Permission revoked on New Year's.
EXPRESSIONהוא ביטוי לוגי מבוסס-מאפיינים. לדוגמה,request.time < timestamp(\"2019-01-01T00:00:00Z\"). דוגמאות נוספות לביטויים מופיעות במאמרי העזרה של המאפיין 'תנאים'. ב-Cloud Storage יש תמיכה רק במאפיינים תאריך/שעה, סוג המשאב ושם המשאב.
אסור לבצע שינויים ב-
ETAG.משתמשים בבקשה
PUT setIamPolicyכדי להגדיר את מדיניות ה-IAM שהשתנתה בקטגוריה:curl -X PUT --data-binary @tmp-policy.json \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFoldersMANAGED_FOLDER_NAME/iam"
כאשר:
BUCKET_NAMEהוא שם הקטגוריה שמכילה את התיקייה המנוהלת שרוצים להגדיר לה תנאי IAM.
MANAGED_FOLDER_NAMEהוא שם התיקייה המנוהלת שרוצים להגדיר לה תנאי IAM.
הסרת תנאי מתיקייה מנוהלת
שורת הפקודה
משתמשים בפקודה
gcloud storage managed-folders get-iam-policyכדי לשמור את מדיניות ה-IAM של התיקייה המנוהלת בקובץ JSON זמני.gcloud storage managed-folders get-iam-policy gs://BUCKET_NAME/MANAGED_FOLDER_NAME > tmp-policy.json
עורכים את הקובץ
tmp-policy.jsonבכלי לעריכת טקסט כדי להסיר תנאים ממדיניות ה-IAM.משתמשים בפקודה
gcloud storage managed-folders set-iam-policyכדי להגדיר את מדיניות ה-IAM ששונתה בתיקייה המנוהלת.gcloud storage managed-folders set-iam-policy gs://BUCKET_NAME/MANAGED_FOLDER_NAME tmp-policy.json
ממשקי API בארכיטקטורת REST
JSON
להתקין ולהפעיל את ה-CLI של gcloud, כדי שתוכלו ליצור אסימון גישה לכותרת
Authorization.משתמשים בבקשה
GET getIamPolicyכדי לשמור את מדיניות ה-IAM של התיקייה המנוהלת בקובץ JSON זמני:curl \ 'https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAMEiam' \ --header 'Authorization: Bearer $(gcloud auth print-access-token)' > tmp-policy.json
כאשר:
BUCKET_NAMEהוא שם הקטגוריה שמכילה את התיקייה המנוהלת שרוצים לשנות את הגישה אליה. לדוגמה,my-bucket.
MANAGED_FOLDER_NAMEהוא שם התיקייה המנוהלת שאתם משנים את הגישה אליה. לדוגמה,my-managed-folder/.
עורכים את הקובץ
tmp-policy.jsonבכלי לעריכת טקסט כדי להסיר תנאים ממדיניות ה-IAM.משתמשים בבקשה
PUT setIamPolicyכדי להגדיר את מדיניות ה-IAM ששונתה בתיקייה המנוהלת:curl -X PUT --data-binary @tmp-policy.json \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAMEiam"
כאשר:
BUCKET_NAMEהוא שם הקטגוריה שמכילה את התיקייה המנוהלת שרוצים לשנות את הגישה אליה. לדוגמה,my-bucket.
MANAGED_FOLDER_NAMEהוא שם התיקייה המנוהלת שרוצים לשנות את הגישה אליה. לדוגמה,my-managed-folder/.
שימוש ב-IAM עם פרויקטים
מדריכים בנושא הקצאה וביטול של תפקידי IAM ברמת הפרויקט ומעלה מופיעים במאמר ניהול הגישה לפרויקטים, לתיקיות מנוהלות ולארגונים.
שיטות מומלצות
צריך להגדיר את התפקיד המינימלי הנדרש כדי לתת לחשבון המשתמש את רמת הגישה הנדרשת. לדוגמה, אם חבר צוות צריך רק לצפות בתיקיות המנוהלות בקטגוריה, נותנים לו את התפקיד "אדמין של אובייקטים באחסון" (roles/storage.objectAdmin) במקום את התפקיד "אדמין של תיקיות באחסון" (roles/storage.folderAdmin).
באופן דומה, אם חברת הצוות צריכה שליטה מלאה בתיקיות המנוהלות בקטגוריה, צריך להעניק לה את התפקיד Storage Folder Admin (roles/storage.folderAdmin) במקום התפקיד Storage Admin (roles/storage.admin).
המאמרים הבאים
במאמר פתרון בעיות מוסבר איך לפתור בעיות שקשורות לתפקידים ולהרשאות ב-IAM.