משתמש הוא הבעלים של תיקייה ב'אחסון שלי'. יכול להיות שבתיקייה יש כמה משתמשים עם גישה לקבצים שונים. מודל הגישה המגביל הזה אומר שמשתמשים שונים יכולים לראות רשימות שונות של פריטים באותה תיקייה. משתמש שיש לו גישה לתיקיית ההורה 'האחסון שלי', אבל לא לפריט בתוך התיקייה הזו, מוגדר כבעל 'גישה מוגבלת'. נוצר מצב שבו קשה לדעת למי יש גישה בהיררכיה.
לעומת זאת, הבעלות על קבצים בתיקיות באחסון השיתופי היא של התיקיות עצמן. לתיקיות אחסון שיתופי יש מודל נרחב, כך שלכל המשתמשים יש את אותה רשימת פריטים באותה תיקייה.
הוספנו תיקיות עם גישה מוגבלת כדי לשכפל את מודל הגישה הרחב מתיקיות באחסון השיתופי לתיקיית 'האחסון שלי'. בעקבות השינוי הזה, תיקיות עם גישה מוגבלת הן היוצאות מן הכלל שמאפשרות להגביל את הגישה לתיקיית משנה ספציפית גם בתיקיית 'האחסון שלי' וגם באחסון השיתופי.
במדריך הזה מוסבר איך לנהל תיקיות עם גישה מוגבלת וגישה רחבה ב-Google Drive.
מידע על תיקיות עם גישה מוגבלת
תיקיות עם גישה מוגבלת מאפשרות להגביל את הגישה לתיקיות למשתמשים ספציפיים. רק משתמשים שמוסיפים ישירות להרשאות של התיקייה יכולים לפתוח אותה ולגשת לתוכן שלה. משתמשים עם גישה שעברה בירושה לתיקייה משותפת ב'אחסון שלי' או לתיקייה משותפת באחסון השיתופי (דרך גישה מתיקיית אב) יכולים לראות את התיקייה המוגבלת ב-Drive אבל לא לפתוח אותה. התכונה הזו משפרת את ההתאמה בין התנהגות השיתוף של פריטים בתיקיית 'האחסון שלי' ובתיקיות אחסון שיתופי, ומאפשרת לכם לארגן תיקיות עם תוכן רגיש לצד תוכן שמשותף עם יותר אנשים.
אפשר להשתמש בגישה מוגבלת גם לתיקיות בתיקיית 'האחסון שלי' וגם לתיקיות באחסון השיתופי. לבעלי התפקיד owner בתיקיית "האחסון שלי" ולבעלי התפקיד organizer בתיקיות באחסון השיתופי תמיד יש גישה לתיקיות עם גישה מוגבלת. כדי לשנות את רשימת המשתמשים בתיקייה, לא נדרשות הרשאות מיוחדות. תפקידים שיכולים לשתף תיקיות יכולים לעדכן את רשימות החברים. מידע נוסף על תפקידים והרשאות זמין במאמרים תפקידים והרשאות וסקירה כללית של תיקיות משותפות.
חשוב לזכור שתיקיות הן סוג של קובץ, אבל אי אפשר להגביל את הגישה לקבצים.
הגדרת גישה מוגבלת לתיקייה
משתמשים עם הרשאות גישה ישירות לתיקייה יכולים לגשת לתיקייה עם גישה מוגבלת, אבל רק בעלי התפקיד owner בתיקיית 'האחסון שלי' ובעלי התפקיד organizer בתיקיות באחסון השיתופי יכולים להפעיל או להשבית גישה מוגבלת.
בנוסף, אם למשתמש עם תפקיד writer בתיקיית 'האחסון שלי' מוגדר השדה הבוליאני writersCanShare במשאב files כ-true, הוא יכול גם להפעיל או להשבית את התכונה.
כדי להגביל את הגישה לתיקייה, מגדירים את השדה הבוליאני inheritedPermissionsDisabled במשאב files לערך true. כשtrue, רק לתפקיד owner, לתפקיד organizer ולמשתמשים עם הרשאות ישירות לתיקייה יש גישה אליה.
כדי להפעיל מחדש את ההרשאות שעברו בירושה, מגדירים את inheritedPermissionsDisabled לערך false.
איך בודקים את ההרשאה להגבלת הגישה לתיקייה
כדי לבדוק אם אפשר להגביל את הגישה לתיקייה, בודקים את הערכים הבוליאניים של השדות capabilities.canDisableInheritedPermissions ו-capabilities.canEnableInheritedPermissions במשאב files. ההגדרות האלה מאשרות אם יש לכם הרשאה להגביל את הגישה לתיקייה דרך השדה inheritedPermissionsDisabled.
מידע נוסף על capabilities זמין במאמר הסבר על היכולות של קבצים.
רשימת פריטים בתיקייה עם גישה מוגבלת
כדי לבדוק אם אפשר להציג את הילדים של תיקייה, משתמשים בשדה הבוליאני capabilities.canListChildren.
הערך שמוחזר הוא תמיד false אם הפריט הוא לא תיקייה או אם הוסרה הגישה של השולח לתוכן התיקייה על ידי הגדרת inheritedPermissionsDisabled ל-false.
אם הגישה שלכם לתוכן התיקייה הוסרה, עדיין תוכלו לגשת למטא-הנתונים של התיקייה באמצעות השיטות files.get() ו-files.list(). כדי לוודא שהגישה מוגבלת, בודקים את גוף התשובה כדי לראות אם הפריט הוא תיקייה עם סוג ה-MIME application/vnd.google-apps.folder והשדה capabilities.canListChildren מוגדר כ-false. אם מנסים להציג את רשימת הצאצאים של תיקייה כזו, התוצאה תמיד ריקה.
גישה למטא-נתונים של תיקייה עם גישה מוגבלת
תיקיות עם גישה מוגבלת מאפשרות לכם לראות את הנתונים של התיקייה גם אם אין לכם גישה לתוכן שלה.
כשמשתמשים במשאב permissions כדי לקבוע את הגישה של משתמש, גם תיקיות ב-'האחסון שלי' וגם תיקיות בתיקיות האחסון השיתופי שמעניקות גישה רק למטא-נתונים מכילות את הערכים הבאים בגוף התגובה: inheritedPermissionsDisabled=true ו-view=metadata. התפקיד תמיד מוגדר כ-reader. השדה view מתמלא רק עבור הרשאות ששייכות ל-view. מידע נוסף זמין במאמר בנושא תצוגות.
כל הערכים בשדה permissionDetails כוללים את השדה inherited עם הערך true, שמציין שההרשאה היא בירושה ושלא ניתנה גישה ישירה לתוכן התיקייה.
כדי להעניק גישה לתוכן ולמטא-נתונים של התיקייה, מגדירים את השדה inheritedPermissionsDisabled לערך false או מעדכנים את התפקיד לערך reader ומעלה.
לבסוף, אם הרשאה הוגבלה בהתחלה על ידי השבתת הירושה בתיקייה (inheritedPermissionsDisabled=true), ואז ההרשאה נוספה בחזרה ישירות לתיקייה, הערכים בגוף התגובה הופכים ל-inheritedPermissionsDisabled=true והשדה view לא מוגדר. אם התיקייה נמצאת באחסון שיתופי, ברשימה permissionDetails יש רשומה עם השדה inherited שמוגדר לערך false, כדי לציין שההרשאה לא הועברה בירושה. ההרשאה הזו מעניקה גישה לתוכן התיקייה ולמטא נתונים, כמו כל הרשאה אחרת.
מחיקת תיקיות עם גישה מוגבלת
אפשר למחוק תיקיות עם גישה מוגבלת באמצעות השיטה files.delete() במשאב files.
בתיקיית 'האחסון שלי', רק הבעלים של פריט מסוים יכול למחוק את היררכיית התיקיות שלו. אם משתמש מוחק היררכיה עם תיקיות שהגישה אליהן מוגבלת ומישהו אחר הוא הבעלים שלהן, התיקיות האלה עוברות לתיקיית "האחסון שלי" של הבעלים.
אם למשתמש יש תפקיד owner, כל ההיררכיה נמחקת.
בתיקיות באחסון השיתופי, בעלי תפקיד organizer יכולים למחוק היררכיות גם אם הן מכילות תיקיות עם גישה מוגבלת. אם משתמש עם הרשאה fileOrganizer מוחק היררכיה שמכילה תיקיות עם גישה מוגבלת, התוצאה תלויה בשאלה אם הוא נוסף מחדש כמשתמש עם הרשאה fileOrganizer בתיקיות עם הגישה המוגבלת. אם כן, כל ההיררכיה תימחק. אם לא, התיקיות עם הגישה המוגבלת עוברות לתיקיית הבסיס (root) של האחסון השיתופי.
מידע על גישה רחבה
הוספנו תיקיות עם גישה מוגבלת כדי להרחיב את מודל הגישה הנרחבת מהאחסון השיתופי לתיקיית 'האחסון שלי'. אחרי השקת מודל הגישה, גישה לתיקייה מסוימת תאפשר גישה לפחות לאותה רמה של כל מה שבהיררכיית התיקיות. התיקיות עם הגישה המוגבלת הן היוצאות מן הכלל, שמאפשרות להגביל את הגישה לתיקיית משנה ספציפית גם בתיקיית 'האחסון שלי' וגם באחסון השיתופי. זה גם אומר שאם הגישה לתיקייה לא מוגבלת, אי אפשר יותר להסיר גישה שהתקבלה בירושה מהתיקייה הראשית. אם תעשו זאת, Drive API יחזיר תגובת שגיאה. כדי להגדיר בקרת גישה מפורטת יותר בהיררכיה, אפשר להגדיר גישה מוגבלת לתיקייה.
התאמה לגישה רחבה
כדי להקל על מפתחים להתאים את עצמם לגישה רחבה, ביצענו כמה שיפורים ב-Google Drive API:
השדה
permissionDetails[]במשאבpermissionsמאוכלס עכשיו עבור פריטים בתיקיית 'האחסון שלי'. בעבר, השדות האלה לא היו מוגדרים או שהם שוכפלו מהשדהteamDrivePermissionDetailsבמקרים המתאימים. רק השדותpermissionTypeו-inheritedבתיקייה 'האחסון שלי' מאוכלסים.בשדה
permissionDetails[].inheritedמצוין אם ההרשאה עברה בירושה מהפריט ההורה. הוא מאפשר לכם לזהות אם תפקידים מסוימים (כמוreader) עוברים בירושה מההורה, ואם תפקיד ברמה גבוהה יותר (כמוwriter) ניתן ישירות לפריט.כשמציגים את ההרשאות של פריט, יכול להיות שבשדה
permissionDetails[]יופיעו כמה רשומות. אם יש הרשאה, תהיה רשומה אחת של ההרשאה ישירות לפריט עבור ההיקף הזה, ואז רשומות של ההרשאות שהתקבלו בירושה או של הרשאות החברים לפריט.מפתחים יכולים להפעיל את ההתנהגות של גישה רחבה ל-API ב'האחסון שלי' לפני שיתבצעו פעולות אכיפה חובה בעתיד. אפשר להגדיר את פרמטר הבקשה
enforceExpansiveAccessלערךtrueכדי ששינויים עתידיים בגישה הרחבה לא ישפיעו על האפליקציה.אם תפעילו את האפשרות הזו עכשיו, ה-API יפעל באופן זהה לפריטים בתיקיית 'האחסון שלי' כמו שהוא כבר פועל לפריטים באחסון השיתופי. לדוגמה, כל ניסיון להגביל את הגישה מתחת לתפקיד שעבר בירושה ייכשל כשמבצעים קריאה ל-
permissions.update(). באופן דומה, קריאה לשיטהpermissions.delete()נכשלת אם ההרשאה עוברת בירושה.
זיהוי ומניעה של גישה מוגבלת
יכול להיות שהאפליקציה שלכם יוצרת גישה מוגבלת (שבה למשתמש יש גישה לתיקיית האב 'האחסון שלי' אבל לא לקובץ בתוך התיקייה הזו) בתיקיות 'האחסון שלי' כשמשתמשים בשיטות permissions.update() או permissions.delete().
כשמשתמשים בשיטות האלה, אפשר לבדוק את השדות במשאב permissions כדי לראות איפה בקשה עלולה ליצור גישה מוגבלת, וכך להימנע משליחת בקשות כאלה. כדי לזהות את המצב הזה, משתמשים בשדה enforceExpansiveAccess
בבקשה.
בנוסף, אם האפליקציה כבר יצרה גישה מוגבלת לתיקיות, אפשר לבצע את הפעולות הבאות:
כדי להסיר את הגישה המוגבלת, עוברים בהיררכיית התיקיות. במקום זאת, צריך להגדיר גישה מוגבלת לתיקייה.
אם הפריט שאתם מנסים לבטל את השיתוף שלו הוא קובץ, אתם יכולים ליצור תיקיית ביניים, להגדיר בה גישה מוגבלת ולהעביר את הקובץ לתיקייה החדשה.
אם אתם לא רוצים להשתמש בתיקיות עם גישה מוגבלת אבל אתם צריכים להסיר גישה מסוימת, אתם יכולים להעביר את הקובץ לתיקייה פרטית (למשל, לתיקיית הבסיס של 'האחסון שלי'). אחר כך תוכלו ליצור קיצור דרך למיקום המקורי של הפריט כדי שהמשתמשים יוכלו להמשיך להשתמש בו.