이 페이지에서는 클라이언트 라이브러리와 애플리케이션 기본 사용자 인증 정보를 사용하여 Google API에 액세스하는 방법을 설명합니다.
클라이언트 라이브러리를 사용하면 지원되는 언어로 Google Cloud API에 쉽게 액세스할 수 있습니다. 서버에 원시 요청을 수행해서 Google Cloud API를 직접 사용할 수 있지만 클라이언트 라이브러리는 작성해야 하는 코드 양을 크게 줄여 주는 간소화 기능을 제공합니다. 이는 클라이언트 라이브러리가 애플리케이션 기본 사용자 인증 정보 (ADC)를 지원하기 때문에 특히 더 그렇습니다.
API 키를 사용하려는 경우 ADC를 사용하지 않습니다. 자세한 내용은 클라이언트 라이브러리에서 API 키 사용을 참조하세요.
클라이언트 라이브러리에 애플리케이션 기본 사용자 인증 정보 사용
애플리케이션 기본 사용자 인증 정보를 사용하여 애플리케이션을 인증하려면 먼저 애플리케이션이 실행되는 환경에 대한 ADC를 설정해야 합니다. 클라이언트 라이브러리를 사용하여 클라이언트를 만드는 경우 클라이언트 라이브러리는 코드가 사용하는 API에 인증하기 위해 ADC에 제공된 사용자 인증 정보를 자동으로 확인하고 사용합니다. 애플리케이션이 토큰을 명시적으로 인증하거나 관리할 필요가 없습니다. 이러한 요구사항은 인증 라이브러리에 의해 자동으로 관리됩니다.
로컬 개발 환경의 경우 gcloud CLI를 사용하여 사용자 인증 정보 또는 서비스 계정 가장으로 ADC를 설정할 수 있습니다. 프로덕션 환경의 경우 서비스 계정을 연결하여 ADC를 설정합니다.
클라이언트 만들기 예시
다음 코드 샘플은 Cloud Storage 서비스의 클라이언트를 만듭니다. 코드에는 여러 클라이언트가 필요할 수 있습니다. 이 샘플에서는 클라이언트를 만들고 명시적으로 인증하기 위한 코드 없이 사용하는 방법을 보여주기 위한 것입니다.
다음 샘플을 실행하려면 먼저 다음 단계를 완료해야 합니다.
Go
자바
Node.js
PHP
Python
Ruby
외부 소스의 사용자 인증 정보 구성을 사용할 때의 보안 요구사항
일반적으로 gcloud CLI 명령어를 사용하거나 Google Cloud 콘솔을 사용하여 사용자 인증 정보 구성을 생성합니다. 예를 들어 gcloud CLI를 사용하여 로컬 ADC 파일 또는 로그인 구성 파일을 생성할 수 있습니다. 마찬가지로 Google Cloud 콘솔을 사용하여 서비스 계정 키를 만들고 다운로드할 수 있습니다.
그러나 일부 사용 사례에서는 외부 항목에서 사용자 인증 정보 구성을 제공합니다. 이러한 사용자 인증 정보 구성은 Google API에 인증하는 데 사용됩니다.
일부 유형의 사용자 인증 정보 구성에는 인증 라이브러리가 토큰을 획득하는 데 사용하는 엔드포인트와 파일 경로가 포함됩니다. 외부 소스의 사용자 인증 정보 구성을 수락하는 경우 구성을 사용하기 전에 구성을 검증해야 합니다. 구성을 검증하지 않으면 악의적인 행위자가 사용자 인증 정보를 사용하여 시스템과 데이터를 손상시킬 수 있습니다.
외부 소스의 사용자 인증 정보 구성 유효성 검사
외부 사용자 인증 정보의 유효성을 검사하는 방법은 애플리케이션에서 허용하는 사용자 인증 정보 유형에 따라 다릅니다.
서비스 계정 키 유효성 검사
애플리케이션이 서비스 계정 키만 허용하는 경우 다음 예와 같이 서비스 계정 키 전용 사용자 인증 정보 로더를 사용하세요. 유형별 사용자 인증 정보 로더는 서비스 계정 키에 있는 필드만 파싱하며, 이 필드는 취약점을 노출하지 않습니다.
C#
var saCredential = ServiceAccountCredential.FromServiceAccountData(stream);
C++
auto cred = google::cloud::MakeServiceAccountCredentials(json)
자바
ServiceAccountCredentials credentials =
ServiceAccountCredentials.fromJson(json, new HttpTransportFactory());
Node.js
const keys = JSON.parse(json_input)
const authClient = JWT.fromJSON(keys);
PHP
cred = new Google\Auth\Credentials\ServiceAccountCredentials($scope, $jsonKey);
Python
cred = service_account.Credentials.from_service_account_info(json_data)
Ruby
creds = Google::Auth::ServiceAccountCredentials.make_creds(json_key_io: json_stream)
유형별 사용자 인증 정보 로더를 사용할 수 없는 경우 type
필드의 값이 service_account
인지 확인하여 사용자 인증 정보의 유효성을 검사합니다. type
필드의 값이 다른 값인 경우 서비스 계정 키를 사용하지 마세요.
기타 사용자 인증 정보 구성 검증
애플리케이션이 서비스 계정 키 외에 모든 유형의 사용자 인증 정보를 허용하는 경우 추가 인증을 실행해야 합니다. 다른 유형의 사용자 인증 정보 구성의 예로는 ADC 사용자 인증 정보 파일, 워크로드 아이덴티티 제휴 사용자 인증 정보 파일 또는 직원 ID 제휴 로그인 구성 파일이 있습니다.
다음 표에는 사용자 인증 정보에 있는 경우 검증해야 하는 필드가 나와 있습니다. 일부 사용자 인증 정보 구성에는 이러한 필드가 일부만 포함되어 있습니다.
필드 | 목적 | 예상 값 |
---|---|---|
service_account_impersonation_url |
인증 라이브러리는 이 필드를 사용하여 엔드포인트에 액세스하여 명의 도용된 서비스 계정의 액세스 토큰을 생성합니다. | https://iamcredentials.googleapis.com.com/v1/projects/-/serviceAccounts/service account email:generateAccessToken |
token_url |
인증 라이브러리는 외부 토큰을 이 엔드포인트로 전송하여 제휴 액세스 토큰으로 교환합니다. | https://sts.googleapis.com.com/v1/token |
credential_source.file |
인증 라이브러리는 이 필드에 지정된 위치의 파일에서 외부 토큰을 읽고 token_url 엔드포인트로 전송합니다.
|
외부 토큰이 포함된 파일의 경로입니다. 이 경로를 알아야 합니다. |
credential_source.url |
외부 토큰을 반환하는 엔드포인트입니다. 인증 라이브러리는 이 URL에 요청을 보내고 응답을 token_url 엔드포인트로 전송합니다.
|
다음 항목 중 하나
|
credential_source.executable.command |
GOOGLE_EXTERNAL_ACCOUNT_ALLOW_EXECUTABLES 환경 변수가 1 로 설정되면 인증 라이브러리가 이 명령어 또는 실행 파일을 실행합니다.
|
외부 토큰을 반환하는 실행 파일 또는 명령어입니다. 이 명령을 인식하고 안전한지 확인해야 합니다. |
credential_source.aws.url |
인증 라이브러리는 이 URL에 요청을 발행하여 AWS 보안 토큰을 가져옵니다. |
다음 정확한 값 중 하나입니다.
|
credential_source.aws.region_url |
인증 라이브러리는 이 URL에 요청을 보내 활성 AWS 리전을 가져옵니다. |
다음 정확한 값 중 하나입니다.
|
credential_source.aws.imdsv2_session_token_url |
인증 라이브러리는 이 URL에 요청을 보내 AWS 세션 토큰을 가져옵니다. |
다음 정확한 값 중 하나입니다.
|
다음 단계
- 애플리케이션 기본 사용자 인증 정보 자세히 알아보기
- 인증 방법의 개요 확인하기