API 인증

이 페이지에서는 Cloud Healthcare API에 대해 요청을 승인하는 방법을 설명합니다.

서비스 계정 키 파일 가져오기

서비스 계정을 만들고 키 파일을 다운로드하는 경우:

Cloud Console

  1. Cloud Console에서 서비스 계정 키 만들기 페이지로 이동합니다.

    서비스 계정 키 만들기 페이지로 이동
  2. 서비스 계정 목록에서 새 서비스 계정을 선택합니다.
  3. 서비스 계정 이름 필드에 이름을 입력합니다.
  4. 역할 목록에서 프로젝트 > 소유자.

  5. 만들기를 클릭합니다. 키가 포함된 JSON 파일이 컴퓨터에 다운로드됩니다.

명령줄

로컬 머신 또는 Cloud Shell에서 Cloud SDK를 사용하여 다음 명령어를 실행할 수 있습니다.

  1. 서비스 계정을 만듭니다. NAME을 서비스 계정 이름으로 바꿉니다.

    gcloud iam service-accounts create NAME
  2. 서비스 계정에 권한을 부여합니다. PROJECT_ID를 프로젝트 ID로 바꿉니다.

    gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:NAME@PROJECT_ID.iam.gserviceaccount.com" --role="roles/owner"
  3. 키 파일을 생성합니다. FILE_NAME을 키 파일 이름으로 바꿉니다.

    gcloud iam service-accounts keys create FILE_NAME.json --iam-account=NAME@PROJECT_ID.iam.gserviceaccount.com

애플리케이션에 사용자 인증 정보 제공

Cloud Healthcare API는 언어별 Google 클라이언트 라이브러리를 사용하여 애플리케이션을 인증하고 Google Cloud를 호출할 수 있습니다. 예를 들어 Python용 Google API 클라이언트 라이브러리를 사용하면 사용자 인증 정보를 사용해서 서비스 객체를 빌드한 후 이를 호출할 수 있습니다.

사용자 인증 정보를 자동으로 또는 수동으로 제공할 수 있습니다. 사용자 인증 정보를 자동으로 제공하는 것은 테스트 및 실험 시에는 유용하지만, 애플리케이션이 사용하는 사용자 인증 정보를 확인하기는 어렵습니다. 대안으로 사용자 인증 정보를 수동으로 제공합니다.

환경 변수 설정

서비스 계정 키가 포함된 JSON 파일의 파일 경로에 환경 변수 GOOGLE_APPLICATION_CREDENTIALS를 설정하여 애플리케이션 코드 또는 명령어에 인증 사용자 인증 정보를 제공할 수 있습니다.

Compute Engine, Google Kubernetes Engine(GKE) 또는 App Engine에서 애플리케이션을 실행하는 경우 기본 서비스 계정 이외의 이러한 서비스가 제공하는 서비스 계정을 사용하는 경우에만 GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정해야 합니다.

다음 샘플에서는 GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정하는 방법을 보여줍니다.

curl

curl을 사용하는 경우 다음 명령어를 실행합니다. PATH를 서비스 계정 키가 포함된 JSON 파일의 파일 경로로 바꾸고, FILE_NAME을 파일 이름으로 바꿉니다. 이 변수는 현재 셸 세션에만 적용되므로 새 세션을 연 경우 변수를 다시 설정합니다.

export GOOGLE_APPLICATION_CREDENTIALS=PATH/FILE_NAME

예:

export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account.json"

PowerShell

Windows PowerShell을 사용하는 경우 다음 명령어를 실행합니다. PATH를 서비스 계정 키가 포함된 JSON 파일의 파일 경로로 바꾸고, FILE_NAME을 파일 이름으로 바꿉니다. 이 변수는 현재 셸 세션에만 적용되므로 새 세션을 연 경우 변수를 다시 설정합니다.

$env:GOOGLE_APPLICATION_CREDENTIALS="PATH/FILE_NAME"

예:

$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service_account.json"

GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정한 후 애플리케이션 기본 사용자 인증 정보(ADC)는 암묵적으로 사용자 인증 정보를 확인할 수 있습니다.

인증 정보 자동으로 찾기

