使用 Cloud IAM 權限

本頁說明如何使用 Cloud Identity and Access Management (Cloud IAM) 權限控管值區和物件的存取權。您可以使用 Cloud IAM 管理要讓哪些人存取您的值區和物件。如要進一步瞭解 Cloud Storage 適用的 Cloud IAM,請參閱 Cloud IAM 總覽

如要進一步瞭解其他控管值區和物件存取權的方式,請參閱存取權控管總覽。如要瞭解如何控管您值區中個別物件的存取權,請參閱存取控制清單 (ACL)

針對值區使用 Cloud IAM

以下各節說明如何在值區中完成基本的 Cloud IAM 工作。

將成員新增至值區層級政策

如需和 Cloud Storage 有關的角色清單,請參閱 Cloud IAM 角色。如要瞭解您授予 Cloud IAM 角色的實體,請參閱成員類型

主控台

  1. 在 Google Cloud Platform Console 中開啟 Cloud Storage 瀏覽器。
    開啟 Cloud Storage 瀏覽器
  2. 針對您想要將角色授予成員的值區,按一下相應的下拉式選單。

    點選值區資料欄最右側的三個垂直圓點,下拉式選單就會出現。

  3. 選擇 [Edit bucket permissions] (編輯 Bucket 權限)。

  4. 在 [Add members] (新增成員) 欄位中,輸入需要存取值區的一或多個身分。

    「Add member」(新增成員) 對話方塊。

  5. 從「Select a role」(請選取角色) 下拉式選單中選取一或多個角色。您選取的角色會顯示在面板中,系統還會針對這些角色所授予的權限提供簡短說明。

  6. 按一下 [Add] (新增)。

gsutil

使用 gsutil iam ch 指令:

gsutil iam ch [MEMBER_TYPE]:[MEMBER_NAME]:[IAM_ROLE] gs://[BUCKET_NAME]

其中:

  • [MEMBER_TYPE] 是您要授予值區存取權的成員類型。例如:user
  • [MEMBER_NAME] 是您要授予值區存取權的成員名稱。例如:jane@gmail.com
  • [IAM_ROLE] 是您授予成員的 IAM 角色。例如:roles/storage.objectCreator
  • [BUCKET_NAME] 是您授予成員存取權的值區名稱。例如:my-bucket

如需如何設定 [MEMBER_TYPE]:[MEMBER_NAME]:[IAM_ROLE] 格式的更多範例,請參閱 gsutil iam ch 參考資料頁面。

程式碼範例

C++

詳情請參閱 Cloud Storage C++ API 參考說明文件

namespace gcs = google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string bucket_name, std::string role,
   std::string member) {
  auto policy = client.GetNativeBucketIamPolicy(bucket_name);

  if (!policy) {
    throw std::runtime_error(policy.status().message());
  }

  for (auto& binding : policy->bindings()) {
    if (binding.role() != role) {
      continue;
    }
    auto& members = binding.members();
    if (std::find(members.begin(), members.end(), member) == members.end()) {
      members.emplace_back(member);
    }
  }

  auto updated_policy = client.SetNativeBucketIamPolicy(bucket_name, *policy);

  if (!updated_policy) {
    throw std::runtime_error(updated_policy.status().message());
  }

  std::cout << "Updated IAM policy bucket " << bucket_name
            << ". The new policy is " << *updated_policy << "\n";
}

C#

詳情請參閱 Cloud Storage C# API 參考說明文件

private void AddBucketIamMember(string bucketName,
    string role, string member)
{
    var storage = StorageClient.Create();
    var policy = storage.GetBucketIamPolicy(bucketName);
    Policy.BindingsData bindingToAdd = new Policy.BindingsData();
    bindingToAdd.Role = role;
    string[] members = { member };
    bindingToAdd.Members = members;
    policy.Bindings.Add(bindingToAdd);
    storage.SetBucketIamPolicy(bucketName, policy);
    Console.WriteLine($"Added {member} with role {role} "
        + $"to {bucketName}");
}

Go

詳情請參閱 Cloud Storage Go API 參考說明文件

bucket := c.Bucket(bucketName)
policy, err := bucket.IAM().Policy(ctx)
if err != nil {
	return err
}
// Other valid prefixes are "serviceAccount:", "user:"
// See the documentation for more values.
// https://cloud.google.com/storage/docs/access-control/iam
policy.Add("group:cloud-logs@google.com", "roles/storage.objectViewer")
if err := bucket.IAM().SetPolicy(ctx, policy); err != nil {
	return err
}
// NOTE: It may be necessary to retry this operation if IAM policies are
// being modified concurrently. SetPolicy will return an error if the policy
// was modified since it was retrieved.

