בדף הזה מוסבר איך להגדיר מדיניות ניהול זהויות והרשאות גישה (IAM) בתיקיות מנוהלות, כדי לקבל בקרת גישה מפורטת לקבוצות ספציפיות של אובייקטים בתוך קטגוריה.
אם אתם מחפשים שיטות אחרות לבקרת גישה, תוכלו להיעזר במקורות המידע הבאים:
במאמר הגדרה וניהול של מדיניות IAM בקטגוריות מוסבר איך לקבוע את הגישה לקטגוריות שלמות ולאובייקטים שבתוכן.
דרך חלופית לניהול הגישה לאובייקטים ספציפיים בקטגוריות מופיעה במאמר רשימות של בקרת גישה.
מידע נוסף על בקרת הגישה למשאבים של Cloud Storage זמין במאמר סקירה כללית של בקרת הגישה.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות להגדרה ולניהול של מדיניות IAM לתיקיות מנוהלות, צריך לבקש מהאדמין להקצות לכם את התפקיד "אדמין של תיקיות אחסון" (roles/storage.folderAdmin) ב-IAM בקטגוריה שמכילה את התיקיות המנוהלות.
התפקיד הזה מכיל את ההרשאות הבאות, שנדרשות כדי להגדיר ולנהל את מדיניות ה-IAM של תיקיות מנוהלות:
storage.managedFolders.getIamPolicystorage.managedFolders.setIamPolicy
אפשר לקבל את ההרשאות האלה גם באמצעות תפקידים בהתאמה אישית.
במאמר הגדרה וניהול של מדיניות IAM בקטגוריות מוסבר איך מקצים תפקידים לקטגוריות.
הגדרת מדיניות IAM בתיקייה מנוהלת
המסוף
- במסוף Cloud de Confiance , נכנסים לדף Buckets של Cloud Storage.
ברשימת הקטגוריות, לוחצים על שם הקטגוריה שמכילה את התיקייה המנוהלת שרוצים להגדיר לה מדיניות IAM.
בדף Bucket details, לוחצים על סמל האפשרויות הנוספות בחלונית Folder browser, ליד התיקייה המנוהלת שרוצים להגדיר לה מדיניות 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:example-service-account@example-project.s3ns.iam.gserviceaccount.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:example-service-account@example-project.s3ns.iam.gserviceaccount.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.s3nsapis.fr/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 של תיקייה מנוהלת
המסוף
- במסוף Cloud de Confiance , נכנסים לדף 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.s3nsapis.fr/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAME/iam"
כאשר:
BUCKET_NAMEהוא שם הקטגוריה שמכילה את התיקייה המנוהלת שאת מדיניות ה-IAM שלה רוצים לראות. לדוגמה,my-bucket.
MANAGED_FOLDER_NAMEהוא שם התיקייה המנוהלת שאת מדיניות ה-IAM שלה רוצים להציג. לדוגמה,my-managed-folder/.
הסרת חשבון משתמש ממדיניות של תיקייה מנוהלת
המסוף
- במסוף Cloud de Confiance , נכנסים לדף 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:example-service-account@example-project.s3ns.iam.gserviceaccount.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.s3nsapis.fr/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.s3nsapis.fr/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:example-service-account@example-project.s3ns.iam.gserviceaccount.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.s3nsapis.fr/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:example-service-account@example-project.s3ns.iam.gserviceaccount.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.s3nsapis.fr/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.s3nsapis.fr/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.s3nsapis.fr/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.