הדף הזה מסביר איך לשלוט בגישה לקטגוריות ולאובייקטים באמצעות רשימות של בקרת גישה (ACL). רשימות ACL הן מנגנון שאפשר להשתמש בו כדי להגדיר למי יש גישה לקטגוריות ולאובייקטים שלכם, ואיזו רמת גישה יש להם.
כדי לדעת האם כדאי להשתמש ברשימות ACL לשליטה בגישה למשאבים שלכם, קראו את הסקירה הכללית על ACL.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות ליצירה ולניהול של ACLs, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM 'אדמין לניהול אחסון' (roles/storage.admin) בקטגוריה שמכילה את האובייקטים שאתם רוצים ליצור ולנהל עבורם ACLs.
התפקיד המוגדר מראש הזה מכיל את ההרשאות שנדרשות ליצירה ולניהול של רשימות ACL. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
storage.buckets.getstorage.buckets.list- ההרשאה הזו נדרשת רק כדי להשתמש ב Google Cloud מסוף לביצוע המשימות שבדף הזה.
storage.buckets.setIamPolicystorage.buckets.updatestorage.objects.getstorage.objects.getIamPolicystorage.objects.setIamPolicystorage.objects.update
אפשר לקבל את ההרשאות האלה גם באמצעות תפקידים בהתאמה אישית.
במאמר הגדרה וניהול של מדיניות IAM בקטגוריות מוסבר איך מקצים תפקידים בקטגוריות.
הגדרת רשימות ACL או שינוי שלהן
המסוף
נכנסים לדף Cloud Storage browser במסוף Google Cloud .
כניסה לדף Cloud Storage browserברשימת הקטגוריות, לוחצים על שם הקטגוריה שמכילה את האובייקט שרוצים לשנות את רשימת ה-ACL שלו.
לוחצים על שם האובייקט שרוצים להגדיר או לשנות את רשימות ה-ACL שלו.
לוחצים על עריכת הגישה.
תיפתח תיבת דו-שיח של הרשאות עם רשימת ה-ACL הנוכחית של האובייקט.
לוחצים על + הוספת רשומה.
בוחרים את הסוג של Entity שיקבל את ההרשאה.
השדה Entity מציין את סוג הדבר שמקבל את ההרשאה (לדוגמה, משתמש או קבוצה). לרשימת הערכים שנתמכים בשדה Entity, עיינו בהיקפי בקרת גישה.
מזינים ערך בשדה Name.
השדה Name משמש לזיהוי של משתמש, קבוצה או ישות אחרת ספציפיים. לרשימת הערכים שנתמכים בשדה Name, עיינו בהיקפי בקרת גישה.
השדות Entity ו-Name מגדירים ביחד על מי חלה ההרשאה.
בוחרים ערך בשדה Access.
השדה Access מגדיר את ההרשאה שרוצים להגדיר באובייקט. לרשימת הערכים שנתמכים בשדה Access, עיינו בהרשאות של בקרת גישה.
לוחצים על Save.
במאמר פתרון בעיות מוסבר איך מקבלים מידע מפורט על שגיאות בנושא פעולות ב-Cloud Storage שנכשלו במסוף Google Cloud .
שורת הפקודה
כדי להוסיף, לשנות או להסיר הרשאת גישה ספציפית באובייקט, משתמשים בפקודה objects update עם הדגל הרלוונטי:
gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME FLAG
כאשר:
BUCKET_NAMEהוא שם הקטגוריה שמכילה את האובייקט שעליו חל השינוי. לדוגמה,example-travel-maps.
OBJECT_NAMEהוא שם האובייקט שעליו חל השינוי. לדוגמה,paris.jpg.
FLAGהוא אחד מהבאים:
--add-acl-grant, יחד עם ההרשאה שרוצים להוסיף או לשנות. לדוגמה,--add-acl-grant=entity=user-jeffersonloveshiking@gmail.com,role=READER.
--remove-acl-grant, יחד עם הישות שרוצים לבטל את הרשאת הגישה שלה. לדוגמה,--remove-acl-grant=user-jeffersonloveshiking@gmail.com.
כדי להחליף את כל רשימות ה-ACL של אובייקט:
מגדירים את רשימות ה-ACL בקובץ בפורמט JSON או YAML.
לדוגמה, רשימות ה-ACL הבאות מעניקות את ההרשאה
OWNERלאובייקטparis.jpgלבעלי הפרויקט867489160491ולמשתמשjeffersonloveshiking@gmail.com, וגם את ההרשאהREADERלאובייקטparis.jpgלחברים בקבוצהgs-announce:[ { "entity": "project-owners-867489160491", "role": "OWNER", "projectTeam": { "projectNumber": "867489160491", "team": "owners" }, }, { "entity": "user-jeffersonloveshiking@gmail.com", "email": "jeffersonloveshiking@gmail.com", "role": "OWNER" }, { "entity": "group-gs-announce@googlegroups.com", "email": "gs-announce@googlegroups.com", "role": "READER" } ]משתמשים בפקודה
objects updateעם הדגל--acl-file:gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME --acl-file=FILE_LOCATION
כאשר:
BUCKET_NAMEהוא שם הקטגוריה שמכילה את האובייקט שעליו חלות רשימות ה-ACL. לדוגמה,example-travel-maps.
OBJECT_NAMEהוא שם האובייקט שעליו חלות רשימות ה-ACL. לדוגמה,paris.jpg.
FILE_LOCATIONהוא הנתיב המקומי לקובץ שמכיל את רשימות ה-ACL שהגדרתם. לדוגמה,Desktop/acls.json.
ספריות לקוח
C++
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage C++ API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
הדוגמה הבאה מוסיפה ACL לאובייקט:
הדוגמה הבאה מסירה ACL מאובייקט:
C#
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage C# API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
הדוגמה הבאה מוסיפה ACL לאובייקט:
הדוגמה הבאה מסירה ACL מאובייקט:
Go
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage Go API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
הדוגמה הבאה מוסיפה ACL לאובייקט:
הדוגמה הבאה מסירה ACL מאובייקט:
Java
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage Java API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
הדוגמה הבאה מוסיפה ACL לאובייקט:
הדוגמה הבאה מסירה ACL מאובייקט:
Node.js
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage Node.js API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
הדוגמה הבאה מוסיפה ACL לאובייקט:
הדוגמה הבאה מסירה ACL מאובייקט:
PHP
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage PHP API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
הדוגמה הבאה מוסיפה ACL לאובייקט:
הדוגמה הבאה מסירה ACL מאובייקט:
Python
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage Python API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
הדוגמה הבאה מוסיפה ACL לאובייקט:
הדוגמה הבאה מסירה ACL מאובייקט:
Ruby
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage Ruby API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
הדוגמה הבאה מוסיפה ACL לאובייקט:
הדוגמה הבאה מסירה ACL מאובייקט:
ממשקי API ל-REST
API בפורמט JSON
כשיוצרים אובייקט, אפשר לציין את המאפיין (property) acl[] בגוף הבקשה, או את פרמטר השאילתה predefinedAcl בבקשת insert. באובייקט קיים, אתם צריכים לציין את המאפיין acl[] או את פרמטר השאילתה predefinedAcl בבקשת patch או בבקשת update.
להגדרת מאפיין ACL של האובייקט, עיינו במידע על המשאב ObjectAccessControls.
מגדירים את רשימות ה-ACL בקובץ JSON.
לדוגמה, אם רשימת ה-ACL מעניקה לבעלי הפרויקט
867489160491ולמשתמשjeffersonloveshiking@gmail.comהרשאתOWNER, יחד עם הענקת הרשאתREADERלחברים בקבוצתgs-announce, יכול להיות שיהיה לכם קובץ בשםacls.jsonעם התוכן הבא:{ "acl": [ { "entity": "project-owners-867489160491", "role": "OWNER", "projectTeam": { "projectNumber": "867489160491", "team": "owners" } }, { "entity": "user-jeffersonloveshiking@gmail.com", "role": "OWNER", "email": "jeffersonloveshiking@gmail.com" }, { "entity": "group-gs-announce@googlegroups.com", "role": "READER", "email": "gs-announce@googlegroups.com" } ] }שולחים בקשת patch באמצעות קובץ ה-JSON ומציינים את האובייקט שבו צריך להגדיר את רשימות ה-ACL.
לדוגמה, פקודת curl הבאה מחילה מטען ייעודי (payload) של JSON מהמסמך acls.json על אובייקט בשם paris.jpg בקטגוריה example-travel-maps:
curl -X PATCH --data @acls.json -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://storage.googleapis.com/storage/v1/b/example-travel-maps/o/paris.jpg
API בפורמט XML
ב-API בפורמט XML עובדים עם רשימות ACL בפורמט XML. כדי לשנות רשימות ACL של קטגוריות ואובייקטים, אתם צריכים לצרף מסמך XML לגוף הבקשות. כאשר מקבלים רשימות ACL של קטגוריות ואובייקטים, מוחזר מסמך XML. מסמך ה-XML מכיל את רשומות ה-ACL של הקטגוריה הבודדת או של האובייקט הבודד.
אחרי שיוצרים קטגוריה באמצעות בקשה של קטגוריית
PUT, משתמשים בבקשה שנייה של קטגוריית PUT עם הפרמטר?aclכדי לשנות את ה-ACL של הקטגוריה.אחרי שמעלים אובייקט באמצעות בקשה של אובייקט
PUT, משנים את ה-ACL על ידי בקשת PUT נוספת באמצעות הפרמטר?aclאו כותרת הבקשהx-googl-acl.
לדוגמה, פקודת curl הבאה מחילה מטען ייעודי (payload) של XML מהמסמך acls.xml על אובייקט בשם paris.jpg בקטגוריה example-travel-maps:
curl -X PUT --data-binary @acls.xml \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://storage.googleapis.com/example-travel-maps/paris.jpg?aclבמסמך ה-XML, אתם צריכים להשתמש בתחביר ACL הבא:
| רכיב | תיאור |
|---|---|
AccessControlList |
קונטיינר של הרכיבים Entries ו-Owner. |
Owner |
קונטיינר של הרכיבים DisplayName ו-ID. הרכיב הזה לא נדרש לאובייקטים כי אובייקט תמיד נמצא בבעלות המשתמש שהעלה אותו. הרכיב הזה נמצא בשימוש כשמשתמשים בתחביר ACL של Amazon S3 בתרחיש העברה. Amazon Simple Storage Service ו-Amazon S3 הם סימנים מסחריים של Amazon.com, Inc. או של השותפים העצמאיים שלה בארצות הברית או במדינות אחרות. |
ID |
מזהה Cloud Storage של בעלי הקטגוריה. |
DisplayName |
לא מיושמת. הערך הוא תמיד מחרוזת ריקה. |
Entries |
קונטיינר של אפס רכיבי Entry או יותר. |
Entry |
קונטיינר של הרכיבים Scope ו-Permission. Entry יכול להכיל רק רכיב Scope אחד ורכיב Permission אחד. |
Scope |
קונטיינר של אחד מהרכיבים ID, EmailAddress או Domain שמגדיר את ההיקף של רשימת ה-ACL. לרכיב הזה חייב להיות מאפיין type שמכיל אחד מהערכים הבאים: UserByID, UserByEmail, GroupByID, GroupByEmail, GroupByDomain, AllUsers או AllAuthenticatedUsers. |
ID |
מזהה של מקבל ההרשאה כשרשומת ההרשאה מצוינת לפי המזהה. |
EmailAddress |
מזהה האימייל של מקבל ההרשאה כשרשומת ההרשאה מצוינת לפי האימייל. |
Domain |
מזהה הדומיין של מקבל ההרשאה כשרשומת ההרשאה מצוינת לפי הדומיין. |
Name |
רכיב אופציונלי שאפשר לציין או שאפשר להוסיף באופן אוטומטי אם ההיקף הוא UserByEmail או GroupByEmail. |
Permission |
ההרשאה שהוענקה: READ, WRITE או FULL_CONTROL. |
בעבודה עם רשימות ACL באמצעות ממשק ה-API בפורמט XML:
- אפשר להשתמש רק בפורמט ה-XML שמתואר למעלה.
אי אפשר להגדיר היקפים כפולים.
ב-XML של רשימת ה-ACL יכולות להיות רשומות רבות, אבל לא יכולות להיות רשומות עם היקפים כפולים. לדוגמה, אי אפשר לכלול שתי רשומות עם אותו רכיב היקף של
jane@example.com.
הדוגמה הבאה מציגה רשומות ACL שונות של קטגוריה:
<?xml version="1.0" encoding="UTF-8"?>
<AccessControlList>
<Owner>
<ID>00b4903a9721...</ID>
</Owner>
<Entries>
<Entry>
<Scope type="GroupById">
<ID>00b4903a9722...</ID>
</Scope>
<Permission>FULL_CONTROL</Permission>
</Entry>
<Entry>
<Scope type="GroupByDomain">
<Domain>example.com</Domain>
</Scope>
<Permission>READ</Permission>
</Entry>
<Entry>
<Scope type="GroupByEmail">
<EmailAddress>gs-announce@googlegroups.com</EmailAddress>
</Scope>
<Permission>READ</Permission>
</Entry>
<Entry>
<Scope type="UserByEmail">
<EmailAddress>jeffersonloveshiking@gmail.com</EmailAddress>
<Name>Jefferson</Name>
</Scope>
<Permission>FULL_CONTROL</Permission>
</Entry>
<Entry>
<Scope type="AllUsers"/>
<Permission>READ</Permission>
</Entry>
<Entry>
<Scope type="AllAuthenticatedUsers"/>
<Permission>READ</Permission>
</Entry>
</Entries>
</AccessControlList>
הגדרת רכיב השם ב-XML של ACL
כשמאחזרים ACL מקטגוריה או מאובייקט, יכול להיות שיצורף רכיב <Name> נוסף לחלק מהרשומות. לדוגמה, יכול להיות שתראו רשומה שנראית כך:
<Entry>
<Scope type="UserByEmail">
<EmailAddress>jeffersonloveshiking@gmail.com</EmailAddress>
<Name>Jefferson</Name>
</Scope>
<Permission>FULL_CONTROL</Permission>
</Entry>
רכיבי <Name> האופציונליים האלה מאוכלסים בשתי נסיבות:
כאשר רשימות ה-ACL של הקטגוריה או האובייקט כוללות את
<Name>כרכיב.כשמגדירים רשימות ACL, אפשר לכלול את הרכיב
<Name>עם רשומות ה-ACL. ברכיב<Name>אפשר לציין כל ערך. הערכים האלה יישמרו ב-Cloud Storage עד שתסירו או תחליפו את ה-ACL. כדאי להשתמש בשיטה הזו אם אתם משתמשים במזהים שלא פשוטים לזיהוי.כשההיקף של
UserByEmailאוGroupByEmailמכיל פרופיל Google ציבורי.אם אתם משתמשים באחד מההיקפים האלה בלי לספק רכיב
<Name>, Cloud Storage בודק אם למשתמש או לקבוצה ב-Google שמשויכים לכתובת האימייל יש פרופיל Google ציבורי עם שם ציבורי. במקרה כזה, מערכת Cloud Storage מאכלסת את הרכיב<Name>באופן אוטומטי עם השם הציבורי.
החלת רשימת ACL מוגדרת מראש
במקום לציין את כל רשימת ה-ACL באמצעות כל רשומה בנפרד כפי שמוצג למעלה, תוכלו להשתמש ברשימת ACL מוגדרת מראש, שתחיל באופן אוטומטי מספר רשומות שהותאמו לתרחיש ספציפי. תוכלו להשתמש ב-Google Cloud CLI, ב-API בפורמט JSON או ב-API בפורמט XML כדי להחיל רשימת ACL מוגדרת מראש על קטגוריה או על אובייקט.
על אובייקטים חדשים
כדי להחיל רשימת ACL מוגדרת מראש על אובייקט במהלך העלאת האובייקט:
המסוף
אי אפשר להחיל רשימת ACL מוגדרת מראש באמצעות מסוף Google Cloud . במקום זאת, אתם צריכים להשתמש ב-gcloud storage.
שורת הפקודה
משתמשים בפקודה gcloud storage cp עם הדגל --predefined-acl:
gcloud storage cp OBJECT gs://BUCKET_NAME --predefined-acl=PREDEFINED_ACL
לדוגמה, כדי להחיל את רשימת ה-ACL bucketOwnerRead שהוגדרה מראש כשמעלים אובייקט paris.jpg לקטגוריה example-travel-maps:
gcloud storage cp paris.jpg gs://example-travel-maps --predefined-acl=bucketOwnerRead
ממשקי API בארכיטקטורת REST
API בפורמט JSON
משתמשים בפרמטר predefinedAcl של מחרוזת השאילתה בבקשת insert כדי להחיל את רשימת ה-ACL שהוגדרה מראש.
לדוגמה, כדי להחיל את רשימת ה-ACL bucketOwnerRead שהוגדרה מראש כשמעלים אובייקט paris.jpg לקטגוריה example-travel-maps:
curl -X POST --data-binary @paris.jpg -H "Content-Type: image/jpeg" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://storage.googleapis.com/upload/storage/v1/b/example-travel-maps/o?name=paris.jpg&predefinedAcl=bucketOwnerRead"
API בפורמט XML
כדי להחיל את רשימת ה-ACL שהוגדרה מראש, משתמשים בכותרת x-goog-acl בבקשת האובייקט Put.
לדוגמה, כדי להחיל את רשימת ה-ACL bucket-owner-read שהוגדרה מראש כשמעלים אובייקט paris.jpg לקטגוריה example-travel-maps:
curl -X PUT --upload-file paris.jpg -H "x-goog-acl: bucket-owner-read" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://storage.googleapis.com/example-travel-maps/paris.jpg
על קטגוריות קיימות או אובייקטים קיימים
אפשר להחיל רשימת ACL מוגדרת מראש גם על קטגוריה או אובייקט קיימים. זה שימושי אם רוצים לעבור מרשימת ACL מוגדרת מראש אחת לאחרת, או לעדכן רשימות ACL מותאמות אישית לרשימת ACL מוגדרת מראש.
המסוף
אי אפשר להחיל רשימת ACL מוגדרת מראש באמצעות מסוף Google Cloud . במקום זאת, אתם צריכים להשתמש ב-gcloud storage.
שורת הפקודה
משתמשים בפקודה objects update עם הדגל --predefined-acl:
gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME --predefined-acl=PREDEFINED_ACL_NAME
לדוגמה, כדי להחיל את רשימת ה-ACL private שהוגדרה מראש על האובייקט paris.jpg בקטגוריה example-travel-maps:
gcloud storage objects update gs://example-travel-maps/paris.jpg --predefined-acl=private
ממשקי API בארכיטקטורת REST
API בפורמט JSON
כדי להחיל את רשימת ה-ACL המוגדרת מראש משתמשים בפרמטר predefinedAcl של מחרוזת השאילתה ומציינים נכס acl ריק בבקשת patch.
לדוגמה, כדי להחיל את רשימת ה-ACL private שהוגדרה מראש על האובייקט paris.jpg בקטגוריה example-travel-maps:
curl -X PATCH --data '{"acl": []}' -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://storage.googleapis.com/storage/v1/b/example-travel-maps/o/paris.jpg?predefinedAcl=private
API בפורמט XML
משתמשים בכותרת x-goog-acl עם הפרמטר של מחרוזת השאילתה acl בבקשת Put Object, אבל לא כוללים מסמך XML בבקשה.
לדוגמה, כדי להחיל את רשימת ה-ACL private שהוגדרה מראש על האובייקט paris.jpg בקטגוריה example-travel-maps:
curl -X PUT -H "Content-Length: 0" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-acl: private" \
https://storage.googleapis.com/example-travel-maps/paris.jpg?acl
הגדרת רשימות ACL שמשמשות כברירת מחדל של אובייקטים
כדי להימנע מלהגדיר רשימות ACL בכל פעם שיוצרים אובייקט חדש, אפשר להגדיר רשימת ACL שמשמשת כברירת מחדל של אובייקטים בקטגוריה מסוימת. לאחר מכן, בכל פעם שיתווסף לקטגוריה אובייקט חדש ללא רשימת ACL מפורשת, תחול עליו ברירת המחדל. לדוגמה, יכול להיות שתרצו לציין שרק לקבוצת משתמשים מסוימת תהיה גישה לרוב האובייקטים בקטגוריה מסוימת. אפשר לשנות את רשימת ה-ACL שמשמשת כברירת המחדל של אובייקטים, ואז להוסיף אובייקטים לקטגוריה. רשימת ה-ACL שמשמשת כברירת המחדל של אובייקטים מוחלת באופן אוטומטי על האובייקטים שהוספתם. עם זאת, אפשר לתת לאובייקטים מסוימים רשימות ACL שונות, ובמקרה כזה לא תחול עליהם ברירת המחדל.
כדי לצפות ברשימת ה-ACL שמשמשת כברירת המחדל של אובייקטים בקטגוריה מסוימת ולשנות אותה:
המסוף
אי אפשר להגדיר רשימות ACL שמשמשות כברירת מחדל של אובייקטים באמצעות מסוף Google Cloud . במקום זאת, אתם צריכים להשתמש ב-gcloud storage.
שורת הפקודה
כדי לאחזר את רשימת ה-ACL שמשמשת כברירת המחדל של האובייקטים בקטגוריה, משתמשים בפקודה
buckets describeעם הדגל--format:gcloud storage buckets describe gs://BUCKET_NAME --format="default(default_acl)"
כאשר
BUCKET_NAMEהוא שם הקטגוריה שרוצים לצפות ברשימת ה-ACL שמשמשת כברירת המחדל של האובייקטים שלה. לדוגמה,my-bucket.כדי לשנות את רשימת ה-ACL שמשמשת כברירת המחדל של האובייקטים בקטגוריה, משתמשים בפקודה
buckets updateעם הדגל הרצוי:gcloud storage buckets update gs://BUCKET_NAME FLAG
כאשר:
BUCKET_NAMEהוא שם הקטגוריה שרוצים לשנות את רשימת ה-ACL שמשמשת כברירת המחדל של האובייקטים שלה. לדוגמה,my-bucket.
FLAGהוא אחד מהבאים:
--add-default-object-acl-grantוההרשאה שרוצים להוסיף לכל רשימת ה-ACL שמשמשת כברירת המחדל של האובייקטים בקטגוריה.
--default-object-acl-fileוהנתיב לקובץ מקומי שמגדיר רשימת ACL שמשמשת כברירת מחדל של אובייקטים בקטגוריה.
--predefined-default-object-aclוהשם של רשימת ACL מוגדרת מראש של אובייקטים, שתחליף את רשימת ה-ACL שמשמשת כברירת המחדל של האובייקטים בקטגוריה.
--remove-default-object-acl-grantוהישות שרוצים להסיר מכל רשימת ה-ACL שמשמשת כברירת המחדל של האובייקטים בקטגוריה.
ספריות לקוח
C++
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage C++ API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
הדוגמה הבאה מוסיפה לקטגוריה רשימת ACL שמשמשת כברירת מחדל של אובייקטים:
הדוגמה הבאה מוחקת מקטגוריה רשימת ACL שמשמשת כברירת מחדל של אובייקטים:
C#
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage C# API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
הדוגמה הבאה מדפיסה את רשימת ה-ACL שמשמשת כברירת המחדל של האובייקטים בקטגוריה:
הדוגמה הבאה מוסיפה לקטגוריה רשימת ACL שמשמשת כברירת מחדל של אובייקטים:
הדוגמה הבאה מוחקת מקטגוריה רשימת ACL שמשמשת כברירת מחדל של אובייקטים:
Go
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage Go API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
הדוגמה הבאה מוסיפה לקטגוריה רשימת ACL שמשמשת כברירת מחדל של אובייקטים:
הדוגמה הבאה מוחקת מקטגוריה רשימת ACL שמשמשת כברירת מחדל של אובייקטים:
Java
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage Java API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
הדוגמה הבאה מוסיפה לקטגוריה רשימת ACL שמשמשת כברירת מחדל של אובייקטים:
הדוגמה הבאה מוחקת מקטגוריה רשימת ACL שמשמשת כברירת מחדל של אובייקטים:
Node.js
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage Node.js API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
הדוגמה הבאה מוסיפה לקטגוריה רשימת ACL שמשמשת כברירת מחדל של אובייקטים:
הדוגמה הבאה מוחקת מקטגוריה רשימת ACL שמשמשת כברירת מחדל של אובייקטים:
PHP
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage PHP API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
הדוגמה הבאה מוסיפה לקטגוריה רשימת ACL שמשמשת כברירת מחדל של אובייקטים:
הדוגמה הבאה מוחקת מקטגוריה רשימת ACL שמשמשת כברירת מחדל של אובייקטים:
Python
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage Python API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
הדוגמה הבאה מוסיפה לקטגוריה רשימת ACL שמשמשת כברירת מחדל של אובייקטים:
הדוגמה הבאה מוחקת מקטגוריה רשימת ACL שמשמשת כברירת מחדל של אובייקטים:
Ruby
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage Ruby API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
הדוגמה הבאה מוסיפה לקטגוריה רשימת ACL שמשמשת כברירת מחדל של אובייקטים:
הדוגמה הבאה מוחקת מקטגוריה רשימת ACL שמשמשת כברירת מחדל של אובייקטים:
ממשקי API ל-REST
API בפורמט JSON
מאחזרים את רשימת ה-ACL שמשמשת כברירת המחדל של האובייקטים באמצעות בקשת GET. לדוגמה:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?projection=fullמשתמשים בבקשת patch כדי להחליף את רשימת ה-ACL שמשמשת כברירת המחדל של האובייקטים. לדוגמה, הבקשה הבאה מחליפה את רשימת ה-ACL שמשמשת כברירת המחדל של האובייקטים ברשימת ה-ACL שצוינה ב-
defacls.jsonבקטגוריהexample-travel-maps:curl -X PATCH --data @defacls.json -H "Content-Type: application/json" -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/storage/v1/b/example-travel-mapsדוגמה של
defacls.json:{ "defaultObjectAcl": [ { "email": "jeffersonloveshiking@gmail.com", "entity": "user-jeffersonloveshiking@gmail.com", "role": "READER" } ] }
API בפורמט XML
מאחזרים את רשימת ה-ACL שמשמשת כברירת המחדל של האובייקטים באמצעות בקשת
GETבהיקף של הקטגוריה, והפרמטר?defaultObjectAcl. לדוגמה:curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/BUCKET_NAME?defaultObjectAclמשתמשים בבקשת
PUTבהיקף של הקטגוריה באמצעות הפרמטר?defaultObjectAcl, כדי להחליף את רשימת ה-ACL שמשמשת כברירת המחדל של האובייקטים ב-ACL שצוין ב-acls.xml. לדוגמה:curl -X PUT --data-binary @acls.xml -H "Authorization: Bearer $(gcloud auth print-access-token)" \ http://storage.googleapis.com/BUCKET_NAME?defaultObjectAclדוגמה של
acls.xml:<AccessControlList> <Entries> <Entry> <Permission>FULL_CONTROL</Permission> <Scope type="UserByEmail"> <EmailAddress>jeffersonloveshiking@gmail.com</EmailAddress> </Scope> </Entry> </Entries> </AccessControlList>
התחביר של רשימות ACL מתואר בהגדרה של רשימות ACL. אפשר גם לציין רשימת ACL מוגדרת מראש בתור רשימת ה-ACL שמשמשת כברירת המחדל של האובייקטים.
כדי להגדיר שרשימת ה-ACL שמשמשת כברירת המחדל של האובייקטים בקטגוריה תהיה רשימת ACL מוגדרת מראש:
המסוף
אי אפשר להגדיר רשימות ACL שמשמשות כברירת מחדל של אובייקטים באמצעות מסוף Google Cloud . במקום זאת, אתם צריכים להשתמש ב-gcloud storage.
שורת הפקודה
משתמשים בפקודה buckets update עם הדגל --predefined-default-object-acl:
gcloud storage buckets update gs://BUCKET_NAME --predefined-default-object-acl=PREDEFINED_ACL
כאשר:
BUCKET_NAMEהוא שם הקטגוריה שרוצים לשנות את רשימת ה-ACL שמשמשת כברירת המחדל של האובייקטים שלה. לדוגמה,my-bucket.
PREDEFINED_ACLהוא השם של רשימת ACL מוגדרת מראש ותקינה. לדוגמה,projectPrivate.
ממשקי API ל-REST
API בפורמט JSON
משתמשים בבקשת PUT ובפרמטר predefinedAcl.
לדוגמה:
curl -X PUT -H "Content-Length: 0" -H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?predefinedAcl=private
API בפורמט XML
משתמשים בבקשה PUT בהיקף של הקטגוריה באמצעות הפרמטר ?defaultObjectAcl והכותרת x-goog-acl.
לדוגמה:
curl -X PUT -H "x-goog-acl: project-private" -H "Content-Length: 0" -H "Authorization: Bearer $(gcloud auth print-access-token)" \
http://storage.googleapis.com/BUCKET_NAME?defaultObjectAcl
רשימות ACL שמשמשות כברירת מחדל של אובייקטים בקטגוריות חדשות שנוצרו:
בדוגמאות הבאות מוצגות רשימות ה-ACL שמשמשות כברירת המחדל של אובייקטים, שמוחלות באופן אוטומטי על קטגוריות חדשות שנוצרות כשלא מציינים רשימות ACL משלכם שמשמשות כברירת המחדל של אובייקטים כחלק מהבקשה. כדי לראות אם רשימות ה-ACL שמשמשות כברירת המחדל של האובייקטים בקטגוריה שלכם השתנו, אתם צריכים להשוות את רשימות ה-ACL הנוכחיות שמשמשות כברירת המחדל של האובייקטים בקטגוריה שלכם לדוגמאות שבהמשך.
המסוף
אי אפשר לעבוד עם רשימות ה-ACL שמשמשות כברירת המחדל של האובייקטים באמצעות מסוף Google Cloud .
במקום זאת, אתם צריכים להשתמש ב-gcloud storage.
שורת הפקודה
בדוגמה הבאה מזהה הפרויקט הוא '123412341234'. מזהה הפרויקט שלכם יהיה שונה.
defaultObjectAcl:
– entity: project-owners-123412341234
etag: CAE=
kind: storage#objectAccessControl
projectTeam:
projectNumber: '123412341234'
team: owners
role: OWNER
– entity: project-editors-123412341234
etag: CAE=
kind: storage#objectAccessControl
projectTeam:
projectNumber: '123412341234'
team: editors
role: OWNER
– entity: project-viewers-123412341234
etag: CAE=
kind: storage#objectAccessControl
projectTeam:
projectNumber: '123412341234'
team: viewers
role: READER
ממשקי API בארכיטקטורת REST
API בפורמט JSON
בדוגמה הבאה מזהה הפרויקט הוא '123412341234'. מזהה הפרויקט שלכם יהיה שונה.
"defaultObjectAcl": [
{
"kind": "storage#objectAccessControl",
"entity": "project-owners-123412341234",
"role": "OWNER",
"projectTeam": {
"projectNumber": "123412341234",
"team": "owners"
}
},
{
"kind": "storage#objectAccessControl",
"entity": "project-editors-123412341234",
"role": "OWNER",
"projectTeam": {
"projectNumber": "123412341234",
"team": "editors"
}
},
{
"kind": "storage#objectAccessControl",
"entity": "project-viewers-123412341234",
"role": "READER",
"projectTeam": {
"projectNumber": "123412341234",
"team": "viewers"
}
}
]
API בפורמט XML
בדוגמה הבאה, המזהים של תפקידי הפרויקטים מתחילים ב-'00b4903a97...'. מזהי הפרויקטים שלכם יהיו שונים.
<?xml version='1.0' encoding='UTF-8'?>
<AccessControlList>
<Entries>
<Entry>
<Scope type='GroupById'>
<ID>00b4903a9721...</ID>
</Scope>
<Permission>FULL_CONTROL</Permission>
</Entry>
<Entry>
<Scope type='GroupById'>
<ID>00b4903a9722...</ID>
</Scope>
<Permission>FULL_CONTROL</Permission>
</Entry>
<Entry>
<Scope type='GroupById'>
<ID>00b4903a9723...</ID>
</Scope>
<Permission>READ</Permission>
</Entry>
</Entries>
</AccessControlList>
שימו לב שרשימת ה-ACL שמשמשת כברירת המחדל של האובייקטים בקטגוריה חדשה שנוצרה זהה לרשימת ה-ACL projectPrivate שהוגדרה מראש.
אחזור רשימות ACL
כדי לאחזר את רשימת ה-ACL של משאב קיים:
המסוף
נכנסים לדף Cloud Storage browser במסוף Google Cloud .
כניסה לדף Cloud Storage browserעוברים אל האובייקט שרוצים לצפות ברשימת ה-ACL שלו.
בתפריט הנפתח של האובייקט, בוחרים באפשרות גישת עריכה.
תופיע תיבת דו-שיח עם ההרשאות של האובייקט.
במאמר פתרון בעיות מוסבר איך מקבלים מידע מפורט על שגיאות בנושא פעולות ב-Cloud Storage שנכשלו במסוף Google Cloud .
שורת הפקודה
כדי לאחזר ACL של אובייקט, משתמשים בפקודה
objects describeעם הדגל--format:gcloud storage objects describe gs://BUCKET_NAME/OBJECT_NAME --format="default(acl)"
כאשר:
BUCKET_NAMEהוא שם הקטגוריה שמכילה את האובייקט שרוצים לצפות ברשימת ה-ACL שלו. לדוגמה,my-bucket.
OBJECT_NAMEהוא שם האובייקט שרוצים לצפות ברשימת ה-ACL שלו. לדוגמה,paris.jpg.
ספריות לקוח
C++
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage C++ API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
הדוגמה הבאה מאחזרת ACL של אובייקט:
C#
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage C# API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
הדוגמה הבאה מאחזרת ACL של אובייקט:
Go
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage Go API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
הדוגמה הבאה מאחזרת ACL של אובייקט:
Java
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage Java API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
הדוגמה הבאה מאחזרת ACL של אובייקט:
Node.js
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage Node.js API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
הדוגמה הבאה מאחזרת ACL של אובייקט:
PHP
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage PHP API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
הדוגמה הבאה מאחזרת ACL של אובייקט:
Python
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage Python API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
הדוגמה הבאה מאחזרת ACL של אובייקט:
Ruby
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage Ruby API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
הדוגמה הבאה מאחזרת ACL של אובייקט:
ממשקי API ל-REST
API בפורמט JSON
חשוב לוודא שיש לכם הרשאה מסוג
OWNERעל האובייקט.מאחזרים את ה-ACL של האובייקט באמצעות בקשת
GET.ה-ACL של האובייקט מוחזר בפורמט JSON ומצורף לגוף התגובה.
לדוגמה, כדי להחזיר את ה-ACL של האובייקט paris.jpg בקטגוריה example-travel-maps:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://storage.googleapis.com/storage/v1/b/example-travel-maps/o/paris.jpg?projection=full
אתם אמורים לראות תגובה שנראית כך:
{
"kind": "storage#object",
"id": "example-travel-maps/paris.jpg/1412805837131000",
"selfLink": "https://www.googleapis.com/storage/v1/b/example-travel-maps/o/paris.jpg",
"name": "paris.jpg",
"bucket": "example-travel-maps",
...
"acl": [
{
...
"entity": "project-owners-867489160491",
"role": "OWNER",
"projectTeam": {
"projectNumber": "867489160491",
"team": "owners"
},
...
},
{
...
"entity": "user-jeffersonloveshiking@gmail.com",
"role": "OWNER",
"email": "jeffersonloveshiking@gmail.com",
...
},
{
...
"entity": "group-gs-announce@googlegroups.com",
"role": "READER",
"email": "gs-announce@googlegroups.com",
...
}
],
"owner": {
"entity": "user-jeffersonloveshiking@gmail.com"
},
...
}
אפשר גם להשתמש ב-method GET של המשאב objectAccessControls כדי להחזיר רשומות בודדות ב-ACL של אובייקט.
API בפורמט XML
חשוב לוודא שיש לכם הרשאת
FULL_CONTROLבקטגוריה או באובייקט.מאחזרים את ה-ACL של הקטגוריה או האובייקט באמצעות הפרמטר
aclשל מחרוזת השאילתה בבקשת אובייקט GET.
רשימות ה-ACL מתוארות ב-XML ומצורפות לגוף התגובה.
לדוגמה, כדי להחזיר את ה-ACL של האובייקט paris.jpg בקטגוריה example-travel-maps:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://storage.googleapis.com/example-travel-maps/paris.jpg?acl
אתם אמורים לראות תגובה שנראית כך:
<?xml version="1.0" encoding="UTF-8"?>
<AccessControlList>
<Owner>
<ID>84fac329bceSAMPLE777d5d22b8SAMPLE77d85ac2SAMPLE2dfcf7c4adf34da46</ID>
<Name>Owner Name</Name>
</Owner>
<Entries>
<Entry>
<Scope type="UserById">
<ID>84fac329bceSAMPLE777d5d22b8SAMPLE77d85ac2SAMPLE2dfcf7c4adf34da46</ID>
<Name>Name</Name>
</Scope>
<Permission>FULL_CONTROL</Permission>
</Entry>
<Entry>
<Scope type="UserByEmail">
<EmailAddress>jeffersonloveshiking@gmail.com</EmailAddress>
<Name>Jefferson</Name>
</Scope>
<Permission>FULL_CONTROL</Permission>
</Entry>
<Entry>
<Scope type="GroupByEmail">
<EmailAddress>gs-announce@googlegroups.com</EmailAddress>
</Scope>
<Permission>READ</Permission>
</Entry>
</Entries>
</AccessControlList>
אפשר גם להשתמש ב-method GET בפורמט JSON של המשאב ObjectAccessControls כדי להחזיר רשומת ACL ספציפית.
המאמרים הבאים
- מידע נוסף על רשימות ACL
- הסבר על שימוש בגישה אחידה ברמת הקטגוריה כדי להפוך את בקרת הגישה לפשוטה יותר.
- למידע על שיטות מומלצות בזמן שימוש ברשימות ACL