Cloud IAM 권한 사용

이 페이지에서는 Cloud IAM(Cloud Identity and Access Management) 권한을 통해 버킷과 객체에 대한 액세스를 제어하는 방법을 설명합니다. Cloud IAM을 사용하면 버킷과 객체에 액세스한 사용자를 제어할 수 있습니다. Cloud Storage용 Cloud IAM에 대한 자세한 내용은 Cloud IAM 개요를 참조하세요.

버킷과 객체에 대한 액세스를 제어하는 다른 방법은 액세스 제어 개요를 참조하세요. 버킷의 개별 객체에 대한 액세스를 제어하는 방법은 액세스 제어 목록을 참조하세요.

버킷에 Cloud IAM 사용

다음 섹션에서는 버킷을 대상으로 기본적인 Cloud IAM 작업을 완료하는 방법을 보여줍니다.

버킷 수준 정책에 구성원 추가

Cloud Storage에 연결된 역할의 목록은 Cloud IAM 역할을 참조하세요. Cloud IAM 역할이 부여되는 항목에 대한 자세한 내용은 구성원 유형을 참조하세요.

Console

  1. Google Cloud Platform Console에서 Cloud Storage 브라우저를 엽니다.
    Cloud Storage 브라우저 열기
  2. 구성원에게 역할을 부여할 버킷과 연관된 드롭다운 메뉴를 클릭합니다.

    드롭다운 메뉴는 버킷 행 오른쪽 끝에 세로로 나열된 세 개의 점으로 나타납니다.

  3. 버킷 권한 수정을 선택합니다.

  4. 구성원 추가 필드에 버킷에 액세스해야 하는 ID를 한 개 이상 입력합니다.

    구성원 추가 대화상자

  5. 역할 선택 드롭다운 메뉴에서 역할을 한 개 이상 선택합니다. 선택한 역할 및 부여되는 권한에 대한 간단한 설명이 창에 표시됩니다.

  6. 추가를 클릭합니다.

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.

자바

자세한 내용은 Cloud Storage 자바 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 정책 보기

Console

  1. Google Cloud Platform Console에서 Cloud Storage 브라우저를 엽니다.
    Cloud Storage 브라우저 열기
  2. 역할 구성원을 확인할 버킷과 연관된 드롭다운 메뉴를 클릭합니다.

    드롭다운 메뉴는 버킷 이름 오른쪽 끝에 세로로 나열된 세 개의 점으로 나타납니다.

  3. 버킷 권한 수정을 선택합니다.

  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))
}

자바

자세한 내용은 Cloud Storage 자바 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에서 승인 액세스 토큰을 가져옵니다. OAuth 사용자 인증 정보를 사용하도록 Playground를 구성합니다.
  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입니다.

버킷 수준 정책에서 구성원 삭제

Console

  1. Google Cloud Platform Console에서 Cloud Storage 브라우저를 엽니다.
    Cloud Storage 브라우저 열기
  2. 구성원의 역할을 삭제할 버킷과 연관된 드롭다운 메뉴를 클릭합니다.

    드롭다운 메뉴는 버킷 이름 오른쪽 끝에 세로로 나열된 세 개의 점으로 나타납니다.

  3. 버킷 권한 수정을 선택합니다.

  4. 삭제할 구성원이 포함된 역할을 확장합니다.

  5. 구성원 위에 마우스를 올려놓고 표시되는 휴지통 아이콘을 클릭합니다.

    프로젝트에서 구성원 삭제

  6. 오버레이 창이 나타나면 삭제를 클릭합니다.

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.

자바

자세한 내용은 Cloud Storage 자바 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에서 승인 액세스 토큰을 가져옵니다. OAuth 사용자 인증 정보를 사용하도록 Playground를 구성합니다.
  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 역할이 부여되는 항목에 대한 자세한 내용은 구성원 유형을 참조하세요.

Console

  1. Google Cloud Platform Console에서 IAM 및 관리자 브라우저를 엽니다.
    IAM 및 관리자 브라우저 열기
  2. 구성원을 추가할 프로젝트를 선택합니다.

    프로젝트에 구성원 추가

  3. 구성원 추가 대화상자에서 액세스 권한을 부여할 항목의 이름을 지정합니다.

    구성원 추가 대화상자

  4. 역할 선택 드롭다운에서 팀원에 대한 적절한 권한을 설정합니다.

    Cloud Storage 버킷 및 객체에 영향을 미치는 역할은 프로젝트 및 저장소 하위 메뉴에 있습니다.

  5. 추가를 클릭합니다.

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 정책 보기

Console

  1. Google Cloud Platform Console에서 IAM 및 관리자 브라우저를 엽니다.
    IAM 및 관리자 브라우저 열기
  2. 보려는 정책이 있는 프로젝트를 선택합니다.

  3. 개별 역할과 연관된 드롭다운을 사용하여 역할이 있는 구성원을 확인하거나 구성원 검색 대화상자를 사용하여 결과를 필터링합니다.

gsutil

프로젝트 수준 Cloud IAM 정책은 Google Cloud SDK에 속해 있는 gcloud 명령어를 통해 관리됩니다. 프로젝트의 Cloud IAM 정책을 보려면 gcloud beta projects get-iam-policy 명령어를 사용하세요.

JSON

  1. OAuth 2.0 Playground에서 승인 액세스 토큰을 가져옵니다. OAuth 사용자 인증 정보를 사용하도록 Playground를 구성합니다.
  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입니다.

프로젝트 수준 정책에서 구성원 삭제

Console

  1. Google Cloud Platform Console에서 IAM 및 관리자 브라우저를 엽니다.
    IAM 및 관리자 브라우저 열기
  2. 구성원을 삭제할 프로젝트를 선택합니다.

    프로젝트에 구성원 추가

  3. 구성원 검색 대화상자에서 액세스 권한을 삭제할 구성원 이름을 지정합니다.

  4. 검색 아래의 결과에서 삭제할 구성원에 마우스를 올려 놓고 표시되는 휴지통 아이콘을 클릭합니다.

    프로젝트에서 구성원 삭제

  5. 오버레이 창이 나타나면 삭제를 클릭합니다.

gsutil

프로젝트 수준 Cloud IAM 정책은 Google Cloud SDK에 속해 있는 gcloud 명령어를 통해 관리됩니다. 프로젝트 수준 정책을 삭제하려면 gcloud beta projects remove-iam-policy-binding을 사용하세요.

JSON

  1. OAuth 2.0 Playground에서 승인 액세스 토큰을 가져옵니다. OAuth 사용자 인증 정보를 사용하도록 Playground를 구성합니다.
  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입니다.

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.