Google의 인증 방법

이 문서에서는 일부 키 인증 방법 및 개념을 이해하고 인증 구현 또는 문제 해결 도움말을 확인할 수 있는 위치를 확인할 수 있습니다. 인증 문서의 주요 초점은 Google Cloud 서비스입니다. 그러나 이 페이지의 인증 사용 사례 목록과 소개 자료에는 다른 Google 제품의 사용 사례도 포함되어 있습니다.

소개

인증은 일종의 사용자 인증 정보를 사용하여 ID를 확인하는 프로세스입니다. 인증은 자신이 누구인지 증명하는 것입니다.

Google은 액세스를 위해 인증이 필요한 많은 API 및 서비스를 제공합니다. Google은 또한 고객이 작성한 애플리케이션을 호스팅하는 다양한 서비스를 제공합니다. 이러한 애플리케이션도 또한 해당 사용자의 ID를 확인해야 합니다.

용도 정보
고급 프로그래밍 언어를 사용하여 애플리케이션에서 Google Cloud 서비스에 인증 애플리케이션 기본 사용자 인증 정보를 설정하고 Cloud 클라이언트 라이브러리 중 하나를 사용합니다.
Cloud Run 또는 Cloud Functions에서 실행되는 애플리케이션에 인증 OpenID Connect(OIDC) ID 토큰을 가져오고 이를 요청에 제공합니다.
Google 또는 Google Cloud 서비스 및 리소스에 액세스하는 애플리케이션에 대해 사용자 인증 구현 옵션 비교는 애플리케이션 사용자 인증을 참조하세요.
로컬 개발 환경에서 일부 gcloud 명령어를 사용해 보기 gcloud CLI를 초기화합니다.
로컬 개발 환경에서 일부 Google Cloud REST API 요청 사용해 보기 curl과 같은 명령줄 도구를 사용하여 REST API를 호출합니다.
내 제품 문서에 포함된 코드 스니펫을 사용해 보기 애플리케이션 기본 사용자 인증 정보를 로컬로 설정하고 제품의 클라이언트 라이브러리를 로컬 환경에 설치합니다. 클라이언트 라이브러리는 자동으로 사용자 인증 정보를 찾습니다.
다른 인증 사용 사례의 도움말 확인하기 인증 사용 사례 페이지를 참조하세요.
ID 및 액세스 관리 공간에서 Google이 제공하는 제품 목록 참조 Google ID 및 액세스 관리 제품 페이지를 참조하세요.

사용 사례에 적합한 인증 방법 선택

Google Cloud CLI, Cloud 클라이언트 라이브러리, Terraform 또는 REST 요청과 같이 애플리케이션 기본 사용자 인증 정보(ADC)를 지원하는 도구를 사용하여 Google Cloud 서비스에 액세스하는 경우 다음 다이어그램을 사용하여 인증 방법을 선택할 수 있습니다.

사용 사례에 따라 인증 방법을 선택하는 결정 트리

이 다이어그램에서는 다음 질문을 안내합니다.

  1. 자체 워크스테이션, Cloud Shell 또는 가상 데스크톱 인터페이스와 같은 단일 사용자 개발 환경에서 코드를 실행하고 있나요?
    1. '예'라고 답한 경우 질문 4를 진행합니다.
    2. 그렇지 않은 경우 질문 2를 진행합니다.
  2. Google Cloud에서 코드를 실행하고 있나요?
    1. '예'라고 답한 경우 질문 3을 진행합니다.
    2. 그렇지 않은 경우 질문 5를 진행합니다.
  3. Google Kubernetes Engine 또는 GKE Enterprise에서 컨테이너를 실행 중인가요?
    1. '예'라고 답한 경우 GKE용 워크로드 아이덴티티 제휴를 사용하여 서비스 계정을 Kubernetes 포드에 연결합니다.
    2. 그렇지 않으면 리소스에 서비스 계정을 연결합니다.
  4. 사용 사례에 서비스 계정이 필요한가요?

    예를 들어 모든 환경에서 애플리케이션에 대한 인증 및 승인을 일관되게 구성하려고 합니다.

    1. 그렇지 않으면 사용자 인증 정보로 인증합니다.
    2. '예'라고 답한 경우 사용자 인증 정보로 서비스 계정을 가장합니다.
  5. 워크로드가 워크로드 아이덴티티 제휴를 지원하는 외부 ID 공급업체로 인증되나요?
    1. '예'라고 답한 경우 워크로드 아이덴티티 제휴를 구성하여 온프레미스 또는 다른 클라우드 제공업체에서 실행 중인 애플리케이션이 서비스 계정을 사용하도록 합니다.
    2. 그렇지 않으면 서비스 계정 키를 만듭니다.

인증 유형

대부분의 리소스 및 애플리케이션에 액세스하기 위해서는 인증이 필요합니다. 이 문서에서는 다음 목표 중 하나에 따라 기술 실무자의 애플리케이션 코드 만들기를 지원합니다.

OAuth 2.0