Java

詳情請參閱 Cloud Storage Java API 參考說明文件

// Initialize a Cloud Storage client
Storage storage = StorageOptions.getDefaultInstance().getService();

// Get IAM Policy for a bucket
Policy policy = storage.getIamPolicy(bucketName);

// Add identity to Bucket-level IAM role
Policy updatedPolicy =
    storage.setIamPolicy(bucketName, policy.toBuilder().addIdentity(role, identity).build());

if (updatedPolicy.getBindings().get(role).contains(identity)) {
  System.out.printf("Added %s with role %s to %s\n", identity, role, bucketName);
}

Node.js

詳情請參閱 Cloud Storage Node.js API 參考說明文件

// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const bucketName = 'Name of a bucket, e.g. my-bucket';
// const roleName = 'Role to grant, e.g. roles/storage.objectViewer';
// const members = [
//   'user:jdoe@example.com',    // Example members to grant
//   'group:admins@example.com', // the new role to
// ];

// Creates a client
const storage = new Storage();

// Get a reference to a Google Cloud Storage bucket
const bucket = storage.bucket(bucketName);

// Gets and updates the bucket's IAM policy
const [policy] = await bucket.iam.getPolicy();

// Adds the new roles to the bucket's IAM policy
policy.bindings.push({
  role: roleName,
  members: members,
});

// Updates the bucket's IAM policy
await bucket.iam.setPolicy(policy);

console.log(
  `Added the following member(s) with role ${roleName} to ${bucketName}:`
);

members.forEach(member => {
  console.log(`  ${member}`);
});

PHP

詳情請參閱 Cloud Storage PHP API 參考說明文件

use Google\Cloud\Storage\StorageClient;

/**
 * Adds a new member / role IAM pair to a given Cloud Storage bucket.
 *
 * @param string $bucketName the name of your Cloud Storage bucket.
 * @param string $role the role you want to add a given member to.
 * @param string $member the member you want to give the new role for the Cloud
 * Storage bucket.
 *
 * @return void
 */
function add_bucket_iam_member($bucketName, $role, $member)
{
    $storage = new StorageClient();
    $bucket = $storage->bucket($bucketName);

    $policy = $bucket->iam()->policy();

    $policy['bindings'][] = [
        'role' => $role,
        'members' => [$member]
    ];

    $bucket->iam()->setPolicy($policy);

    printf('User %s added to role %s for bucket %s' . PHP_EOL, $member, $role, $bucketName);
}

Python

詳情請參閱 Cloud Storage Python API 參考說明文件

def add_bucket_iam_member(bucket_name, role, member):
    storage_client = storage.Client()
    bucket = storage_client.bucket(bucket_name)

    policy = bucket.get_iam_policy()

    policy[role].add(member)

    bucket.set_iam_policy(policy)

    print('Added {} with role {} to {}.'.format(
         member, role, bucket_name))

Ruby

詳情請參閱 Cloud Storage Ruby API 參考說明文件

# project_id  = "Your Google Cloud project ID"
# bucket_name = "Your Google Cloud Storage bucket name"
# role        = "Bucket-level IAM role"
# member      = "Bucket-level IAM member"

require "google/cloud/storage"

storage = Google::Cloud::Storage.new project_id: project_id
bucket = storage.bucket bucket_name

bucket.policy do |policy|
  policy.add role, member
end

puts "Added #{member} with role #{role} to #{bucket_name}"

JSON

  1. OAuth 2.0 Playground 取得授權存取憑證。將 Playground 設為使用自己的 OAuth 憑證。
  2. 建立包含下列資訊的 .json 檔案:

    {
      "bindings":[
        {
          "role": "[IAM_ROLE]",
          "members":[
            "[MEMBER_NAME]"
          ]
        }
      ]
    }

    其中:

    • [IAM_ROLE] 是您授予成員的 IAM 角色。例如:roles/storage.objectCreator
    • [MEMBER_NAME] 是您要授予值區存取權的成員名稱。例如:jane@gmail.com

      如要進一步瞭解如何設定 [MEMBER_NAME] 的格式,請參閱這個網頁的「成員」部分。

  3. 使用 cURL 來透過 PUT setIamPolicy 要求呼叫呼叫 JSON API

    curl -X PUT --data-binary @[JSON_FILE_NAME].json \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      -H "Content-Type: application/json" \
      "https://www.googleapis.com/storage/v1/b/[BUCKET_NAME]/iam"

    其中:

    • [JSON_FILE_NAME] 是您在步驟 2 建立的檔案名稱。
    • [OAUTH2_TOKEN] 是您在步驟 1 中產生的存取憑證。
    • [BUCKET_NAME] 是您要授予成員存取權的值區名稱。例如:my-bucket