Google API 클라이언트 라이브러리는 애플리케이션 기본 사용자 인증 정보(ADC)를 사용하여 애플리케이션의 사용자 인증 정보를 자동으로 찾습니다.

코드에 클라이언트 라이브러리가 사용되는 경우 클라이언트 라이브러리가 다음 순서로 사용자 인증 정보를 확인합니다.

  1. ADC는 GOOGLE_APPLICATION_CREDENTIALS 환경 변수가 설정되었는지 확인합니다. 변수가 설정된 경우 ADC는 변수가 가리키는 서비스 계정 파일을 사용합니다. 환경 변수 설정에서는 환경 변수를 설정하는 방법을 설명합니다.
  2. 환경 변수가 설정되지 않은 경우 애플리케이션이 Compute Engine, Google Kubernetes Engine (GKE) 또는 App Engine에서 실행 중인 경우 ADC는 이러한 서비스가 제공하는 기본 서비스 계정을 사용합니다.

ADC에서 위 사용자 인증 정보 중 하나를 사용할 수 없으면 오류가 발생합니다.

다음 코드 샘플은 ADC를 사용하는 방법을 보여줍니다. 이 샘플은 애플리케이션 사용자 인증 정보를 명시적으로 지정하지 않습니다. 하지만 ADC는 GOOGLE_APPLICATION_CREDENTIALS 환경 변수가 설정되었거나 애플리케이션이 Compute Engine, GKE, App Engine에서 실행되는 한 사용자 인증 정보를 암시적으로 찾아서 auth 변수에 저장할 수 있습니다.

Node.js

Node.js 클라이언트 라이브러리를 사용합니다.

const {google} = require('googleapis');
const healthcare = google.healthcare('v1');

const createDataset = async () => {
  const auth = await google.auth.getClient({
    scopes: ['https://www.googleapis.com/auth/cloud-platform'],
  });
  google.options({auth});

  // TODO(developer): uncomment these lines before running the sample
  // const cloudRegion = 'us-central1';
  // const projectId = 'adjective-noun-123';
  // const datasetId = 'my-dataset';
  const parent = `projects/${projectId}/locations/${cloudRegion}`;
  const request = {parent, datasetId};

  await healthcare.projects.locations.datasets.create(request);
  console.log(`Created dataset: ${datasetId}`);
};

createDataset();

수동으로 서비스 계정 사용자 인증 정보 획득 및 제공

서비스 계정 사용자 인증 정보를 수동으로 만들고 사용자 인증 정보를 해당 코드로 애플리케이션에 전달할 수 있습니다. 자세한 내용은 수동으로 서비스 계정 사용자 인증 정보 가져오기 및 제공을 참조하세요.

JSON 웹 토큰(JWT)을 사용한 서비스 계정 승인

OAuth 2.0을 사용하지 않는 Cloud Healthcare API에 인증된 호출을 수행할 수 있습니다. 이를 위해서는 OAuth 2.0 액세스 토큰 대신 서명된 JSON 웹 토큰(JWT)을 Bearer 토큰으로 직접 사용합니다. Cloud Healthcare API에는 특정 토큰 생성 방법이 필요하지 않습니다. 도우미 클라이언트 라이브러리 컬렉션을 JWT.io에서 찾을 수 있습니다. 서명된 JWT를 사용하면 API 호출을 수행하기 전에 Google의 승인 서버로 네트워크 요청을 수행할 필요가 없습니다.

JWT를 사용할 때 aud 필드에 https://healthcare.googleapis.com/을 지정합니다.

액세스 토큰 대신 JWT를 사용하여 Cloud Healthcare API 호출을 승인하려면 부록: OAuth 없이 서비스 계정 승인의 안내를 따르세요.

생성된 JWT는 다음 샘플과 유사합니다.

   {
     "alg": "RS256",
     "typ": "JWT",
     "kid": "PRIVATE_KEY_ID"
   }
   .
   {
     "iss": "SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com",
     "sub": "SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com",
     "aud": "https://healthcare.googleapis.com/",
     "iat": CURRENT_UNIX_TIME,
     "exp": EXPIRATION_TIME
   }
   

다음 단계