בדף הזה נסביר איך להגדיר את האובייקטים שבבעלותכם כך שיהיו קריאים לכולם באינטרנט הציבורי, ואיך להסיר את הגישה הציבורית מהקטגוריה. במאמר גישה לנתונים ציבוריים יש הסבר איך לגשת לנתונים שהוגדרו כציבוריים.
כשאובייקט משותף באופן ציבורי, כל משתמש שיודע מה ה-URI של האובייקט יכול לגשת לאובייקט, כל עוד האובייקט מוגדר כציבורי.
התפקידים הנדרשים
כדי לקבל את ההרשאות הנדרשות להגדרת אובייקטים כקריאים לכולם, צריך לבקש מהאדמין להקצות לכם את התפקידים הבאים בקטגוריה שמכילה את הנתונים שאתם רוצים להפוך לציבוריים:
כדי להגדיר שכל האובייקטים בקטגוריה יהיו קריאים באופן ציבורי: אדמין באחסון (
roles/storage.admin)כדי להגדיר אובייקטים בודדים כקריאים באופן ציבורי: אדמין של אובייקטים באחסון (
roles/storage.objectAdmin)- אם אתם מתכננים להשתמש במסוף Google Cloud , תצטרכו את התפקיד Storage Admin (
roles/storage.admin) במקום התפקיד Storage Object Admin.
- אם אתם מתכננים להשתמש במסוף Google Cloud , תצטרכו את התפקיד Storage Admin (
כדי להסיר גישה ציבורית מכל האובייקטים בקטגוריה: אדמין אחסון (
roles/storage.admin)
התפקידים האלה כוללים את ההרשאות שנדרשות כדי להגדיר אובייקטים כציבוריים. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
storage.buckets.getstorage.buckets.getIamPolicystorage.buckets.setIamPolicystorage.buckets.updatestorage.objects.getstorage.objects.getIamPolicystorage.objects.setIamPolicystorage.objects.update
ההרשאות הבאות נדרשות רק לשימוש במסוףGoogle Cloud כדי לבצע את המשימות שמתוארות בדף הזה:
storage.buckets.liststorage.objects.list
יכול להיות שתוכלו לקבל את ההרשאות האלה גם בתפקידים מוגדרים מראש או בתפקידים בהתאמה אישית אחרים.
במאמר הגדרה וניהול של מדיניות IAM בקטגוריות מוסבר איך מקצים תפקידים בקטגוריות.
הגדרת כל האובייקטים בקטגוריה כקריאים באופן ציבורי
כדי להגדיר את כל האובייקטים בקטגוריה כקריאים לכולם באינטרנט הציבורי, צריך להעניק לגורם המרכזי allUsers את התפקיד 'צפייה באובייקטים באחסון' (roles/storage.objectViewer):
המסוף
- במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.
ברשימת הקטגוריות, לוחצים על השם של הקטגוריה שרוצים להגדיר כציבורית.
לוחצים על הכרטיסייה Permissions בחלק העליון של הדף.
בקטע Permissions, לוחצים על Grant access.
מופיעה תיבת הדו-שיח Grant access.
בשדה New principals, מזינים
allUsers.בתפריט הנפתח Select a role, מזינים
Storage Object Viewerבתיבת הסינון ובוחרים Storage Object Viewer מהתוצאות המסוננות.לוחצים על Save.
לוחצים על Allow public access.
אחרי שמעניקים גישה ציבורית, מופיע לחצן Copy URL לכל אובייקט בעמודה public access. לוחצים על הלחצן הזה כדי לקבל את כתובת ה-URL הציבורית של האובייקט. כתובת ה-URL הציבורית שונה מהקישור שמתקבל מלחיצה ימנית ישירה על אובייקט. שני הקישורים מספקים גישה לאובייקט, אבל השימוש בכתובת ה-URL הציבורית לא מחייב כניסה לחשבון משתמש. מידע נוסף זמין במאמר נקודות קצה (endpoint) של בקשה.
במאמר פתרון בעיות מוסבר איך מקבלים מידע מפורט על שגיאות בנושא פעולות ב-Cloud Storage שנכשלו במסוף Google Cloud .
במאמר פתרון בעיות בהגדרת נתונים כציבוריים יש הסבר איך לפתור שגיאות שקשורות למדיניות הארגון ולשגיאות הרשאה.שורת הפקודה
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
בסביבת הפיתוח, מריצים את הפקודה
buckets add-iam-policy-binding:gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=allUsers --role=roles/storage.objectViewer
כאשר
BUCKET_NAMEהוא שם הקטגוריה שרוצים להגדיר את האובייקטים שלה כציבוריים. למשל,my-bucket.התקנה והפעלה של ה-CLI של gcloud, שמאפשרות ליצור אסימון גישה לכותרת
Authorization.יוצרים קובץ JSON שמכיל את הפרטים הבאים:
{ "bindings":[ { "role": "roles/storage.objectViewer", "members":["allUsers"] } ] }
משתמשים ב-
cURLכדי לשלוח קריאה ל-API בפורמט JSON באמצעות בקשה של קטגורייתPUT: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/iam"
כאשר:
-
JSON_FILE_NAMEהוא הנתיב לקובץ שיצרתם בשלב 2. -
BUCKET_NAMEהוא שם הקטגוריה שרוצים להגדיר את האובייקטים שלה כציבוריים. למשל,my-bucket.
-
ספריות לקוח
C++
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage C++ API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
C#
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage C# API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Go
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage Go API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Java
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage Java API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Node.js
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage Node.js API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
PHP
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage PHP API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Python
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage Python API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Ruby
למידע נוסף, קראו את מאמרי העזרה של Cloud Storage Ruby API.
כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Terraform
אפשר להשתמש במשאב של Terraform כדי להגדיר את כל האובייקטים בקטגוריה כציבוריים.
ממשקי API ל-REST
API ל-JSON
API בפורמט XML
ב-API בפורמט XML אין תמיכה בהגדרת כל האובייקטים בקטגוריה כקריאים באופן ציבורי. אפשר להשתמש במסוף Google Cloud או ב-gcloud storage.
הגדרת חלק מהקטגוריה כקריא באופן ציבורי
אפשר להשתמש בתיקייה מנוהלת כדי לשלוט בגישה לאובייקטים שהקידומת של השם שלהם תואמת לשם של התיקייה המנוהלת. לדוגמה, אפשר להשתמש בתיקייה מנוהלת בשם my-folder כדי לשלוט בגישה לאובייקטים בשמות my-folder/cats.jpg ו-my-folder/dogs.jpg.
כדי להגדיר גישה ציבורית לאובייקטים כאלה, קודם צריך ליצור את התיקייה המנוהלת, ואז להגדיר מדיניות IAM בתיקייה שמעניקה את התפקיד 'צפייה באובייקט אחסון' (roles/storage.objectViewer) להרשאה allUsers:
המסוף
- במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.
לוחצים על שם הקטגוריה שמכילה את האובייקטים שרוצים להגדיר כציבוריים.
כדי ליצור תיקייה:
לוחצים על הלחצן יצירת תיקייה.
מזינים את השם של התיקייה. אחרי שהתיקייה תומר לתיקייה מנוהלת, אובייקטים ששמם מתחיל בשם הזה יהיו כפופים לתפקידי IAM שהוגדרו בתיקייה.
לוחצים על יצירה.
כדי להמיר את התיקייה לתיקייה מנוהלת, פועלים לפי השלבים הבאים:
בחלונית שבה מוצג התוכן של הקטגוריה, מוצאים את השם של התיקייה שיצרתם ולוחצים על סמל האפשרויות הנוספות .
לוחצים על עריכת הגישה.
בחלון שמופיע, לוחצים על הפעלה.
מוסיפים מדיניות IAM לתיקייה שמעניקה ל-
allUsersאת התפקיד 'צפייה באובייקט אחסון' (roles/storage.objectViewer), באמצעות השלבים הבאים:אם החלונית הרשאות של התיקייה המנוהלת לא פתוחה, לוחצים על סמל האפשרויות הנוספות של התיקייה המנוהלת ואז על עריכת הגישה.
בחלונית Permissions, לוחצים על הלחצן Add principal.
בשדה New principals, מזינים
allUsers.בתפריט הנפתח Select a role, מזינים
Storage Object Viewerבתיבת הסינון ובוחרים Storage Object Viewer מהתוצאות המסוננות.לוחצים על Save.
לוחצים על Allow public access.
אחרי שמעניקים גישה ציבורית, מופיע לחצן Copy URL לכל אובייקט רלוונטי בעמודה public access. לוחצים על הלחצן הזה כדי לקבל את כתובת ה-URL הציבורית של האובייקט. כתובת ה-URL הציבורית שונה מהקישור שמתקבל מלחיצה ימנית ישירה על אובייקט. שני הקישורים מספקים גישה לאובייקט, אבל השימוש בכתובת ה-URL הציבורית לא מחייב כניסה לחשבון משתמש. מידע נוסף זמין במאמר נקודות קצה (endpoint) של בקשה.
במאמר פתרון בעיות מוסבר איך מקבלים מידע מפורט על שגיאות בנושא פעולות ב-Cloud Storage שנכשלו במסוף Google Cloud .
במאמר פתרון בעיות בהגדרת נתונים כציבוריים יש הסבר איך לפתור שגיאות שקשורות למדיניות הארגון ולשגיאות הרשאה.שורת הפקודה
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
בסביבת הפיתוח, יוצרים תיקייה מנוהלת באמצעות הפקודה
gcloud storage managed-folders create:gcloud storage managed-folders create gs://BUCKET_NAME/MANAGED_FOLDER_NAME/
כאשר:
BUCKET_NAMEהוא שם הקטגוריה שבה רוצים ליצור תיקייה מנוהלת. לדוגמה,my-bucket.
MANAGED_FOLDER_NAMEהוא שם התיקייה המנוהלת שרוצים ליצור. לדוגמה,my-managed-folder.
בסביבת הפיתוח, מוסיפים את
allUsersלמדיניות ה-IAM של התיקייה המנוהלת באמצעות הפקודהgcloud storage managed-folders add-iam-policy-binding:gcloud storage managed-folders add-iam-policy-binding gs://BUCKET_NAME/MANAGED_FOLDER_NAME --member=allUsers --role=roles/storage.objectViewer
כאשר:
-
BUCKET_NAMEהוא שם הקטגוריה שמכילה את התיקייה המנוהלת שרוצים להוסיף לה את מדיניות ה-IAM. לדוגמה,my-bucket. -
MANAGED_FOLDER_NAMEהוא שם התיקייה המנוהלת שרוצים להוסיף לה גישה ציבורית. לדוגמה,my-managed-folder.
-
התקנה והפעלה של ה-CLI של gcloud, שמאפשרות ליצור אסימון גישה לכותרת
Authorization.יוצרים קובץ JSON שמכיל את הפרטים הבאים:
{ "name": "MANAGED_FOLDER_NAME" }
כאשר
MANAGED_FOLDER_NAMEהוא השם של התיקייה המנוהלת שרוצים ליצור. לדוגמה,my-managed-folder.משתמשים ב-
cURLכדי לשלוח קריאה ל-API בפורמט JSON באמצעות בקשתInsert ManagedFolder:curl -X POST --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"
כאשר:
-
JSON_FILE_NAMEהוא הנתיב לקובץ שיצרתם בשלב הקודם. -
BUCKET_NAMEהוא שם הקטגוריה שבה רוצים ליצור תיקייה מנוהלת. לדוגמה,my-bucket.
-
יוצרים קובץ JSON שמכיל את הפרטים הבאים:
{ "bindings":[ { "role": "roles/storage.objectViewer", "members":["allUsers"] } ] }
משתמשים ב-
cURLכדי לשלוח קריאה ל-API בפורמט JSON באמצעות בקשתsetIamPolicyManagedFolder: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הוא הנתיב לקובץ שיצרתם בשלב הקודם. -
BUCKET_NAMEהוא שם הקטגוריה שמכילה את התיקייה המנוהלת שרוצים להוסיף לה את מדיניות ה-IAM. לדוגמה,my-bucket. -
MANAGED_FOLDER_NAMEהוא שם התיקייה המנוהלת שאליה מוסיפים את מדיניות ה-IAM. לדוגמה,my-managed-folder.
-
ממשקי API ל-REST
API ל-JSON
API בפורמט XML
אי אפשר להשתמש ב-API בפורמט XML כדי לעבוד עם תיקיות מנוהלות. אפשר להשתמש בכלי אחר, כמו מסוף Google Cloud , או להגדיר רשימות ACL באובייקטים בודדים באמצעות בקשות Set Object ACL. הדוגמה הבאה היא קובץ ACL שמעניק גישה לאובייקט ל-allUsers:
<AccessControlList>
<Entries>
<Entry>
<Scope type="AllUsers"/>
<Permission>READ</Permission>
</Entry>
</Entries>
</AccessControlList>הסרת גישה ציבורית לכל האובייקטים בקטגוריה
כדי להסיר את הגישה הציבורית לכל האובייקטים בקטגוריה, מסירים את מדיניות ה-IAM שמעניקה את התפקיד 'צפייה באובייקט אחסון' (roles/storage.objectViewer) ל-allUsers:
המסוף
- במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.
ברשימת הקטגוריות, לוחצים על השם של הקטגוריה שרוצים להסיר ממנה את הגישה הציבורית.
לוחצים על הכרטיסייה הרשאות.
מדיניות ה-IAM שחלה על הקטגוריה מופיעה בקטע הרשאות.
בכרטיסייה View by principals, מסמנים את התיבה לצד הנציג
allUsersשרוצים להסיר.לוחצים על הלחצן - הסרת הגישה.
בחלון שכבת-העל שמופיע, לוחצים על אישור.
במאמר פתרון בעיות מוסבר איך מקבלים מידע מפורט על שגיאות בנושא פעולות ב-Cloud Storage שנכשלו במסוף Google Cloud .
שורת הפקודה
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
בסביבת הפיתוח, מריצים את הפקודה
buckets remove-iam-policy-binding:התקנה והפעלה של ה-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/iam"
כאשר
BUCKET_NAMEהוא שם הקטגוריה שבמדיניות ה-IAM שלה רוצים לצפות. לדוגמה,my-bucket.יוצרים קובץ JSON שמכיל את המדיניות שאחזרתם בשלב הקודם, ועורכים את הקובץ כדי להסיר את הקישור של חשבון המשתמש
allUsersמהמדיניות.משתמשים ב-
cURLכדי לשלוח קריאה ל-API בפורמט JSON באמצעות בקשתPUT setIamPolicy: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/iam"
כאשר:
JSON_FILE_NAMEהוא הנתיב לקובץ שיצרתם בשלב 3.
BUCKET_NAMEהוא שם הקטגוריה שרוצים לבטל את הגישה אליה. לדוגמה,my-bucket.
gcloud storage buckets remove-iam-policy-binding gs://BUCKET_NAME --member=allUsers --role=roles/storage.objectViewer
כאשר BUCKET_NAME הוא שם הקטגוריה שאליה רוצים לבטל את הגישה. לדוגמה, my-bucket.
ממשקי API ל-REST
JSON
המאמרים הבאים
- גישה לנתונים שהוגדרו כציבוריים.
- אפשרויות נוספות של בקרת גישה לקטגוריות ולאובייקטים.