查看值區的 Cloud IAM 政策

主控台

  1. 在 Google Cloud Platform Console 中開啟 Cloud Storage 瀏覽器。
    開啟 Cloud Storage 瀏覽器
  2. 針對您想要查看角色成員的值區,按一下相應的下拉式選單。

    點選值區名稱最右側的三個垂直圓點,下拉式選單就會出現。

  3. 選擇 [Edit bucket permissions] (編輯 Bucket 權限)。

  4. 展開想要檢視的角色,查看哪些成員已具備該角色。

  5. (選用) 使用搜尋列,依據角色或成員篩選結果。

    如果您依成員進行搜尋,結果會顯示該成員已獲指派的所有角色。

gsutil

使用 gsutil iam get 指令:

gsutil iam get gs://[BUCKET_NAME]

其中 [BUCKET_NAME] 是您要查看其 Cloud IAM 政策的值區名稱。例如:my-bucket

程式碼範例

C++

詳情請參閱 Cloud Storage C++ API 參考說明文件

namespace gcs = google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string bucket_name) {
  auto policy = client.GetNativeBucketIamPolicy(bucket_name);

  if (!policy) {
    throw std::runtime_error(policy.status().message());
  }

  std::cout << "The IAM policy for bucket " << bucket_name << " is "
            << *policy << "\n";
}

C#

詳情請參閱 Cloud Storage C# API 參考說明文件

private void ViewBucketIamMembers(string bucketName)
{
    var storage = StorageClient.Create();
    var policy = storage.GetBucketIamPolicy(bucketName);
    foreach (var binding in policy.Bindings)
    {
        Console.WriteLine($"  Role: {binding.Role}");
        Console.WriteLine("  Members:");
        foreach (var member in binding.Members)
        {
            Console.WriteLine($"    {member}");
        }
    }
}

Go

詳情請參閱 Cloud Storage Go API 參考說明文件

policy, err := c.Bucket(bucketName).IAM().Policy(ctx)
if err != nil {
	return nil, err
}
for _, role := range policy.Roles() {
	log.Printf("%q: %q", role, policy.Members(role))
}

Java

詳情請參閱 Cloud Storage Java API 參考說明文件

// Initialize a Cloud Storage client
Storage storage = StorageOptions.getDefaultInstance().getService();

// Get IAM Policy for a bucket
Policy policy = storage.getIamPolicy(bucketName);

// Print Roles and its identities
Map<Role, Set<Identity>> policyBindings = policy.getBindings();
for (Map.Entry<Role, Set<Identity>> entry : policyBindings.entrySet()) {
  System.out.printf("Role: %s Identities: %s\n", entry.getKey(), entry.getValue());
}

Node.js

詳情請參閱 Cloud Storage Node.js API 參考說明文件

// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');

// Creates a client
const storage = new Storage();

/**
 * TODO(developer): Uncomment the following line before running the sample.
 */
// const bucketName = 'Name of a bucket, e.g. my-bucket';

// Gets and displays the bucket's IAM policy
const results = await storage.bucket(bucketName).iam.getPolicy();

const policy = results[0].bindings;

// Displays the roles in the bucket's IAM policy
console.log(`Roles for bucket ${bucketName}:`);
policy.forEach(role => {
  console.log(`  Role: ${role.role}`);
  console.log(`  Members:`);

  const members = role.members;
  members.forEach(member => {
    console.log(`    ${member}`);
  });
});

PHP

詳情請參閱 Cloud Storage PHP API 參考說明文件

use Google\Cloud\Storage\StorageClient;

/**
 * View Bucket IAM members for a given Cloud Storage bucket.
 *
 * @param string $bucketName the name of your Cloud Storage bucket.
 *
 * @return void
 */
