הגדרת הנתונים כציבוריים

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

כשאובייקט משותף באופן ציבורי, כל משתמש שיודע מה ה-URI של האובייקט יכול לגשת לאובייקט, כל עוד האובייקט מוגדר כציבורי.

התפקידים הנדרשים

כדי לקבל את ההרשאות הנדרשות להגדרת אובייקטים כקריאים לכולם, צריך לבקש מהאדמין להקצות לכם את התפקידים הבאים בקטגוריה שמכילה את הנתונים שאתם רוצים להפוך לציבוריים:

  • כדי להגדיר שכל האובייקטים בקטגוריה יהיו קריאים באופן ציבורי: אדמין באחסון (roles/storage.admin)

  • כדי להגדיר אובייקטים בודדים כקריאים באופן ציבורי: אדמין של אובייקטים באחסון (roles/storage.objectAdmin)

    • אם אתם מתכננים להשתמש במסוף Google Cloud , תצטרכו את התפקיד Storage Admin (roles/storage.admin) במקום התפקיד Storage Object Admin.
  • כדי להסיר גישה ציבורית מכל האובייקטים בקטגוריה: אדמין אחסון (roles/storage.admin)

התפקידים האלה כוללים את ההרשאות שנדרשות כדי להגדיר אובייקטים כציבוריים. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:

ההרשאות הנדרשות

  • storage.buckets.get
  • storage.buckets.getIamPolicy
  • storage.buckets.setIamPolicy
  • storage.buckets.update
  • storage.objects.get
  • storage.objects.getIamPolicy
  • storage.objects.setIamPolicy
  • storage.objects.update

ההרשאות הבאות נדרשות רק לשימוש במסוףGoogle Cloud כדי לבצע את המשימות שמתוארות בדף הזה:

  • storage.buckets.list
  • storage.objects.list

יכול להיות שתוכלו לקבל את ההרשאות האלה גם בתפקידים מוגדרים מראש או בתפקידים בהתאמה אישית אחרים.

במאמר הגדרה וניהול של מדיניות IAM בקטגוריות מוסבר איך מקצים תפקידים בקטגוריות.

הגדרת כל האובייקטים בקטגוריה כקריאים באופן ציבורי

כדי להגדיר את כל האובייקטים בקטגוריה כקריאים לכולם באינטרנט הציבורי, צריך להעניק לגורם המרכזי allUsers את התפקיד 'צפייה באובייקטים באחסון' (roles/storage.objectViewer):

המסוף

  1. במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.

    כניסה לדף Buckets

  2. ברשימת הקטגוריות, לוחצים על השם של הקטגוריה שרוצים להגדיר כציבורית.

  3. לוחצים על הכרטיסייה Permissions בחלק העליון של הדף.

  4. בקטע Permissions, לוחצים על Grant access.

    מופיעה תיבת הדו-שיח Grant access.

  5. בשדה New principals, מזינים allUsers.

  6. בתפריט הנפתח Select a role, מזינים Storage Object Viewer בתיבת הסינון ובוחרים Storage Object Viewer מהתוצאות המסוננות.

  7. לוחצים על Save.

  8. לוחצים על Allow public access.

אחרי שמעניקים גישה ציבורית, מופיע לחצן Copy URL לכל אובייקט בעמודה public access. לוחצים על הלחצן הזה כדי לקבל את כתובת ה-URL הציבורית של האובייקט. כתובת ה-URL הציבורית שונה מהקישור שמתקבל מלחיצה ימנית ישירה על אובייקט. שני הקישורים מספקים גישה לאובייקט, אבל השימוש בכתובת ה-URL הציבורית לא מחייב כניסה לחשבון משתמש. מידע נוסף זמין במאמר נקודות קצה (endpoint) של בקשה.

במאמר פתרון בעיות מוסבר איך מקבלים מידע מפורט על שגיאות בנושא פעולות ב-Cloud Storage שנכשלו במסוף Google Cloud .

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

