Cloud Healthcare API を認証する

このドキュメントでは、プログラムで Cloud Healthcare API を認証する方法について説明します。Cloud Healthcare API に対する認証方法は、API へのアクセスに使用するインターフェースと、コードが実行されている環境によって異なります。

Google Cloud の認証の詳細については、認証の概要をご覧ください。

API アクセス

Cloud Healthcare API は、プログラムからのアクセスをサポートしています。次の方法で API にアクセスできます。

クライアント ライブラリ

Google API クライアント ライブラリでは、Cloud Healthcare API の認証をプログラムで行うための高レベルの言語サポートが提供されます。 Google Cloud APIs の呼び出しを認証するために、クライアント ライブラリではアプリケーションのデフォルト認証情報(ADC)がサポートされています。このライブラリは、一連の定義済みのロケーションの中から認証情報を探し、その認証情報を使用して API へのリクエストを認証します。ADC を使用すると、アプリケーション コードを変更することなく、ローカルでの開発や本番環境など、さまざまな環境のアプリケーションで認証情報を使用できるようになります。

Google Cloud CLI

gcloud CLI を使用して Cloud Healthcare API にアクセスする場合は、gcloud CLI コマンドで使用される認証情報を提供する Google アカウントで gcloud CLI にログインします。

組織のセキュリティ ポリシーによってユーザー アカウントに必要な権限が与えられない場合は、サービス アカウントの権限借用を使用できます。

詳細については、gcloud CLI を使用して認証するをご覧ください。Cloud Healthcare API で gcloud CLI を使用する方法については、gcloud CLI のリファレンス ページをご覧ください。

REST

Cloud Healthcare API の認証には、gcloud CLI 認証情報またはアプリケーションのデフォルト認証情報を使用します。REST リクエストの認証の詳細については、REST を使用して認証するをご覧ください。認証情報の種類については、gcloud CLI の認証情報と ADC の認証情報をご覧ください。

Cloud Healthcare API の認証を設定する

認証の設定方法は、コードが実行されている環境によって異なります。

認証の設定には、次のオプションが最も一般的に使用されます。認証のその他のオプションと詳細については、認証方法をご覧ください。

ローカル開発環境の場合

ローカル開発環境の認証情報は、次の方法で設定できます。

クライアント ライブラリまたはサードパーティ ツール

ローカル環境でアプリケーションのデフォルト認証情報(ADC)を設定します。

  1. Install the Google Cloud CLI, then initialize it by running the following command:

    gcloud init
  2. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

    ログイン画面が表示されます。ログインすると、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)インスタンスなど、コードが実行されているコンピューティング リソースにアタッチされているサービス アカウントの認証情報を使用します。 このアプローチは、Google Cloud コンピューティング リソースで実行されているコードの推奨認証方法です。

ほとんどのサービスでは、コードを実行するリソースの作成時にサービス アカウントを関連付ける必要があります。サービス アカウントを後から追加または置換することはできません。Compute Engine は例外で、サービス アカウントをいつでも VM インスタンスに関連付けることができます。

gcloud CLI を使用してサービス アカウントを作成し、リソースに接続します。

  1. Install the Google Cloud CLI, then initialize it by running the following command:

    gcloud init
  2. Set up authentication:

    1. Create the service account:

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      Replace SERVICE_ACCOUNT_NAME with a name for the service account.

    2. To provide access to your project and your resources, grant a role to the service account:

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

      Replace the following:

      • SERVICE_ACCOUNT_NAME: the name of the service account
      • PROJECT_ID: the project ID where you created the service account
      • ROLE: the role to grant
    3. To grant another role to the service account, run the command as you did in the previous step.
    4. Grant the required role to the principal that will attach the service account to other resources.

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

      Replace the following:

      • SERVICE_ACCOUNT_NAME: the name of the service account
      • PROJECT_ID: the project ID where you created the service account
      • USER_EMAIL: the email address for a Google Account
  3. コードを実行するリソースを作成し、そのリソースにサービス アカウントを関連付けます。たとえば、Compute Engine を使用する場合は次のようになります。

    Create a Compute Engine instance. Configure the instance as follows:
    • INSTANCE_NAME を必要なインスタンス名に置き換えます。
    • インスタンスを作成するゾーン--zone フラグを設定します。
    • --service-account フラグに、作成したサービス アカウントのメールアドレスを設定します。
    • gcloud compute instances create INSTANCE_NAME --zone=ZONE --service-account=SERVICE_ACCOUNT_EMAIL

Google API に対する認証について詳しくは、認証方法をご覧ください。

オンプレミスまたは別のクラウド プロバイダ

Google Cloud の外部から認証を設定する際の推奨方法は、Workload Identity 連携の使用です。詳細については、認証ドキュメントのオンプレミスまたは他のクラウド プロバイダをご覧ください。

Cloud Healthcare API のアクセス制御

Cloud Healthcare API への認証後、Google Cloud リソースへのアクセスが承認されている必要があります。Cloud Healthcare API では、Identity and Access Management(IAM)を使用して承認を行います。

Cloud Healthcare API のロールの詳細については、IAM によるアクセス制御をご覧ください。IAM と認可の詳細については、IAM の概要をご覧ください。

JSON Web Token(JWT)を使用したサービス アカウントの認可

Healthcare API に対して承認済み呼び出しを行うには、OAuth 2.0 アクセス トークンの代わりに、署名された JSON ウェブトークン(JWT)を署名なしトークンとして直接使用します。Cloud Healthcare API では、特定のトークン生成メソッドは必要ありません。JWT を作成するためのヘルパー クライアント ライブラリのコレクションは、JWT.io にあります。署名付き JWT を使用する場合、API を呼び出す前に Google の承認サーバーにネットワーク リクエストを行う必要はありません。

JWT を使用する場合は、aud フィールドで https://healthcare.googleapis.com/ を指定します。

OAuth 2.0 アクセス トークンではなく 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
}

次のステップ