Google API는 OAuth 2.0 프레임워크를 구현 및 확장합니다. OAuth 2.0 프레임워크는 다양한 인증 '흐름' 또는 인증 방법을 개략적으로 보여줍니다. 일반적으로 애플리케이션은 승인 서버라는 중간 모듈에 주 구성원(사용자 또는 서비스 계정)을 제공하는 사용자 인증 정보를 제공합니다. 승인 서버는 토큰으로 응답하며, 애플리케이션은 이를 사용하여 서비스에 인증하고 리소스에 액세스할 수 있습니다. 토큰에는 애플리케이션이 어떤 액세스를 허용하는지를 나타내는 하나 이상의 범위가 포함됩니다. 그런 다음 애플리케이션이 리소스에 대해 액세스를 얻기 위해 리소스 서버에 토큰을 제공합니다.

Google Cloud 서비스의 승인 방법

Google Cloud 서비스는 인증에 Identity and Access Management(IAM)를 사용합니다. IAM은 주 구성원 및 리소스별로 세부적인 제어를 제공합니다. Google Cloud 서비스에 인증할 때는 일반적으로 모든 Google Cloud 서비스(https://www.googleapis.com/auth/cloud-platform)가 포함된 범위를 사용합니다.

OAuth 2.0 범위는 모바일 앱과 같이 토큰 보안이 중요한 환경에서 코드가 실행되는 경우에 유용한 두 번째 보호 레이어를 제공합니다. 이 시나리오에서는 토큰이 손상된 경우 위험을 줄이기 위해 더 세분화된 범위를 사용할 수 있습니다. OAuth 2.0 범위는 사용자 데이터에 대한 액세스를 승인하는 데에도 사용됩니다.

애플리케이션 기본 사용자 인증 정보

Application Default Credentials (ADC)는 애플리케이션 환경을 기준으로 사용자 인증 정보를 자동으로 검색하기 위해 Google 인증 라이브러리에 사용되는 전략입니다. 그런 다음 인증 라이브러리는 Cloud 클라이언트 라이브러리 및 Google API 클라이언트 라이브러리에 이러한 사용자 인증 정보를 제공합니다. ADC를 사용할 때는 Google Cloud 서비스 및 API에 대한 애플리케이션 인증 방법을 변경하지 않고 개발 또는 프로덕션 환경에서 코드를 실행할 수 있습니다.

Google Cloud 서비스를 사용해야 하는 코드를 작성하는 경우 가능한 경우에 ADC를 사용해야 합니다. ADC를 사용하는 경우 다양한 환경에서 동일한 인증 코드를 사용할 수 있기 때문에 개발 프로세스를 간소화할 수 있습니다.

ADC를 사용하려면 먼저 코드를 실행할 위치에 따라 ADC에 사용자 인증 정보를 제공해야 합니다. ADC는 자동으로 사용자 인증 정보를 찾고 백그라운드에서 토큰을 가져와서 인증 코드가 서로 다른 환경에서 수정 없이 실행되도록 합니다. 예를 들어 개발 워크스테이션 또는 Compute Engine을 실행할 때 동일한 코드 버전을 사용하여 Google Cloud API에 인증할 수 있습니다.

gcloud 사용자 인증 정보는 gcloud CLI를 사용하여 ADC에 제공한 사용자 인증 정보와 다릅니다. 자세한 내용은 gcloud CLI 사용자 인증 정보 및 ADC 사용자 인증 정보를 참조하세요.

용어

인증 및 승인에 대해 논의할 때는 다음 용어를 이해하는 것이 중요합니다.

인증

인증은 리소스 액세스를 시도하는 주 구성원의 ID를 확인하는 프로세스입니다.

승인

승인은 리소스 액세스를 시도하는 주 구성원 또는 애플리케이션에 해당 수준의 액세스가 승인되었는지 여부를 확인하는 프로세스입니다.

사용자 인증 정보

이 문서에서 사용되는 사용자 계정은 Google 계정 또는 ID 공급업체에서 관리되고 직원 ID 제휴와 통합된 사용자 계정을 의미합니다.

인증에서 사용자 인증 정보는 ID 증명을 제공하는 디지털 객체입니다. 애플리케이션 요구사항에 따라 비밀번호, PIN, 생체 인식 데이터 모두 사용자 인증 정보로 사용될 수 있습니다. 예를 들어 사용자 계정에 로그인할 때 사용자는 해당 계정이 실제로 사용자에게 속하는 계정이고 사용자가 악의적인 행위자에 의해 스푸핑되고 있지 않음을 입증하는 증거로 비밀번호를 제공하고 2단계 인증 요구사항을 충족시킵니다.

토큰은 사용자 인증 정보라고 불리기도 하지만 이 문서에서는 대신 호출자가 적절한 사용자 인증 정보를 제공했음을 입증하는 디지털 객체라고 부릅니다. 토큰 자체는 사용자 인증 정보가 아닙니다.

제공해야 하는 사용자 인증 정보 유형은 인증하려는 대상에 따라 달라집니다. Google Cloud Console에서는 다음 유형의 사용자 인증 정보를 만들 수 있습니다.

  • API 키

    다른 사용자 인증 정보와 달리 API 키는 주 구성원을 식별하지 않습니다. API 키는 청구 및 할당 목적으로 Google Cloud 프로젝트를 제공합니다.

    많은 Google API에서 API 키가 허용되지 않습니다. API 키에 대한 자세한 내용은 API 키를 참조하세요.

  • OAuth 클라이언트 ID

    OAuth 클라이언트 ID는 Google에서 애플리케이션을 식별하기 위해 사용됩니다. 이 ID는 3-legged OAuth(3LO)로도 불리는, 최종 사용자 소유의 리소스에 액세스하려고 할 때 필요합니다. OAuth 클라이언트 ID를 가져오고 사용하는 방법에 대한 자세한 내용은 OAuth 2.0 설정을 참조하세요.

주 구성원

주 구성원은 리소스에 대해 액세스가 부여될 수 있는 ID입니다. 인증을 위해 Google API는 사용자 계정서비스 계정의 두 가지 유형의 주 구성원을 지원합니다.

인증에 사용자 계정 또는 서비스 계정을 사용할지는 사용 사례에 따라 달라집니다. 프로젝트의 서로 다른 단계에서 또는 서로 다른 개발 환경에서 두 계정을 각각 사용할 수 있습니다.

사용자 계정

사용자 계정은 Google API 및 서비스와 상호작용하는 개발자, 관리자, 기타 사용자를 나타냅니다.

사용자 계정은 Google Workspace 또는 Cloud ID를 사용해서 Google 계정으로 관리됩니다. 또한 타사 ID 공급업체에 의해 관리되고 직원 ID 제휴로 제휴되는 사용자 계정일 수 있습니다.

사용자 계정의 경우 다음 방법으로 Google API 및 서비스에 인증할 수 있습니다.

Google Cloud에서 사용자의 ID를 구성하는 방법에 대한 개요는 사용자 ID를 참조하세요.

서비스 계정

서비스 계정은 사람인 사용자를 나타내지 않는 계정입니다. 서비스 계정은 애플리케이션에 Google Cloud 리소스 액세스가 필요할 때와 같이 사람이 직접 관련되지 않은 경우의 인증 및 승인을 관리하기 위한 방법을 제공합니다. 서비스 계정은 IAM에 의해 관리됩니다.

다음 목록은 보안 수준인 높은 것부터 낮은 것까지 Google API 및 서비스에 인증하기 위해 서비스 계정을 사용하는 몇 가지 방법을 제공합니다. 자세한 내용은 이 페이지에서 사용 사례에 적합한 인증 방법 선택을 참조하세요.

서비스 계정을 포함한 Google Cloud의 워크로드 아이덴티티 구성 방법에 대한 개요는 워크로드 아이덴티티를 참조하세요. 권장사항은 서비스 계정 사용 권장사항을 참조하세요.

토큰

인증 및 승인에서 토큰은 호출자가 해당 토큰에 대해 교환된 적절한 사용자 인증 정보를 제공했음을 보여 주는 디지털 객체입니다. 토큰에는 요청을 수행하는 주 구성원의 ID 및 이들에게 허용된 액세스 종류에 관한 정보가 포함되어 있습니다.

토큰은 호텔 키와 같은 역할을 수행합니다. 호텔에 체크인할 때 호텔 리셉션 데스크에 적절한 문서를 제출하면 특정 호텔 시설에 액세스할 수 있는 키를 받습니다. 예를 들어 이 키를 통해 객실과 손님용 엘리베이터를 이용할 수 있지만 다른 객실이나 서비스용 엘리베이터는 이용할 수 있습니다.

API 키를 제외하고 Google API는 사용자 인증 정보를 직접 지원하지 않습니다. 애플리케이션은 토큰을 획득하거나 생성하고 이를 API에 제공해야 합니다. 여기에는 여러 가지 유형의 토큰이 있습니다. 자세한 내용은 토큰 유형을 참조하세요.

워크로드 및 직원

Google Cloud ID 및 액세스 제품은 프로그래매틱 액세스 및 사람 사용자에 대해 Google 서비스 및 리소스에 대한 액세스를 사용 설정합니다. Google은 프로그래매틱 액세스에 워크로드라는 용어를 사용하고 사용자 액세스에 직원이라는 용어를 사용합니다.

워크로드 아이덴티티 제휴를 사용하면 서비스 계정 키를 만들고 관리할 필요 없이 Google 외부에서 실행되는 워크로드에 액세스를 제공할 수 있습니다.

직원 ID 제휴를 사용하면 IAM을 사용하여 직원, 파트너, 계약업체와 같은 사용자 그룹에 대해 직원을 인증 및 승인할 수 있으며, 이렇게 해서 사용자가 Google Cloud 서비스에 액세스할 수 있습니다.

다음 단계