function view_bucket_iam_members($bucketName)
{
    $storage = new StorageClient();
    $bucket = $storage->bucket($bucketName);

    $policy = $bucket->iam()->policy();

    printf('Printing Bucket IAM members for Bucket: %s' . PHP_EOL, $bucketName);
    printf(PHP_EOL);

    foreach ($policy['bindings'] as $binding) {
        printf('Role: %s' . PHP_EOL, $binding['role']);
        printf('Members:' . PHP_EOL);
        foreach ($binding['members'] as $member) {
            printf('  %s' . PHP_EOL, $member);
        }
        printf(PHP_EOL);
    }
}

Python

詳情請參閱 Cloud Storage Python API 參考說明文件

def view_bucket_iam_members(bucket_name):
    storage_client = storage.Client()
    bucket = storage_client.bucket(bucket_name)

    policy = bucket.get_iam_policy()

    for role in policy:
        members = policy[role]
        print('Role: {}, Members: {}'.format(role, members))

Ruby

詳情請參閱 Cloud Storage Ruby API 參考說明文件

# project_id  = "Your Google Cloud project ID"
# bucket_name = "Your Google Cloud Storage bucket name"

require "google/cloud/storage"

storage = Google::Cloud::Storage.new project_id: project_id
bucket = storage.bucket bucket_name

policy = bucket.policy

policy.roles.each do |role, members|
  puts "Role: #{role} Members: #{members}"
end

JSON

  1. OAuth 2.0 Playground 取得授權存取憑證。將 Playground 設為使用自己的 OAuth 憑證。
  2. 使用 cURL 來透過 GET getIamPolicy 要求呼叫呼叫 JSON API

    curl -X GET \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      "https://www.googleapis.com/storage/v1/b/[BUCKET_NAME]/iam"

    其中:

    • [OAUTH2_TOKEN] 是您在步驟 1 中產生的存取憑證。
    • [BUCKET_NAME] 是您要查看其 Cloud IAM 政策的值區名稱。例如:my-bucket

從值區層級政策中移除成員

主控台

  1. 在 Google Cloud Platform Console 中開啟 Cloud Storage 瀏覽器。
    開啟 Cloud Storage 瀏覽器
  2. 針對您想要移除成員角色的值區,按一下相應的下拉式選單。

    點選值區名稱最右側的三個垂直圓點,下拉式選單就會出現。

  3. 選擇 [Edit bucket permissions] (編輯 Bucket 權限)。

  4. 展開包含您欲移除成員的角色。

  5. 將滑鼠游標懸停在該成員上,然後點選隨即出現的「垃圾桶圖示」

    將成員從專案中移除。

  6. 在隨即出現的重疊視窗中,按一下 [Remove] (移除)

gsutil

使用 gsutil iam ch 指令並加上 -d 標記:

gsutil iam ch -d [MEMBER_TYPE]:[MEMBER_NAME] gs://[BUCKET_NAME]

其中:

  • [MEMBER_TYPE] 是您要從政策中刪除的成員類型。例如:user
  • [MEMBER_NAME] 是您要從政策中刪除的成員名稱。例如:jane@gmail.com
  • [BUCKET_NAME] 是您要從中移除成員存取權的值區名稱。例如:my-bucket

如需如何設定 [MEMBER_TYPE]:[MEMBER_NAME] 格式的更多範例,請參閱 gsutil iam ch 參考資料頁面。

程式碼範例

C++

詳情請參閱 Cloud Storage C++ API 參考說明文件

namespace gcs = google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string bucket_name, std::string role,
   std::string member) {
  auto policy = client.GetNativeBucketIamPolicy(bucket_name);
  if (!policy) {
    throw std::runtime_error(policy.status().message());
  }

  std::vector<google::cloud::storage::NativeIamBinding> updated_bindings;
  for (auto& binding : policy->bindings()) {
    auto& members = binding.members();
    if (binding.role() == role) {
      members.erase(std::remove(members.begin(), members.end(), member),
                    members.end());
    }
    if (!members.empty()) {
      updated_bindings.emplace_back(std::move(binding));
    }
  }
  policy->bindings() = std::move(updated_bindings);

  auto updated_policy = client.SetNativeBucketIamPolicy(bucket_name, *policy);

  if (!updated_policy) {
    throw std::runtime_error(updated_policy.status().message());
  }

  std::cout << "Updated IAM policy bucket " << bucket_name
            << ". The new policy is " << *updated_policy << "\n";
}

C#

詳情請參閱 Cloud Storage C# API 參考說明文件

