שימוש במניעת גישה ציבורית

סקירה כללית

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

לפני שמתחילים

לפני שמשתמשים במניעת גישה ציבורית ב-Cloud Storage, צריך לוודא שיש לכם את תפקיד ה-IAM הנדרש ולעיין בשיקולים לגבי אכיפת מניעת גישה ציבורית.

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

כדי שתוכלו לנהל את מדיניות הארגון למניעת גישה ציבורית לנתונים ברמת הפרויקט, התיקייה או הארגון, בקשו מהאדמין להקצות לכם את התפקיד Organization Policy Administrator (אדמין מדיניות ארגונית) ‏(roles/orgpolicy.policyAdmin) בארגון. התפקיד המוגדר מראש הזה מכיל את ההרשאות שנדרשות לניהול מניעת גישה ציבורית ברמת הפרויקט, התיקייה או הארגון. מידע על ההרשאות שכלולות בתפקיד הזה מופיע בפרטים על התפקיד Organization Administrator.

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

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

  • storage.buckets.update
  • storage.buckets.setIamPolicy

מידע על ההרשאות האחרות שכלולות בתפקיד אדמין באחסון מופיע במאמר פרטים על התפקיד אדמין באחסון.

שיקולים לבדיקה

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

שימוש בהגדרת הקטגוריה

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

הגדרה של מניעת גישה ציבורית

כדי לשנות את ההגדרה של מניעת הגישה הציבורית לקטגוריה מסוימת:

המסוף

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

    כניסה לדף Buckets

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

  3. בדף Bucket details, לוחצים על הכרטיסייה Permissions.

  4. בכרטיס Public access, לוחצים על Prevent public access כדי לאכוף מניעת גישה ציבורית, או על Allow Public access כדי להסיר את מניעת הגישה הציבורית.

  5. לוחצים על אישור.

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

שורת הפקודה

משתמשים בפקודה gcloud storage buckets update עם הדגל המתאים:

gcloud storage buckets update gs://BUCKET_NAME FLAG

כאשר:

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

  • FLAG הוא --public-access-prevention כדי להפעיל מניעת גישה ציבורית, או --no-public-access-prevention כדי להשבית אותה.

אם הפעולה בוצעה ללא שגיאות, התגובה תיראה דומה לדוגמה הבאה:

Updating gs://my-bucket/...
  Completed 1  

ספריות לקוח

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) {
  gcs::BucketIamConfiguration configuration;
  configuration.public_access_prevention =
      gcs::PublicAccessPreventionEnforced();
  StatusOr<gcs::BucketMetadata> updated = client.PatchBucket(
      bucket_name, gcs::BucketMetadataPatchBuilder().SetIamConfiguration(
                       std::move(configuration)));
  if (!updated) throw std::move(updated).status();

  std::cout << "Public Access Prevention is set to 'enforced' for "
            << updated->name() << "\n";
}

הדוגמה הבאה מגדירה את מניעת הגישה הציבורית כ-inherited בקטגוריה מסוימת:

namespace gcs = ::google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string const& bucket_name) {
  gcs::BucketIamConfiguration configuration;
  configuration.public_access_prevention =
      gcs::PublicAccessPreventionInherited();
  auto updated = client.PatchBucket(
      bucket_name, gcs::BucketMetadataPatchBuilder().SetIamConfiguration(
                       std::move(configuration)));
  if (!updated) throw std::move(updated).status();

  std::cout << "Public Access Prevention is set to 'inherited' for "
            << updated->name() << "\n";
}

C#

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

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

הדוגמה הבאה אוכפת את מניעת הגישה הציבורית בקטגוריה מסוימת:


using Google.Apis.Storage.v1.Data;
using Google.Cloud.Storage.V1;
using System;

public class SetPublicAccessPreventionEnforcedSample
{
    public Bucket SetPublicAccessPreventionEnforced(string bucketName = "your-unique-bucket-name")
    {
        var storage = StorageClient.Create();
        var bucket = storage.GetBucket(bucketName);

        // Set public access prevention to "enforced" for the bucket.
        bucket.IamConfiguration.PublicAccessPrevention = "enforced";
        bucket = storage.UpdateBucket(bucket);

        Console.WriteLine($"Public access prevention is 'enforced' for {bucketName}.");
        return bucket;
    }
}

הדוגמה הבאה מגדירה את מניעת הגישה הציבורית כ-inherited בקטגוריה מסוימת:


using Google.Apis.Storage.v1.Data;
using Google.Cloud.Storage.V1;
using System;

public class SetPublicAccessPreventionInheritedSample
{
    public Bucket SetPublicAccessPreventionInherited(string bucketName = "your-unique-bucket-name")
    {
        var storage = StorageClient.Create();
        var bucket = storage.GetBucket(bucketName);

        // Sets public access prevention to "inherited" for the bucket.
        bucket.IamConfiguration.PublicAccessPrevention = "inherited";
        bucket = storage.UpdateBucket(bucket);

        Console.WriteLine($"Public access prevention is 'inherited' for {bucketName}.");
        return bucket;
    }
}

Go

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

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

הדוגמה הבאה אוכפת את מניעת הגישה הציבורית בקטגוריה מסוימת:

import (
	"context"
	"fmt"
	"io"
	"time"

	"cloud.google.com/go/storage"
)

// setPublicAccessPreventionEnforced sets public access prevention to
// "enforced" for the bucket.
func setPublicAccessPreventionEnforced(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()

	ctx, cancel := context.WithTimeout(ctx, time.Second*10)
	defer cancel()

	bucket := client.Bucket(bucketName)
	setPublicAccessPrevention := storage.BucketAttrsToUpdate{
		PublicAccessPrevention: storage.PublicAccessPreventionEnforced,
	}
	if