API に対する認証

このページでは、Cloud Healthcare API へのリクエストを認可する方法について説明します。

サービス アカウント キー ファイルの取得

サービス アカウントを作成して鍵ファイルをダウンロードするには:

Cloud Console

サービス アカウントを作成します。

  1. Cloud Console で [サービス アカウントの作成] ページに移動します。

    [サービス アカウントの作成] に移動
  2. プロジェクトを選択します。
  3. [サービス アカウント名] フィールドに名前を入力します。Cloud Console は、この名前に基づいて [サービス アカウント ID] フィールドに入力します。

    [サービス アカウントの説明] フィールドに説明を入力します。例: Service account for quickstart

  4. [作成して続行] をクリックします。
  5. [ロールを選択] フィールドをクリックします。

    [クイック アクセス] で [基本]、[オーナー] の順にクリックします。

  6. [続行] をクリックします。
  7. [完了] をクリックして、サービス アカウントの作成を完了します。

    ブラウザ ウィンドウは閉じないでください。次のステップでこれを使用します。

サービス アカウント キーを作成します。

  1. Cloud Console で、作成したサービス アカウントのメールアドレスをクリックします。
  2. [キー] をクリックします。
  3. [鍵を追加]、[新しい鍵を作成] の順にクリックします。
  4. [作成] をクリックします。JSON キーファイルがパソコンにダウンロードされます。
  5. [閉じる] をクリックします。

コマンドライン

ローカルマシン上の Cloud SDK を使用するか、または Cloud Shell 内で以下のコマンドを実行できます。

  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 クライアント ライブラリを使用すると、認証情報を使用してサービス オブジェクトを作成し、それを呼び出すことができます。

認証情報は自動または手動で指定できます。認証情報を自動的に指定すると、テストや試験運用をするときに役立ちますが、アプリケーションで使用されている認証情報を特定するのが難しくなります。別の方法としては、認証情報を手動で指定してください。

環境変数の設定

環境変数 GOOGLE_APPLICATION_CREDENTIALS を、サービス アカウント キーが含まれる JSON ファイルのファイルパスに設定することで、アプリケーション コードまたはコマンドに認証情報を指定できます。

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 環境変数を設定すると、アプリケーションのデフォルト認証情報(DCM)によって認証情報が暗黙的に決定されます。

認証情報の自動検出

Google API クライアント ライブラリでは、アプリケーションのデフォルト認証情報(ADC)を使用して、アプリケーションの認証情報を自動的に検出します。

コードでクライアント ライブラリが使用される際は、クライアント ライブラリにより、以下の順番で認証情報が確認されます。

  1. ADC は環境変数 GOOGLE_APPLICATION_CREDENTIALS が設定されているかどうかを確認します。変数が設定されている場合、ADC はその変数が指しているサービス アカウント ファイルを使用します。環境変数の設定方法については、環境変数の設定で説明します。
  2. 環境変数が設定されていない場合、Compute Engine、Google Kubernetes Engine(GKE)、またはApp Engine でアプリケーションが実行されていれば、ADCはその提供するデフォルトのサービス アカウントを使用します。

ADC が上記のどの認証情報も使用できない場合、エラーが発生します。

次のコードサンプルは、ADC の使用を示します。このサンプルでは、アプリケーション認証情報は明示的には指定されていません。ただし、GOOGLE_APPLICATION_CREDENTIALS 環境変数が設定されているか、アプリケーションが Compute Engine、GKE、またはApp Engine で実行されている限り、ADC が認証情報を暗黙的に検出して auth 変数に格納できます。

Node.js

Node.js クライアント ライブラリを使用します。

const google = require('@googleapis/healthcare');
const healthcare = google.healthcare({
  version: 'v1',
  auth: new google.auth.GoogleAuth({
    scopes: ['https://www.googleapis.com/auth/cloud-platform'],
  }),
});

const createDataset = async () => {
  // 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 Web Token(JWT)を使用したサービス アカウントの認可

OAuth 2.0 を使用しない Cloud Healthcare API に対して承認済みの呼び出しを行うことができます。これを行うには、OAuth 2.0 アクセス トークンの代わりに、署名された JSON ウェブトークン(JWT)を署名なしトークンとして直接使用します。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
   }
   

次のステップ