שורת הפקודה

  1. In the Google Cloud console, activate Cloud Shell.

    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.

  2. בסביבת הפיתוח, מריצים את הפקודה 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.

  3. ספריות לקוח

    C++

    למידע נוסף, קראו את מאמרי העזרה של Cloud Storage C++ API.

    כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

    namespace gcs = ::google::cloud::storage;
    using ::google::cloud::StatusOr;
    [](gcs::Client client, std::string const& bucket_name) {
      auto current_policy = client.GetNativeBucketIamPolicy(
          bucket_name, gcs::RequestedPolicyVersion(3));
      if (!current_policy) throw std::move(current_policy).status();
    
      current_policy->set_version(3);
      current_policy->bindings().emplace_back(
          gcs::NativeIamBinding("roles/storage.objectViewer", {"allUsers"}));
    
      auto updated =
          client.SetNativeBucketIamPolicy(bucket_name, *current_policy);
      if (!updated) throw std::move(updated).status();
    
      std::cout << "Policy successfully updated: " << *updated << "\n";
    }

    C#

    למידע נוסף, קראו את מאמרי העזרה של Cloud Storage C# API.

    כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

    
    using Google.Apis.Storage.v1.Data;
    using Google.Cloud.Storage.V1;
    using System;
    using System.Collections.Generic;
    
    public class MakeBucketPublicSample
    {
        public void MakeBucketPublic(string bucketName = "your-unique-bucket-name")
        {
            var storage = StorageClient.Create();
    
            Policy policy = storage.GetBucketIamPolicy(bucketName);
    
            policy.Bindings.Add(new Policy.BindingsData
            {
                Role = "roles/storage.objectViewer",
                Members = new List<string> { "allUsers" }
            });
    
            storage.SetBucketIamPolicy(bucketName, policy);
            Console.WriteLine(bucketName + " is now public ");
        }
    }

    Go

    למידע נוסף, קראו את מאמרי העזרה של Cloud Storage Go API.

    כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

    import (
    	"context"
    	"fmt"
    	"io"
    
    	"cloud.google.com/go/iam"
    	"cloud.google.com/go/iam/apiv1/iampb"
    	"cloud.google.com/go/storage"
    )
    
    // setBucketPublicIAM makes all objects in a bucket publicly readable.
    func setBucketPublicIAM(w io.Writer, bucketName string) error {
    	// bucketName := "bucket-name"
    	ctx := context.Background()
    	client, err := storage.NewClient(ctx)
    	if err != nil {
    		return fmt.Errorf("storage.NewClient: %w", err)
    	}
    	defer client.Close()
    
    	policy, err := client.Bucket(bucketName).IAM().V3().Policy(ctx)
    	if err != nil {
    		return fmt.Errorf("Bucket(%q).IAM().V3().Policy: %w", bucketName, err)
    	}
    	role := "roles/storage.objectViewer"
    	policy.Bindings = append(policy.Bindings, &iampb.Binding{
    		Role:    role,
    		Members: []string{iam.AllUsers},
    	})
    	if err := client.Bucket(bucketName).IAM().V3().SetPolicy(ctx, policy); err != nil {
    		return fmt.Errorf("Bucket(%q).IAM().SetPolicy: %w", bucketName, err)
    	}
    	fmt.Fprintf(w, "Bucket %v is now publicly readable\n", bucketName)
    	return nil
    }
    

    Java

    למידע נוסף, קראו את מאמרי העזרה של Cloud Storage Java API.

    כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

    import com.google.cloud.Identity;
    import com.google.cloud.Policy;
    import com.google.cloud.storage.Storage;
    import com.google.cloud.storage.StorageOptions;
    import com.google.cloud.storage.StorageRoles;
    
    public class MakeBucketPublic {
      public static void makeBucketPublic(String projectId, String bucketName) {
        // The ID of your GCP project
        // String projectId = "your-project-id";
    
        // The ID of your GCS bucket
        // String bucketName = "your-unique-bucket-name";
    
        Storage storage = StorageOptions.newBuilder().setProjectId(projectId).build().getService();
        Policy originalPolicy = storage.getIamPolicy(bucketName);
        storage.setIamPolicy(
            bucketName,
            originalPolicy.toBuilder()
                .addIdentity(StorageRoles.objectViewer(), Identity.allUsers()) // All users can view
                .build());
    
        System.out.println("Bucket " + bucketName + " is now publicly readable");
      }
    }

    Node.js

    למידע נוסף, קראו את מאמרי העזרה של Cloud Storage Node.js API.

    כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

    /**
     * TODO(developer): Uncomment the following lines before running the sample.
     */
    // The ID of your GCS bucket
    // const bucketName = 'your-unique-bucket-name';
    
    // Imports the Google Cloud client library
    const {Storage} = require('@google-cloud/storage');
    
    // Creates a client
    const storage = new Storage();
    
    async function makeBucketPublic() {
      await storage.bucket(bucketName).makePublic();
    
      console.log(`Bucket ${bucketName} is now publicly readable`);
    }
    
    makeBucketPublic().catch(console.error);

    PHP

    למידע נוסף, קראו את מאמרי העזרה של Cloud Storage PHP API.

    כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

    use Google\Cloud\Storage\StorageClient;
    
    /**
     * Update the specified bucket's IAM configuration to make it publicly accessible.
     *
     * @param string $bucketName The name of your Cloud Storage bucket.
     *        (e.g. 'my-bucket')
     */
    function set_bucket_public_iam(string $bucketName): void
    {
        $storage = new StorageClient();
        $bucket = $storage->bucket($bucketName);
    
        $policy = $bucket->iam()->policy(['requestedPolicyVersion' => 3]);
        $policy['version'] = 3;
    
        $role = 'roles/storage.objectViewer';
        $members = ['allUsers'];
    
        $policy['bindings'][] = [
            'role' => $role,
            'members' => $members
        ];
    
        $bucket->iam()->setPolicy($policy);
    
        printf('Bucket %s is now public', $bucketName);
    }

    Python

    למידע נוסף, קראו את מאמרי העזרה של Cloud Storage Python API.

    כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

    from typing import List
    
    from google.cloud import storage
    
    
    def set_bucket_public_iam(
        bucket_name: str = "your-bucket-name",
        members: List[str] = ["allUsers"],
    ):
        """Set a public IAM Policy to bucket"""
        # bucket_name = "your-bucket-name"
    
        storage_client = storage.Client()
        bucket = storage_client.bucket(bucket_name)
    
        policy = bucket.get_iam_policy(requested_policy_version=3)
        policy.bindings.append(
            {"role": "roles/storage.objectViewer", "members": members}
        )
    
        bucket.set_iam_policy(policy)
    
        print(f"Bucket {bucket.name} is now publicly readable")
    
    

    Ruby

    למידע נוסף, קראו את מאמרי העזרה של Cloud Storage Ruby API.

    כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

    def set_bucket_public_iam bucket_name:
      # The ID of your GCS bucket
      # bucket_name = "your-unique-bucket-name"
    
      require "google/cloud/storage"
    
      storage = Google::Cloud::Storage.new
      bucket = storage.bucket bucket_name
    
      bucket.policy do |p|
        p.add "roles/storage.objectViewer", "allUsers"
      end
    
      puts "Bucket #{bucket_name} is now publicly readable"
    end

    Terraform

    אפשר להשתמש במשאב של Terraform כדי להגדיר את כל האובייקטים בקטגוריה כציבוריים.

    # Make bucket public
    resource "google_storage_bucket_iam_member" "member" {
      provider = google
      bucket   = google_storage_bucket.default.name
      role     = "roles/storage.objectViewer"
      member   = "allUsers"
    }

    ממשקי API ל-REST

    API ל-JSON

    1. התקנה והפעלה של ה-CLI של gcloud, שמאפשרות ליצור אסימון גישה לכותרת Authorization.

    2. יוצרים קובץ JSON שמכיל את הפרטים הבאים:

      {
        "bindings":[
          {
            "role": "roles/storage.objectViewer",
            "members":["allUsers"]
          }
        ]
      }
    3. משתמשים ב- 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 בתיקייה שמעניקה את התפקיד 'צפייה באובייקט אחסון' (roles/storage.objectViewer) להרשאה allUsers:

המסוף

  1. במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.

    כניסה לדף Buckets

  2. לוחצים על שם הקטגוריה שמכילה את האובייקטים שרוצים להגדיר כציבוריים.

  3. כדי ליצור תיקייה:

    1. לוחצים על הלחצן יצירת תיקייה.

    2. מזינים את השם של התיקייה. אחרי שהתיקייה תומר לתיקייה מנוהלת, אובייקטים ששמם מתחיל בשם הזה יהיו כפופים לתפקידי IAM שהוגדרו בתיקייה.

    3. לוחצים על יצירה.

  4. כדי להמיר את התיקייה לתיקייה מנוהלת, פועלים לפי השלבים הבאים:

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

    2. לוחצים על עריכת הגישה.

    3. בחלון שמופיע, לוחצים על הפעלה.

  5. מוסיפים מדיניות IAM לתיקייה שמעניקה ל-allUsers את התפקיד 'צפייה באובייקט אחסון' (roles/storage.objectViewer), באמצעות השלבים הבאים:

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

    2. בחלונית Permissions, לוחצים על הלחצן Add principal.

    3. בשדה New principals, מזינים allUsers.

    4. בתפריט הנפתח Select a role, מזינים Storage Object Viewer בתיבת הסינון ובוחרים Storage Object Viewer מהתוצאות המסוננות.

    5. לוחצים על Save.

    6. לוחצים על Allow public access.

