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

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

כשאובייקט משותף באופן ציבורי, כל משתמש שיודע מה ה-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) בקטגוריה.

התפקיד 'צפייה באובייקט אחסון' (roles/storage.objectViewer) כולל את ההרשאה storage.objects.list, שמאפשרת למשתמשים שלכם להציג את רשימת האובייקטים בקטגוריה. כדי להקצות תפקיד עם פחות הרשאות, שמאפשר למשתמשים רק לקבל אובייקטים בלי להציג אותם, צריך להקצות את התפקיד Storage Legacy Object Reader (roles/storage.legacyObjectReader).

המסוף

  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. מפעילים את Cloud Shell במסוף Google Cloud .

    הפעלת Cloud Shell

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

  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.

ספריות לקוח

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

Rust

use google_cloud_iam_v1::model::{Binding, GetPolicyOptions};
use google_cloud_storage::client::StorageControl;

pub async fn sample(client: &StorageControl, bucket_id: &str) -> anyhow::Result<()> {
    let mut policy = client
        .get_iam_policy()
        .set_resource(format!("projects/_/buckets/{bucket_id}"))
        .set_options(GetPolicyOptions::new().set_requested_policy_version(3))
        .send()
        .await?;
    policy.version = 3;
    policy.bindings.push(
        Binding::new()
            .set_role("roles/storage.objectViewer")
            .set_members(["allUsers"]),
    );
    let updated_policy = client
        .set_iam_policy()
        .set_resource(format!("projects/_/buckets/{bucket_id}"))
        .set_policy(policy)
        .send()
        .await?;
    println!(
        "Successfully set public IAM policy for bucket {}",
        bucket_id
    );
    println!("The updated policy is: {:?}", updated_policy);
    Ok(())
}

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

המסוף

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

    כניסה לדף Buckets

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

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

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

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

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

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

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

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

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

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

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

    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. מפעילים את Cloud Shell במסוף Google Cloud .

    הפעלת Cloud Shell

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

  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.

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

המסוף

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

    כניסה לדף Buckets

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

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

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

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

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

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

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

שורת הפקודה

  1. מפעילים את Cloud Shell במסוף Google Cloud .

    הפעלת Cloud Shell

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

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

  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.

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