サービス アカウント

このガイドでは、サービス アカウントを使って Google Ads API にアクセスする方法を説明します。

サービス アカウントは、個々のエンドユーザーではなくアプリに属するアカウントです。サービス アカウントを使用すると、ウェブアプリと Google サービス間でサーバー間のやり取りが可能になります。アプリはサービス アカウントの代わりに Google API を呼び出すため、ユーザーが直接関与することはありません。

サービス アカウントは手動認証を必要としない OAuth 2.0 フローに対応しており、アプリケーションだけがアクセスできるキーファイルを使用します。

サービス アカウントの主なメリットは次の 2 つです。

  • Google API へのアクセスに必要な承認作業を、設定の一環として行います。そのため、手動操作が必要となる OAuth 2.0 の他のフローでは、関連する面倒な作業が必要ありません。

  • OAuth 2.0 アサーション フローでは、必要に応じて他のユーザーになり代わってアプリケーションを機能させることができます。

サービス アカウントで承認する方法は、直接または権限借用による 2 つあります。

アカウントへの直接アクセスによる承認

このオプションでは、サービス アカウントに Google 広告アカウントへの直接アクセス権を付与します。

アカウント アクセスの設定

  1. まず、サービス アカウントと認証情報を作成します。

    サービス アカウント キーを JSON 形式でダウンロードし、サービス アカウント ID とメールアドレスをメモします。

  2. 管理者として Google 広告アカウントにログインします。[管理] > [アクセスとセキュリティ] に移動します。

  3. [ユーザー] タブの [+] ボタンをクリックします。

  4. [メール] 入力ボックスにサービス アカウントのメールアドレスを入力します。適切なレベルのアカウント アクセス権限を選択し、[アカウントを追加] ボタンをクリックします。なお、サービス アカウントではメールと管理者のアクセスレベルはサポートされていません。

  5. サービス アカウントにアクセス権が付与されます。

クライアント ライブラリの構成

プログラミング言語に対応するタブを選択して、クライアント ライブラリの構成方法を確認します。

Java

構成で秘密鍵の JSON パスを設定します。ads.properties ファイルを使用している場合は、次のように追加します。

api.googleads.serviceAccountSecretsPath=JSON_KEY_FILE_PATH

詳細については、構成ガイドをご覧ください。

.NET

App.config / Web.config で次のキーを構成します。詳細については、構成ガイドをご覧ください。

<add key="OAuth2Mode" value="SERVICE_ACCOUNT" />
<add key="OAuth2SecretsJsonPath" value="JSON_KEY_FILE_PATH" />

Python

構成で秘密鍵の JSON パスを設定します。google-ads.yaml file、YAML 文字列、dict を使用している場合は、次のように追加します。

json_key_file_path: JSON_KEY_FILE_PATH

環境変数を使用している場合は、Bash の構成または環境に以下を追加します。

export GOOGLE_ADS_JSON_KEY_FILE_PATH=JSON_KEY_FILE_PATH

PHP

google_ads_php.ini で次のキーを構成します。詳細については、構成ガイドをご覧ください。

; For service account flow.
jsonKeyFilePath = "JSON_KEY_FILE_PATH"
scopes = "https://www.googleapis.com/auth/adwords"

Ruby

google_ads_config.rb で次のキーを構成します。

c.keyfile = 'JSON_KEY_FILE_PATH'

Perl

構成で秘密鍵の JSON パスと委任アカウント ID を設定します。googleads.properties ファイルを使用している場合は、次のように追加します。

jsonKeyFilePath=JSON_KEY_FILE_PATH

環境変数を使用している場合は、Bash の構成または環境に以下を追加します。

export GOOGLE_ADS_JSON_KEY_FILE_PATH=JSON_KEY_FILE_PATH

権限借用を使用した認可

このオプションでは、サービス アカウントを使用して、Google 広告アカウントにアクセスできるユーザーの権限を借用します。この方法は、Google Workspace をご利用のお客様のみを対象としています。サービス アカウントは、同じ Google Workspace 内のユーザー(メールアドレス)の権限を借用できます。

前提条件

  • 所有している Google Workspace ドメインmydomain.commybusiness.com など)

  • Google Ads API 開発者トークン(可能な場合はテスト アカウントも)

  • 使用している言語用のクライアント ライブラリ

  • Google Ads API 用に設定された Google API Console プロジェクト

  • アクセスする Google 広告アカウントに対する権限を持つ Google 広告ユーザー。Google 広告では、権限借用なしでサービス アカウントを使用することはできません。