אחרי שמעניקים גישה ציבורית, מופיע לחצן Copy URL לכל אובייקט רלוונטי בעמודה public access. לוחצים על הלחצן הזה כדי לקבל את כתובת ה-URL הציבורית של האובייקט. כתובת ה-URL הציבורית שונה מהקישור שמתקבל מלחיצה ימנית ישירה על אובייקט. שני הקישורים מספקים גישה לאובייקט, אבל השימוש בכתובת ה-URL הציבורית לא מחייב כניסה לחשבון משתמש. מידע נוסף זמין במאמר נקודות קצה (endpoint) של בקשה.

במאמר פתרון בעיות מוסבר איך מקבלים מידע מפורט על שגיאות בנושא פעולות ב-Cloud Storage שנכשלו במסוף Google Cloud .

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

שורת הפקודה

  1. In the Google Cloud console, activate Cloud Shell.

    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.

  2. בסביבת הפיתוח, יוצרים תיקייה מנוהלת באמצעות הפקודה 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.

  3. בסביבת הפיתוח, מוסיפים את 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.
  4. ממשקי API ל-REST

    API ל-JSON

    1. התקנה והפעלה של ה-CLI של gcloud, שמאפשרות ליצור אסימון גישה לכותרת Authorization.

    2. יוצרים קובץ JSON שמכיל את הפרטים הבאים:

      {
        "name": "MANAGED_FOLDER_NAME"
      }

      כאשר MANAGED_FOLDER_NAME הוא השם של התיקייה המנוהלת שרוצים ליצור. לדוגמה, my-managed-folder.

    3. משתמשים ב- 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.
    4. יוצרים קובץ JSON שמכיל את הפרטים הבאים:

      {
        "bindings":[
          {
            "role": "roles/storage.objectViewer",
            "members":["allUsers"]
          }
        ]
      }
    5. משתמשים ב-cURL כדי לשלוח קריאה ל-API בפורמט JSON באמצעות בקשת setIamPolicy ManagedFolder:

      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 שמעניקה את התפקיד 'צפייה באובייקט אחסון' (roles/storage.objectViewer) ל-allUsers:

המסוף

  1. במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.

    כניסה לדף Buckets

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

  3. לוחצים על הכרטיסייה הרשאות.

    מדיניות ה-IAM שחלה על הקטגוריה מופיעה בקטע הרשאות.

  4. בכרטיסייה View by principals, מסמנים את התיבה לצד הנציג allUsers שרוצים להסיר.

  5. לוחצים על הלחצן - הסרת הגישה.

  6. בחלון שכבת-העל שמופיע, לוחצים על אישור.

במאמר פתרון בעיות מוסבר איך מקבלים מידע מפורט על שגיאות בנושא פעולות ב-Cloud Storage שנכשלו במסוף Google Cloud .

שורת הפקודה

  1. In the Google Cloud console, activate Cloud Shell.

    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.

  2. בסביבת הפיתוח, מריצים את הפקודה buckets remove-iam-policy-binding:

  3. gcloud storage buckets remove-iam-policy-binding  gs://BUCKET_NAME --member=allUsers --role=roles/storage.objectViewer

    כאשר BUCKET_NAME הוא שם הקטגוריה שאליה רוצים לבטל את הגישה. לדוגמה, my-bucket.

    ממשקי API ל-REST

    JSON

    1. התקנה והפעלה של ה-CLI של gcloud, שמאפשרות ליצור אסימון גישה לכותרת Authorization.

    2. מחילים את המדיניות הקיימת על הקטגוריה. כדי לעשות את זה, משתמשים ב- 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.

    3. יוצרים קובץ JSON שמכיל את המדיניות שאחזרתם בשלב הקודם, ועורכים את הקובץ כדי להסיר את הקישור של חשבון המשתמש allUsers מהמדיניות.

    4. משתמשים ב-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.

המאמרים הבאים