Pub/Sub에 인증

이 문서에서는 Pub/Sub에 프로그래매틱 방식으로 인증하는 방법을 설명합니다. Pub/Sub 인증 방법은 API에 액세스하는 데 사용하는 인터페이스와 코드가 실행되는 환경에 따라 다릅니다.

참고: Cloud Pub/Sub는 인증 방법으로 API 키를 지원하지 않습니다.

Google Cloud 인증에 대한 자세한 내용은 인증 개요를 참조하세요.

API 액세스

Pub/Sub는 프로그래매틱 액세스를 지원합니다. 다음 방법으로 API에 액세스할 수 있습니다.

클라이언트 라이브러리

Pub/Sub 클라이언트 라이브러리는 Pub/Sub에 프로그래매틱 방식으로 인증하기 위한 고급 언어 지원을 제공합니다. Google Cloud API 호출을 인증하기 위해 클라이언트 라이브러리는 애플리케이션 기본 사용자 인증 정보(ADC)를 지원합니다. 라이브러리가 정의된 위치 집합에서 사용자 인증 정보를 찾고 이러한 사용자 인증 정보를 사용하여 API에 대한 요청을 인증합니다. ADC를 사용하면 애플리케이션 코드를 수정할 필요 없이 로컬 개발 또는 프로덕션과 같은 다양한 환경에서 애플리케이션에 사용자 인증 정보를 제공할 수 있습니다.

Google Cloud CLI

gcloud CLI를 사용하여 Pub/Sub에 액세스할 때 gcloud CLI 명령어에서 사용하는 사용자 인증 정보를 제공하는 Google 계정으로 gcloud CLI에 로그인합니다.

조직의 보안 정책으로 인해 사용자 계정에 필요한 권한이 없는 경우 서비스 계정 가장을 사용할 수 있습니다.

자세한 내용은 gcloud CLI 사용을 위한 인증을 참조하세요. Pub/Sub에서 gcloud CLI를 사용하는 방법에 대한 자세한 내용은 gcloud CLI 참조 페이지를 참조하세요.

REST

gcloud CLI 사용자 인증 정보를 사용하거나 애플리케이션 기본 사용자 인증 정보를 사용하여 Pub/Sub API에 인증할 수 있습니다. REST 요청 인증에 대한 자세한 내용은 REST를 사용하여 인증을 참조하세요. 사용자 인증 정보 유형은 gcloud CLI 사용자 인증 정보 및 ADC 사용자 인증 정보를 참조하세요.

Pub/Sub의 사용자 인증 정보 및 ADC

ADC에 사용자 인증 정보를 제공하는 한 가지 방법은 gcloud CLI를 사용하여 사용자 인증 정보를 사용자 인증 정보 파일에 삽입하는 것입니다. 이 파일은 ADC가 찾을 수 있는 로컬 파일 시스템에 저장됩니다. 그런 다음 ADC는 제공된 사용자 인증 정보를 사용하여 요청을 인증합니다. 이 방법은 종종 로컬 개발에 사용됩니다.

이 방법을 사용할 경우 Pub/Sub 인증을 시도할 때 인증 오류가 발생할 수 있습니다. 이 오류 및 해결 방법에 대한 자세한 내용은 사용자 인증 정보가 작동하지 않음을 참조하세요.

Pub/Sub 인증 설정

인증 설정 방법은 코드를 실행 중인 환경에 따라 달라집니다.

인증 설정을 위한 가장 일반적인 옵션은 다음과 같습니다. 인증에 대한 추가 옵션 및 자세한 내용은 Google 인증을 참조하세요.

로컬 개발 환경용

다음 방법으로 로컬 개발 환경의 사용자 인증 정보를 설정할 수 있습니다.

클라이언트 라이브러리 또는 서드 파티 도구

로컬 환경에서 애플리케이션 기본 사용자 인증 정보(ADC)를 설정합니다.

  1. Google Cloud CLI를 설치한 후 다음 명령어를 실행하여 초기화합니다.

    gcloud init
  2. Google 계정의 로컬 인증 사용자 인증 정보를 만듭니다.

    gcloud auth application-default login

    로그인 화면이 표시됩니다. 로그인 후 사용자 인증 정보가 ADC에 사용되는 로컬 사용자 인증 정보 파일에 저장됩니다.

로컬 환경에서 ADC 사용에 대한 자세한 내용은 로컬 개발 환경을 참조하세요.

명령줄의 REST 요청

