查看由用户过滤的 Cloud Storage 存储桶访问中的对象的访问控制列表 (ACL)。
代码示例
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
namespace gcs = ::google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string const& bucket_name,
std::string const& object_name, std::string const& entity) {
StatusOr<gcs::ObjectAccessControl> acl =
client.GetObjectAcl(bucket_name, object_name, entity);
if (!acl) throw std::move(acl).status();
std::cout << "ACL entry for " << acl->entity() << " in object "
<< acl->object() << " in bucket " << acl->bucket() << " is "
<< *acl << "\n";
}
C#
如需了解详情,请参阅 Cloud Storage C# API 参考文档。
using Google.Apis.Storage.v1.Data;
using Google.Cloud.Storage.V1;
using System;
using System.Collections.Generic;
using System.Linq;
public class PrintFileAclForUserSample
{
public IEnumerable<ObjectAccessControl> PrintFileAclForUser(
string bucketName = "your-unique-bucket-name",
string objectName = "your-object-name",
string userEmail = "user@iam.gserviceaccount.com")
{
var storage = StorageClient.Create();
var storageObject = storage.GetObject(bucketName, objectName, new GetObjectOptions
{
Projection = Projection.Full
});
var fileAclForUser = storageObject.Acl.Where((acl) => acl.Entity == $"user-{userEmail}");
foreach (var acl in fileAclForUser)
{
Console.WriteLine($"{acl.Role}:{acl.Entity}");
}
return fileAclForUser;
}
}
Go
如需了解详情,请参阅 Cloud Storage Go API 参考文档。
import (
"context"
"fmt"
"io"
"cloud.google.com/go/storage"
)
// printFileACLForUser lists ACL of the specified object with filter.
func printFileACLForUser(w io.Writer, bucket, object string, entity storage.ACLEntity) error {
// bucket := "bucket-name"
// object := "object-name"
// entity := storage.AllAuthenticatedUsers
ctx := context.Background()
client, err := storage.NewClient(ctx)
if err != nil {
return fmt.Errorf("storage.NewClient: %v", err)
}
defer client.Close()
rules, err := client.Bucket(bucket).ACL().List(ctx)
if err != nil {
return fmt.Errorf("ACLHandle.List: %v", err)
}
for _, r := range rules {
if r.Entity == entity {
fmt.Fprintf(w, "ACL rule role: %v\n", r.Role)
}
}
return nil
}
Java
如需了解详情,请参阅 Cloud Storage Java API 参考文档。
import com.google.cloud.storage.Acl;
import com.google.cloud.storage.Acl.User;
import com.google.cloud.storage.Blob;
import com.google.cloud.storage.BlobId;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;
public class PrintFileAclForUser {
public static void printFileAclForUser(String bucketName, String blobName, String userEmail) {
// The ID to give your GCS bucket
// String bucketName = "your-unique-bucket-name";
// The name of the blob/file that you wish to view Acls of
// String blobName = "your-blob-name";
// The email of the user whose acl is being retrieved.
// String userEmail = "someuser@domain.com"
Storage storage = StorageOptions.newBuilder().build().getService();
Blob blob = storage.get(BlobId.of(bucketName, blobName));
Acl blobAcl = blob.getAcl(new User(userEmail));
if (blobAcl != null) {
String userRole = blobAcl.getRole().name();
System.out.println("User " + userEmail + " has role " + userRole);
} else {
System.out.println("User " + userEmail + " not found");
}
}
}
Node.js
如需了解详情,请参阅 Cloud Storage Node.js API 参考文档。
/**
* TODO(developer): Uncomment the following lines before running the sample.
*/
// The ID of your GCS bucket
// const bucketName = 'your-unique-bucket-name';
// The ID of your GCS file
// const fileName = 'your-file-name';
// The email address of the user to check
// const userEmail = 'user-email-to-check';
// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');
// Creates a client
const storage = new Storage();
async function printFileAclForUser() {
const options = {
// Specify the user
entity: `user-${userEmail}`,
};
// Gets the user's ACL for the file
const [aclObject] = await storage
.bucket(bucketName)
.file(fileName)
.acl.get(options);
console.log(`${aclObject.role}: ${aclObject.entity}`);
}
printFileAclForUser().catch(console.error);
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
use Google\Cloud\Storage\StorageClient;
/**
* Print an entity role for a file ACL.
*
* @param string $bucketName The name of your Cloud Storage bucket.
* (e.g. 'my-bucket')
* @param string $objectName The name of your Cloud Storage object.
* (e.g. 'my-object')
* @param string $entity The entity for which to query access controls.
* (e.g. 'user-example@domain.com')
*/
function print_file_acl_for_user(
string $bucketName,
string $objectName,
string $entity
): void {
$storage = new StorageClient();
$bucket = $storage->bucket($bucketName);
$object = $bucket->object($objectName);
$acl = $object->acl();
$item = $acl->get(['entity' => $entity]);
printf('%s: %s' . PHP_EOL, $item['entity'], $item['role']);
}
Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
from google.cloud import storage
def print_blob_acl_for_user(bucket_name, blob_name, user_email):
"""Prints out a blob's access control list for a given user."""
storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)
blob = bucket.blob(blob_name)
# Reload fetches the current ACL from Cloud Storage.
blob.acl.reload()
# You can also use `group`, `domain`, `all_authenticated` and `all` to
# get the roles for different types of entities.
roles = blob.acl.user(user_email).get_roles()
print(roles)
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
# The ID of your GCS bucket
# bucket_name = "your-unique-bucket-name"
# file_name = "Name of a file in the Storage bucket"
# email = "Google Cloud Storage ACL Entity email"
require "google/cloud/storage"
storage = Google::Cloud::Storage.new
bucket = storage.bucket bucket_name
file = bucket.file file_name
puts "Permissions for #{email}:"
puts "OWNER" if file.acl.owners.include? email
puts "READER" if file.acl.readers.include? email
后续步骤
如需搜索和过滤其他 Google Cloud 产品的代码示例,请参阅 Google Cloud 示例浏览器。