private void RemoveBucketIamMember(string bucketName,
    string role, string member)
{
    var storage = StorageClient.Create();
    var policy = storage.GetBucketIamPolicy(bucketName);
    policy.Bindings.ToList().ForEach(response =>
    {
        if (response.Role == role)
        {
            // Remove the role/member combo from the IAM policy.
            response.Members = response.Members
                .Where(m => m != member).ToList();
            // Remove role if it contains no members.
            if (response.Members.Count == 0)
            {
                policy.Bindings.Remove(response);
            }
        }
    });
    // Set the modified IAM policy to be the current IAM policy.
    storage.SetBucketIamPolicy(bucketName, policy);
    Console.WriteLine($"Removed {member} with role {role} "
        + $"to {bucketName}");
}

Go

詳情請參閱 Cloud Storage Go API 參考說明文件

bucket := c.Bucket(bucketName)
policy, err := bucket.IAM().Policy(ctx)
if err != nil {
	return err
}
// Other valid prefixes are "serviceAccount:", "user:"
// See the documentation for more values.
// https://cloud.google.com/storage/docs/access-control/iam
policy.Remove("group:cloud-logs@google.com", "roles/storage.objectViewer")
if err := bucket.IAM().SetPolicy(ctx, policy); err != nil {
	return err
}
// NOTE: It may be necessary to retry this operation if IAM policies are
// being modified concurrently. SetPolicy will return an error if the policy
// was modified since it was retrieved.

Java

詳情請參閱 Cloud Storage Java API 參考說明文件

// Initialize a Cloud Storage client
Storage storage = StorageOptions.getDefaultInstance().getService();

// Get IAM Policy for a bucket
Policy policy = storage.getIamPolicy(bucketName);

// Remove an identity from a Bucket-level IAM role
Policy updatedPolicy =
    storage.setIamPolicy(bucketName, policy.toBuilder().removeIdentity(role, identity).build());

if (updatedPolicy.getBindings().get(role) == null
    || !updatedPolicy.getBindings().get(role).contains(identity)) {
  System.out.printf("Removed %s with role %s from %s\n", identity, role, bucketName);
}

Node.js

詳情請參閱 Cloud Storage Node.js API 參考說明文件

// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const bucketName = 'Name of a bucket, e.g. my-bucket';
// const roleName = 'Role to grant, e.g. roles/storage.objectViewer';
// const members = [
//   'user:jdoe@example.com',    // Example members to grant
//   'group:admins@example.com', // the new role to
// ];

// Creates a client
const storage = new Storage();

// Get a reference to a Google Cloud Storage bucket
const bucket = storage.bucket(bucketName);

// Gets and updates the bucket's IAM policy
const [policy] = await bucket.iam.getPolicy();

// Finds and updates the appropriate role-member group
const index = policy.bindings.findIndex(role => role.role === roleName);
const role = policy.bindings[index];
if (role) {
  role.members = role.members.filter(
    member => members.indexOf(member) === -1
  );

  // Updates the policy object with the new (or empty) role-member group
  if (role.members.length === 0) {
    policy.bindings.splice(index, 1);
  } else {
    policy.bindings.index = role;
  }

  // Updates the bucket's IAM policy
  await bucket.iam.setPolicy(policy);
} else {
  // No matching role-member group(s) were found
  throw new Error('No matching role-member group(s) found.');
}

console.log(
  `Removed the following member(s) with role ${roleName} from ${bucketName}:`
);
members.forEach(member => {
  console.log(`  ${member}`);
});

PHP

詳情請參閱 Cloud Storage PHP API 參考說明文件

use Google\Cloud\Core\Iam\PolicyBuilder;
use Google\Cloud\Storage\StorageClient;

/**
 * Removes a member / role IAM pair from a given Cloud Storage bucket.
 *
 * @param string $bucketName the name of your Cloud Storage bucket.
 * @param string $role the role you want to remove a given member from.
 * @param string $member the member you want to remove from the given role.
 *
 * @return void
 */
function remove_bucket_iam_member($bucketName, $role, $member)
{
    $storage = new StorageClient();
    $bucket = $storage->bucket($bucketName);
    $policy = $bucket->iam()->policy();
    $policyBuilder = new PolicyBuilder($policy);
    $policyBuilder->removeBinding($role, [$member]);

    $bucket->iam()->setPolicy($policyBuilder->result());
    printf('User %s removed from role %s for bucket %s' . PHP_EOL, $member, $role, $bucketName);
}

