בדף הזה נסביר איך להגדיר את האובייקטים שבבעלותכם כך שיהיו קריאים לכולם באינטרנט הציבורי, ואיך להסיר את הגישה הציבורית מהקטגוריה. במאמר גישה לנתונים ציבוריים יש הסבר איך לגשת לנתונים שהוגדרו כציבוריים.
כשאובייקט משותף באופן ציבורי, כל משתמש שיודע מה ה-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) בקטגוריה.
התפקיד 'צפייה באובייקט אחסון' (roles/storage.objectViewer) כולל את ההרשאה storage.objects.list, שמאפשרת למשתמשים שלכם להציג את רשימת האובייקטים בקטגוריה. כדי להקצות תפקיד עם פחות הרשאות, שמאפשר למשתמשים רק לקבל אובייקטים בלי להציג אותם, צריך להקצות את התפקיד Storage Legacy Object Reader (roles/storage.legacyObjectReader).
המסוף
- במסוף 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 מסוף.
במאמר פתרון בעיות בהפיכת נתונים לציבוריים מוסבר איך לפתור שגיאות שקשורות למדיניות הארגון ולהרשאות.שורת הפקודה
-
מפעילים את Cloud Shell במסוף Google Cloud .
בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
בסביבת הפיתוח, מריצים את הפקודה
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.
ספריות לקוח
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. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Rust
Terraform
אפשר להשתמש במשאב של Terraform כדי להגדיר את כל האובייקטים בקטגוריה כציבוריים.
ממשקי API בארכיטקטורת REST
API בפורמט JSON
להתקין ולהפעיל את ה-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.
-
API בפורמט XML
ב-API בפורמט XML אין תמיכה בהגדרת כל האובייקטים בקטגוריה כקריאים באופן ציבורי. אפשר להשתמש במסוף Google Cloud או ב-gcloud storage.
הגדרת חלק מהקטגוריה כקריא באופן ציבורי
משתמשים בתיקייה מנוהלת כדי לשלוט בגישה לאובייקטים שהקידומת של השם שלהם תואמת לשם של התיקייה המנוהלת. לדוגמה, אפשר להשתמש בתיקייה מנוהלת בשם my-folder כדי לשלוט בגישה לאובייקטים בשמות my-folder/cats.jpg ו-my-folder/dogs.jpg.
כדי להגדיר את האובייקטים האלה כנגישים באופן ציבורי, קודם יוצרים את התיקייה המנוהלת ואז מגדירים מדיניות IAM בתיקייה שמעניקה ל-allUsers את התפקיד "צפייה באובייקט אחסון" (roles/storage.objectViewer):
המסוף
- במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.
לוחצים על השם של הקטגוריה שמכילה את האובייקטים שרוצים להגדיר כציבוריים.
כדי ליצור תיקייה:
לוחצים על הכפתור יצירת תיקייה.
מזינים את שם התיקייה. אחרי שהתיקייה תומר לתיקייה מנוהלת, אובייקטים שהשם שלהם מתחיל בשם הזה יהיו כפופים לתפקידי IAM שמוגדרים בתיקייה.
לוחצים על יצירה.
כדי להמיר את התיקייה לתיקייה מנוהלת, פועלים לפי השלבים הבאים:
בחלונית שבה מוצג תוכן הקטגוריה, מוצאים את שם התיקייה שיצרתם ולוחצים על סמל האפשרויות הנוספות .
לוחצים על עריכת הרשאות הגישה.
בחלון שמופיע, לוחצים על הפעלה.
מוסיפים לתיקייה מדיניות IAM שמעניקה ל-
allUsersאת התפקיד "צפייה באובייקט אחסון" (roles/storage.objectViewer):אם החלונית Permissions של התיקייה המנוהלת לא פתוחה, לוחצים על סמל האפשרויות הנוספות של התיקייה המנוהלת ואז על Edit access.
בחלונית 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 מסוף.
במאמר פתרון בעיות בהפיכת נתונים לציבוריים מוסבר איך לפתור שגיאות שקשורות למדיניות הארגון ולהרשאות.שורת הפקודה
-
מפעילים את Cloud Shell במסוף Google Cloud .
בחלק התחתון של מסוף Google Cloud יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
בסביבת הפיתוח, יוצרים תיקייה מנוהלת באמצעות הפקודה
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.
-
ממשקי API בארכיטקטורת REST
API בפורמט JSON
להתקין ולהפעיל את ה-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 בפורמט XML
אי אפשר להשתמש ב-API בפורמט XML כדי לעבוד עם תיקיות מנוהלות. צריך להשתמש בכלי אחר, כמו מסוף Google Cloud , או להגדיר רשימות ACL באובייקטים ספציפיים באמצעות בקשות Set Object ACL. הדוגמה הבאה היא קובץ ACL שמעניק גישה allUsers לאובייקט:
<AccessControlList>
<Entries>
<Entry>
<Scope type="AllUsers"/>
<Permission>READ</Permission>
</Entry>
</Entries>
</AccessControlList>הסרת הגישה הציבורית לכל האובייקטים בקטגוריה
כדי להסיר את הגישה הציבורית לכל האובייקטים בקטגוריה, מסירים את מדיניות ה-IAM שמעניקה ל-allUsers את התפקיד "צפייה באובייקט אחסון" (roles/storage.objectViewer):
המסוף
- במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.
ברשימת הקטגוריות, לוחצים על השם של הקטגוריה שרוצים להסיר ממנה את הגישה הציבורית.
לוחצים על הכרטיסייה הרשאות.
מדיניות ה-IAM שחלה על הקטגוריה מופיעה בקטע Permissions.
בכרטיסייה View by principals, מסמנים את תיבת הסימון של
allUsersהעיקרון שרוצים להסיר.לוחצים על הלחצן - Remove access (הסרת הגישה).
בחלון שכבת-העל שמופיע, לוחצים על Confirm.
במאמר פתרון בעיות מוסבר איך מקבלים מידע מפורט על שגיאות בנושא פעולות ב-Cloud Storage שנכשלו ב Google Cloud מסוף.
שורת הפקודה
-
מפעילים את Cloud Shell במסוף Google Cloud .
בחלק התחתון של מסוף Google Cloud יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
בסביבת הפיתוח, מריצים את הפקודה
buckets remove-iam-policy-binding:
gcloud storage buckets remove-iam-policy-binding gs://BUCKET_NAME --member=allUsers --role=roles/storage.objectViewer
BUCKET_NAME הוא שם הקטגוריה שאליה רוצים לבטל את הגישה. לדוגמה, my-bucket.
ממשקי API בארכיטקטורת REST
JSON
להתקין ולהפעיל את ה-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.
המאמרים הבאים
- גישה לנתונים שהוגדרו כציבוריים.
- מידע ולמידה על אפשרויות נוספות של בקרת גישה לקטגוריות ולאובייקטים.