인증 시작하기

이 문서에서는 Cloud API에 인증하기 위한 권장 방법을 보여줍니다.

인증은 클라이언트의 ID를 확인하는 프로세스를 의미합니다. 승인은 인증된 클라이언트가 특정 리소스 집합에 대해 갖는 권한을 확인하는 프로세스를 의미합니다. 즉, 인증은 누구인지를 확인하고 승인은 무엇을 할 수 있는지를 확인합니다.

인증에는 서비스 계정(특정 사용자가 아닌 GCP 프로젝트와 연결된 Google 계정)을 사용하는 것이 좋습니다. 서비스 계정은 사용자의 코드가 로컬, Compute Engine, App Engine, 온프레미스 등 어디에서 실행되든 관계없이 인증에 사용할 수 있습니다. 다른 인증 유형에 대한 자세한 내용은 인증 개요를 참조하세요.

서비스 계정 만들기

환경 변수 설정

서비스 계정을 사용하려면 환경 변수를 설정해야 합니다.

환경 변수 GOOGLE_APPLICATION_CREDENTIALS를 설정하여 애플리케이션 코드에 사용자 인증 정보를 제공합니다. [PATH]를 서비스 계정 키가 포함된 JSON 파일의 파일 경로로 바꾸고 [FILE_NAME]을 파일 이름으로 바꿉니다. 이 변수는 현재 셸 세션에만 적용되므로 새 세션을 연 경우 변수를 다시 설정합니다.

Linux 또는 macOS

export GOOGLE_APPLICATION_CREDENTIALS="[PATH]"

예:

export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/[FILE_NAME].json"

Windows

PowerShell:

$env:GOOGLE_APPLICATION_CREDENTIALS="[PATH]"

예:

$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\[FILE_NAME].json"

명령 프롬프트:

set GOOGLE_APPLICATION_CREDENTIALS=[PATH]

환경 변수를 설정하면 배포할 때 애플리케이션 코드를 변경하지 않고도 애플리케이션과 별개로 사용자 인증 정보를 제공할 수 있습니다. 또는 코드에서 서비스 계정 키 파일 경로를 명시적으로 지정할 수 있습니다. 자세한 내용은 프로덕션 가이드를 참조하세요.

인증 확인

환경 변수를 설정한 후 Google Cloud 클라이언트 라이브러리를 사용할 때 코드에 사용자 인증 정보를 명시적으로 지정할 필요가 없습니다. 클라이언트 라이브러리는 암묵적으로 사용자 인증 정보를 확인합니다. 이러한 이유로, 환경 변수를 설정한 후 다음 예와 같은 클라이언트 라이브러리를 실행하여 인증 작동을 확인할 수 있습니다. 요청이 성공하면 인증이 작동하는 것입니다.

다음 예를 실행하려면 Cloud Storage 클라이언트 라이브러리를 설치해야 합니다.

C#

public object AuthImplicit(string projectId)
{
    // If you don't specify credentials when constructing the client, the
    // client library will look for credentials in the environment.
    var credential = GoogleCredential.GetApplicationDefault();
    var storage = StorageClient.Create(credential);
    // Make an authenticated API request.
    var buckets = storage.ListBuckets(projectId);
    foreach (var bucket in buckets)
    {
        Console.WriteLine(bucket.Name);
    }
    return null;
}

Go

// implicit uses Application Default Credentials to authenticate.
func implicit() {
	ctx := context.Background()

	// For API packages whose import path is starting with "cloud.google.com/go",
	// such as cloud.google.com/go/storage in this case, if there are no credentials
	// provided, the client library will look for credentials in the environment.
	storageClient, err := storage.NewClient(ctx)
	if err != nil {
		log.Fatal(err)
	}

	it := storageClient.Buckets(ctx, "project-id")
	for {
		bucketAttrs, err := it.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			log.Fatal(err)
		}
		fmt.Println(bucketAttrs.Name)
	}

	// For packages whose import path is starting with "google.golang.org/api",
	// such as google.golang.org/api/cloudkms/v1, use the
	// golang.org/x/oauth2/google package as shown below.
	oauthClient, err := google.DefaultClient(ctx, cloudkms.CloudPlatformScope)
	if err != nil {
		log.Fatal(err)
	}

	kmsService, err := cloudkms.New(oauthClient)
	if err != nil {
		log.Fatal(err)
	}

	_ = kmsService
}

자바

// If you don't specify credentials when constructing the client, the
// client library will look for credentials in the environment.

Storage storage = StorageOptions.getDefaultInstance().getService();

Page<Bucket> buckets = storage.list();
for (Bucket bucket : buckets.iterateAll()) {
  // do something with the info
}

Node.js

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

// Instantiates a client. If you don't specify credentials when constructing
// the client, the client library will look for credentials in the
// environment.
const storage = new Storage();

// Makes an authenticated API request.
storage
  .getBuckets()
  .then(results => {
    const buckets = results[0];

    console.log('Buckets:');
    buckets.forEach(bucket => {
      console.log(bucket.name);
    });
  })
  .catch(err => {
    console.error('ERROR:', err);
  });

PHP

namespace Google\Cloud\Samples\Auth;

// Imports the Cloud Storage client library.
use Google\Cloud\Storage\StorageClient;

function auth_cloud_implicit($projectId)
{
    $config = [
        'projectId' => $projectId,
    ];

    # If you don't specify credentials when constructing the client, the
    # client library will look for credentials in the environment.
    $storage = new StorageClient($config);

    # Make an authenticated API request (listing storage buckets)
    foreach ($storage->buckets() as $bucket) {
        printf('Bucket: %s' . PHP_EOL, $bucket->name());
    }
}

Python

def implicit():
    from google.cloud import storage

    # If you don't specify credentials when constructing the client, the
    # client library will look for credentials in the environment.
    storage_client = storage.Client()

    # Make an authenticated API request
    buckets = list(storage_client.list_buckets())
    print(buckets)

Ruby

# project_id = "Your Google Cloud project ID"

require "google/cloud/storage"

# If you don't specify credentials when constructing the client, the client
# library will look for credentials in the environment.
storage = Google::Cloud::Storage.new project: project_id

# Make an authenticated API request
storage.buckets.each do |bucket|
  puts bucket.name
end

다음 단계

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

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