Python

詳情請參閱 Cloud Storage Python API 參考說明文件

def remove_bucket_iam_member(bucket_name, role, member):
    storage_client = storage.Client()
    bucket = storage_client.bucket(bucket_name)

    policy = bucket.get_iam_policy()

    policy[role].discard(member)

    bucket.set_iam_policy(policy)

    print('Removed {} with role {} from {}.'.format(
        member, role, bucket_name))

Ruby

詳情請參閱 Cloud Storage Ruby API 參考說明文件

# project_id  = "Your Google Cloud project ID"
# bucket_name = "Your Google Cloud Storage bucket name"
# role        = "Bucket-level IAM role"
# member      = "Bucket-level IAM member"

require "google/cloud/storage"

storage = Google::Cloud::Storage.new project_id: project_id
bucket = storage.bucket bucket_name

bucket.policy do |policy|
  policy.remove role, member
end

puts "Removed #{member} with role #{role} from #{bucket_name}"

JSON

  1. OAuth 2.0 Playground 取得授權存取憑證。將 Playground 設為使用自己的 OAuth 憑證。
  2. 取得已套用至專案的現有政策,方法是使用 cURL 透過 GET getIamPolicy 要求呼叫 JSON API

    curl -X GET \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      "https://www.googleapis.com/storage/v1/b/[BUCKET_NAME]/iam"

    其中:

    • [OAUTH2_TOKEN] 是您在步驟 1 中產生的存取憑證。
    • [BUCKET_NAME] 是您要查看其 Cloud IAM 政策的值區名稱。例如:my-bucket
  3. 建立一個 .json 檔案,其中須包含您在上個步驟擷取的政策。

  4. 編輯這個 .json 檔案,將成員從政策中移除。

  5. 使用 cURL 來透過 PUT setIamPolicy 要求呼叫呼叫 JSON API

    curl -X PUT --data-binary @[JSON_FILE_NAME].json \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      -H "Content-Type: application/json" \
      "https://www.googleapis.com/storage/v1/b/[BUCKET_NAME]/iam"

    其中:

    • [JSON_FILE_NAME] 是您在步驟 3 建立的檔案名稱。
    • [OAUTH2_TOKEN] 是您在步驟 1 中產生的存取憑證。
    • [BUCKET_NAME] 是您要從中移除成員存取權的值區名稱。例如:my-bucket

針對專案使用 Cloud IAM

以下各節說明如何在專案中完成基本的 Cloud IAM 工作。請注意,這些工作會使用和大多數 Cloud Storage 工作不同的指令列指令 (gcloud) 以及端點 (cloudresourcemanager.googleapis.com)。

將成員新增至專案層級政策

如需和 Cloud Storage 有關的角色清單,請參閱 Cloud IAM 角色。如要瞭解您授予 Cloud IAM 角色的實體,請參閱成員類型

主控台

  1. 在 Google Cloud Platform Console 中開啟「IAM & Admin」(IAM 與管理員) 瀏覽器。
    開啟「IAM & Admin」(IAM 與管理員) 瀏覽器
  2. 選取您想要新增成員的專案。

    將成員新增至專案。

  3. 在「Add members」(新增成員) 對話方塊中,指定您要授予存取權的實體名稱。

    「Add member」(新增成員) 對話方塊。

  4. 在「Select a role」(請選取角色) 下拉式選單中,為小組成員設定適當的權限。

    如要瞭解哪些角色會影響 Cloud Storage 值區及物件,請查看「Project」(專案) 及「Storage」(儲存空間) 子選單。

  5. 按一下 [Add] (新增)。

gsutil

如要管理專案層級的 Cloud IAM 政策,須使用隸屬於 Google Cloud SDK 的 gcloud 指令。如要新增專案層級的政策,則須使用 gcloud beta projects add-iam-policy-binding