サービス アカウントによるアクセスの設定

ユーザーの権限借用はドメイン単位でのみ制御されるため、Google OAuth 2.0 でサービス アカウントとアサーション フローを使用するには、Google Workspace にご自分のドメインを登録しておく必要があります。これにより、アプリとそのユーザーはドメイン内の任意のユーザーになりすますことができます。

  1. まず、サービス アカウントと認証情報を作成します。

    サービス アカウント キーを JSON 形式でダウンロードし、サービス アカウント ID をメモします。

  2. サービス アカウント ID と Google Ads API スコープ(https://www.googleapis.com/auth/adwords)をドメイン管理者と共有します。

    ドメイン全体の権限をサービス アカウントに委任するよう、ドメイン管理者にリクエストします。

  3. ドメイン管理者の方は、ヘルプセンターの手順に沿って対応してください。

これで、サービス アカウントを使用して、OAuth 2.0 アサーション フローで Google 広告アカウントにアクセスできるようになりました。

クライアント ライブラリの構成

プログラミング言語に対応するタブを選択して、クライアント ライブラリの構成方法を確認します。

Java

構成で秘密鍵の JSON パスと委任アカウント ID を設定します。ads.properties ファイルを使用している場合は、次のように追加します。

api.googleads.serviceAccountSecretsPath=JSON_KEY_FILE_PATH
api.googleads.serviceAccountUser=IMPERSONATED_EMAIL

詳細については、構成ガイドをご覧ください。

.NET

App.config / Web.config で次のキーを構成します。詳細については、構成ガイドをご覧ください。

<add key="OAuth2Mode" value="SERVICE_ACCOUNT" />
<add key="OAuth2SecretsJsonPath" value="JSON_KEY_FILE_PATH" />

<!-- Supply the email address of the user to impersonate. -->
<add key="OAuth2PrnEmail" value="IMPERSONATED_EMAIL" />

Python

構成で、秘密鍵の JSON パスと権限借用するメールアドレスを設定します。google-ads.yaml file、YAML 文字列、dict を使用している場合は、次のように追加します。

json_key_file_path: JSON_KEY_FILE_PATH
impersonated_email: IMPERSONATED_EMAIL

環境変数を使用している場合は、Bash の構成または環境に以下を追加します。

export GOOGLE_ADS_JSON_KEY_FILE_PATH=JSON_KEY_FILE_PATH
export GOOGLE_ADS_IMPERSONATED_EMAIL=IMPERSONATED_EMAIL

PHP

google_ads_php.ini で次のキーを構成します。詳細については、構成ガイドをご覧ください。

; For service account flow.
jsonKeyFilePath = "JSON_KEY_FILE_PATH"
scopes = "https://www.googleapis.com/auth/adwords"
impersonatedEmail = "IMPERSONATED_EMAIL"

Ruby

google_ads_config.rb で次のキーを構成します。

c.keyfile = 'JSON_KEY_FILE_PATH'
c.impersonate = 'IMPERSONATED_EMAIL'

Perl

構成で秘密鍵の JSON パスと委任アカウント ID を設定します。googleads.properties ファイルを使用している場合は、次のように追加します。

jsonKeyFilePath=JSON_KEY_FILE_PATH
impersonatedEmail=IMPERSONATED_EMAIL

環境変数を使用している場合は、Bash の構成または環境に以下を追加します。

export GOOGLE_ADS_JSON_KEY_FILE_PATH=JSON_KEY_FILE_PATH
export GOOGLE_ADS_IMPERSONATED_EMAIL=IMPERSONATED_EMAIL

セキュリティに関する懸念

サービス アカウントには Google Workspace ドメインに対するドメインレベルの委任管理権限があるため、サービス アカウントに承認済みの Google サービスへのアクセスを許可するキーのファイルは、安全な場所に保管することが重要になります。このサービス アカウントにはドメインのすべてのユーザーになり代わることができる権限が付与されるため、ファイルの保護は特に重要です。

また、サービス アカウントがアクセスできる API を必要最小限のセットに限定することもおすすめします。こうした予防措置を講じると、サービス アカウントのキーのファイルに不正なアクセスが発生した場合でも、攻撃者がアクセスできるデータ量を抑えることができます。