ניהול תיקיות עם גישה מוגבלת וגישה מלאה

משתמש הוא הבעלים של תיקייה ב'אחסון שלי'. יכול להיות שהתיקייה מכילה כמה משתמשים עם גישה לקבצים שונים. מודל הגישה המגביל הזה אומר שמשתמשים שונים יכולים לראות רשימות שונות של פריטים באותה תיקייה. משתמש שיש לו גישה לתיקיית האחסון שלי הראשית, אבל אין לו גישה לפריט בתוך התיקייה הזו, מוגדרת לו 'גישה מוגבלת'. נוצר מצב שבו קשה לדעת למי יש גישה בהיררכיה.

לעומת זאת, הבעלות על קבצים בתיקיות באחסון השיתופי היא של התיקייה באחסון השיתופי. לתיקיות אחסון שיתופי יש מודל נרחב, כך שלכל המשתמשים יש את אותה רשימת פריטים באותה תיקייה.

הוספנו תיקיות עם גישה מוגבלת כדי לשכפל את מודל הגישה הרחב מתיקיות באחסון השיתופי לתיקיית 'האחסון שלי'. בעקבות השינוי הזה, תיקיות עם גישה מוגבלת הן היוצאות מן הכלל שמאפשרות להגביל את הגישה לתיקיית משנה ספציפית גם בתיקיית 'האחסון שלי' וגם באחסון השיתופי.

במדריך הזה מוסבר איך לנהל תיקיות עם גישה מוגבלת וגישה רחבה ב-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:

  1. השדה permissionDetails[] במשאב permissions מאוכלס עכשיו עבור פריטים בתיקיית 'האחסון שלי'. בעבר, השדות האלה לא היו מוגדרים או שהם שוכפלו מהשדה teamDrivePermissionDetails במקרים המתאימים. רק השדות permissionType ו-inherited בתיקיית 'האחסון שלי' מאוכלסים.

    בשדה permissionDetails[].inherited מצוין אם ההרשאה עברה בירושה מהפריט ההורה. הוא מאפשר לכם לזהות אם תפקידים מסוימים (כמו reader) עוברים בירושה מההורה, ואם תפקיד ברמה גבוהה יותר (כמו writer) ניתן ישירות לפריט.

    כשמציגים את ההרשאות של פריט, יכול להיות שבשדה permissionDetails[] יופיעו כמה רשומות. אם יש הרשאה, תהיה רשומה אחת של ההרשאה ישירות לפריט עבור ההיקף הזה, ואז רשומות של ההרשאות שהתקבלו בירושה או של הרשאות החברים לפריט.

  2. מפתחים יכולים להפעיל את התנהגות הגישה הרחבה של API ב'האחסון שלי' לפני אכיפה מחייבת עתידית. אפשר להגדיר את פרמטר הבקשה enforceExpansiveAccess לערך true כדי ששינויים עתידיים בגישה הרחבה לא ישפיעו על האפליקציה.

    אם תפעילו את האפשרות הזו עכשיו, ה-API יפעל באופן זהה לפריטים בתיקיית 'האחסון שלי' כמו שהוא כבר פועל לפריטים באחסון השיתופי. לדוגמה, כל ניסיון להגביל את הגישה מתחת לתפקיד שהועבר ייכשל כשמבצעים קריאה ל-permissions.update(). באופן דומה, קריאה לשיטה permissions.delete() תיכשל אם ההרשאה עוברת בירושה.

זיהוי ומניעה של גישה מוגבלת

יכול להיות שהאפליקציה שלכם יוצרת גישה מוגבלת (שבה למשתמש יש גישה לתיקיית האב 'האחסון שלי' אבל לא לקובץ בתוך התיקייה הזו) בתיקיות 'האחסון שלי' כשמשתמשים בשיטות permissions.update() או permissions.delete().

כשמשתמשים בשיטות האלה, אפשר לבדוק את השדות במשאב permissions כדי לראות איפה בקשה עלולה ליצור גישה מוגבלת, וכך להימנע משליחת בקשות כאלה. כדי לזהות את המצב הזה, משתמשים בשדה enforceExpansiveAccess בבקשה.

בנוסף, אם האפליקציה כבר יצרה גישה מוגבלת לתיקיות, אפשר לבצע את הפעולות הבאות:

  1. צריך לעבור בהיררכיית התיקיות כדי להסיר את הגישה המוגבלת. במקום זאת, צריך להגדיר גישה מוגבלת לתיקייה.

  2. אם הפריט שאתם מנסים לבטל את השיתוף שלו הוא קובץ, אתם יכולים ליצור תיקיית ביניים, להגדיר בה גישה מוגבלת ולהעביר את הקובץ לתיקייה החדשה.

  3. אם אתם לא רוצים להשתמש בתיקיות עם גישה מוגבלת אבל אתם צריכים להסיר גישה מסוימת, אתם יכולים להעביר את הקובץ לתיקייה פרטית (למשל, לתיקיית הבסיס של 'האחסון שלי'). אחר כך תוכלו ליצור קיצור דרך למיקום המקורי של הפריט כדי שהמשתמשים יוכלו להמשיך להשתמש בו.