JSON

  1. OAuth 2.0 Playground 取得授權存取憑證。將 Playground 設為使用自己的 OAuth 憑證。
  2. 建立包含下列資訊的 .json 檔案:

    {
      "policy": {
        "version": "0",
        "bindings": {
          "role": "[IAM_ROLE]",
          "members": "[MEMBER_NAME]"
        },
      }
    }

    其中:

    • [IAM_ROLE] 是您授予成員的 IAM 角色。例如:roles/storage.objectCreator
    • [MEMBER_NAME] 是您要授予專案存取權的成員類型和名稱。例如:user:jane@gmail.com
  3. 使用 cURL 透過 POST setIamPolicy 要求呼叫 Resource Manager API

    curl -X POST --data-binary @[JSON_FILE_NAME].json \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      -H "Content-Type: application/json" \
      "https://cloudresourcemanager.googleapis.com/v1/projects/[PROJECT_NAME]:setIamPolicy"

    其中:

    • [JSON_FILE_NAME] 是您在步驟 2 建立的檔案名稱。
    • [OAUTH2_TOKEN] 是您在步驟 1 中產生的存取憑證。
    • [PROJECT_NAME] 是您要授予成員存取權的專案名稱。例如:my-project

查看專案的 Cloud IAM 政策

主控台

  1. 在 Google Cloud Platform Console 中開啟「IAM & Admin」(IAM 與管理員) 瀏覽器。
    開啟「IAM & Admin」(IAM 與管理員) 瀏覽器
  2. 選取您想要查看政策的專案。

  3. 使用與個別角色相關的下拉式選單查看哪些使用者具備該角色,或是使用「Search members」(搜尋成員) 對話方塊篩選您的結果。

gsutil

如要管理專案層級的 Cloud IAM 政策,須使用隸屬於 Google Cloud SDK 的 gcloud 指令。如要查看專案的 Cloud IAM 政策,則須使用 gcloud beta projects get-iam-policy 指令。

JSON

  1. OAuth 2.0 Playground 取得授權存取憑證。將 Playground 設為使用自己的 OAuth 憑證。
  2. 使用 cURL 透過 POST getIamPolicy 要求呼叫 Resource Manager API

    curl -X POST \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      -H "Content-Length: 0" \
      "https://cloudresourcemanager.googleapis.com/v1/projects/[PROJECT_NAME]:getIamPolicy"

    其中:

    • [OAUTH2_TOKEN] 是您在步驟 1 中產生的存取憑證。
    • [PROJECT_NAME] 是您要授予成員存取權的專案名稱。例如:my-project

從專案層級政策中移除成員

主控台

  1. 在 Google Cloud Platform Console 中開啟「IAM & Admin」(IAM 與管理員) 瀏覽器。
    開啟「IAM & Admin」(IAM 與管理員) 瀏覽器
  2. 選取您想要移除成員的專案。

    將成員新增至專案。

  3. 在「Search members」(搜尋成員) 對話方塊中,指定您要移除存取權的成員名稱。

  4. 在下方的搜尋結果中,將滑鼠游標懸停在您要移除的成員上,然後點選隨即出現的「垃圾桶圖示」

    將成員從專案中移除。

  5. 在隨即出現的重疊視窗中,按一下 [Remove] (移除)

gsutil

如要管理專案層級的 Cloud IAM 政策,須使用隸屬於 Google Cloud SDK 的 gcloud 指令。如要移除專案層級的政策,則須使用 gcloud beta projects remove-iam-policy-binding

JSON

  1. OAuth 2.0 Playground 取得授權存取憑證。將 Playground 設為使用自己的 OAuth 憑證。
  2. 取得已套用至專案的現有政策,方法是使用 cURL 透過 POST getIamPolicy 要求呼叫 Resource Manager API

    curl -X POST \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      -H "Content-Length: 0" \
      "https://cloudresourcemanager.googleapis.com/v1/projects/[PROJECT_NAME]:getIamPolicy"

    其中:

    • [OAUTH2_TOKEN] 是您在步驟 1 中產生的存取憑證。
    • [PROJECT_NAME] 是您要為其新增成員存取權的專案名稱。例如:my-project
  3. 建立一個 .json 檔案,其中須包含您在上個步驟擷取的政策。

  4. 編輯這個 .json 檔案,將成員從政策中移除。

  5. 使用 cURL 透過 POST setIamPolicy 要求呼叫 Resource Manager API

    curl -X POST --data-binary @[JSON_FILE_NAME].json \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      -H "Content-Type: application/json" \
      "https://cloudresourcemanager.googleapis.com/v1/projects/[PROJECT_NAME]:setIamPolicy"

    其中:

    • [JSON_FILE_NAME] 是您在步驟 2 建立的檔案名稱。
    • [OAUTH2_TOKEN] 是您在步驟 1 中產生的存取憑證。
    • [PROJECT_NAME] 是您要授予成員存取權的專案名稱。例如:my-project

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Cloud Storage
需要協助嗎?請前往我們的支援網頁