명령줄에서 REST 요청을 수행할 때는 요청을 전송하는 명령어의 일부로 gcloud auth print-access-token을 포함하여 gcloud CLI 사용자 인증 정보를 사용할 수 있습니다.

다음 예시에서는 지정된 프로젝트에 대한 서비스 계정을 나열합니다. REST 요청에도 동일한 패턴을 사용할 수 있습니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

 

REST 및 gRPC를 사용하여 인증하는 방법에 대한 자세한 내용은 REST 사용을 위한 인증을 참조하세요. 로컬 ADC 사용자 인증 정보와 gcloud CLI 사용자 인증 정보의 차이점에 대한 자세한 내용은 gcloud CLI 사용자 인증 정보 및 ADC 사용자 인증 정보를 참조하세요.

Google Cloud

Google Cloud에서 실행되는 워크로드를 인증하려면 코드가 실행 중인 컴퓨팅 리소스에 연결된 서비스 계정의 사용자 인증 정보를 사용합니다. 예를 들어 Compute Engine 가상 머신(VM) 인스턴스, Cloud Run 서비스 또는 Dataflow 작업에 서비스 계정을 연결할 수 있습니다. 이 방식은 Google Cloud 컴퓨팅 리소스에서 실행되는 코드에 선호되는 인증 방법입니다.

대부분의 서비스의 경우 코드를 실행할 리소스를 만들 때 서비스 계정을 연결해야 합니다. 이후에는 서비스 계정을 추가하거나 교체할 수 없습니다. 언제든지 VM 인스턴스에 서비스 계정을 연결할 수 있게 해주는 Compute Engine은 예외입니다.

gcloud CLI를 사용하여 서비스 계정을 만들고 리소스에 연결합니다.

  1. Google Cloud CLI를 설치한 후 다음 명령어를 실행하여 초기화합니다.

    gcloud init
  2. 인증을 설정합니다.

    1. 서비스 계정을 만듭니다.

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      SERVICE_ACCOUNT_NAME을 서비스 계정 이름으로 바꿉니다.

    2. 프로젝트 및 리소스에 대한 액세스 권한을 제공하려면 서비스 계정에 역할을 부여합니다.

      gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=ROLE

      다음을 바꿉니다.

      • SERVICE_ACCOUNT_NAME: 서비스 계정의 이름입니다.
      • PROJECT_ID: 서비스 계정을 만든 프로젝트 ID입니다.
      • ROLE: 부여할 역할입니다.
    3. 서비스 계정에 다른 역할을 부여하려면 이전 단계에서 한 것처럼 명령어를 실행합니다.
    4. Google 계정에 서비스 계정 역할을 사용하고 서비스 계정을 다른 리소스에 연결할 수 있게 해주는 역할을 부여합니다.

      gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser

      다음을 바꿉니다.

      • SERVICE_ACCOUNT_NAME: 서비스 계정의 이름입니다.
      • PROJECT_ID: 서비스 계정을 만든 프로젝트 ID입니다.
      • USER_EMAIL: Google 계정의 이메일 주소입니다.
  3. 코드를 실행할 리소스를 만들고 이 리소스에 서비스 계정을 연결합니다. 예를 들어 Compute Engine을 사용하는 경우 다음 안내를 따르세요.

    Compute Engine 인스턴스를 만듭니다. 인스턴스를 다음과 같이 구성합니다.
    • INSTANCE_NAME을 원하는 인스턴스 이름으로 바꿉니다.
    • --zone 플래그를 인스턴스를 만들 영역으로 설정합니다.
    • --service-account 플래그를 만든 서비스 계정의 이메일 주소로 설정합니다.
    gcloud compute instances create INSTANCE_NAME --zone=ZONE --service-account=SERVICE_ACCOUNT_EMAIL

Google API 인증에 대한 자세한 내용은 Google에서 인증을 참조하세요.

온프레미스 또는 다른 클라우드 제공업체

Google Cloud 외부에서 인증을 설정하는 데 선호되는 방법은 워크로드 아이덴티티 제휴를 사용하는 것입니다. 자세한 내용은 인증 문서에서 온프레미스 또는 다른 클라우드 제공업체를 참조하세요.

Pub/Sub 액세스 제어

Pub/Sub에 인증한 후에는 Google Cloud 리소스에 액세스할 수 있는 권한이 있어야 합니다. Pub/Sub는 승인을 위해 Identity and Access Management(IAM)를 사용합니다.

Pub/Sub의 역할에 대한 자세한 내용은 IAM으로 액세스 제어를 참조하세요. IAM 및 승인에 대한 자세한 내용은 IAM 개요를 참조하세요.

다음 단계