このガイドでは、サービス アカウントを使って Google Ads API にアクセスする方法を説明します。
サービス アカウントは、個々のエンドユーザーではなくアプリに属するアカウントです。サービス アカウントを使用すると、ウェブアプリと Google サービス間でサーバー間のやり取りが可能になります。アプリはサービス アカウントの代わりに Google API を呼び出すため、ユーザーが直接関与することはありません。
サービス アカウントは手動認証を必要としない OAuth 2.0 フローに対応しており、アプリケーションだけがアクセスできるキーファイルを使用します。
サービス アカウントの主なメリットは次の 2 つです。
Google API へのアクセスに必要な承認作業を、設定の一環として行います。そのため、手動操作が必要となる OAuth 2.0 の他のフローでは、関連する面倒な作業が必要ありません。
OAuth 2.0 アサーション フローでは、必要に応じて他のユーザーになり代わってアプリケーションを機能させることができます。
サービス アカウントで承認する方法は、直接または権限借用による 2 つあります。
アカウントへの直接アクセスによる承認
このオプションでは、サービス アカウントに Google 広告アカウントへの直接アクセス権を付与します。
アカウント アクセスの設定
まず、サービス アカウントと認証情報を作成します。
サービス アカウント キーを JSON 形式でダウンロードし、サービス アカウント ID とメールアドレスをメモします。
管理者として Google 広告アカウントにログインします。[管理] > [アクセスとセキュリティ] に移動します。
[ユーザー] タブの [+] ボタンをクリックします。
[メール] 入力ボックスにサービス アカウントのメールアドレスを入力します。適切なレベルのアカウント アクセス権限を選択し、[アカウントを追加] ボタンをクリックします。なお、サービス アカウントではメールと管理者のアクセスレベルはサポートされていません。
サービス アカウントにアクセス権が付与されます。
クライアント ライブラリの構成
プログラミング言語に対応するタブを選択して、クライアント ライブラリの構成方法を確認します。
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.com
やmybusiness.com
など)Google Ads API 開発者トークン(可能な場合はテスト アカウントも)
使用している言語用のクライアント ライブラリ
Google Ads API 用に設定された Google API Console プロジェクト
アクセスする Google 広告アカウントに対する権限を持つ Google 広告ユーザー。Google 広告では、権限借用なしでサービス アカウントを使用することはできません。
サービス アカウントによるアクセスの設定
ユーザーの権限借用はドメイン単位でのみ制御されるため、Google OAuth 2.0 でサービス アカウントとアサーション フローを使用するには、Google Workspace にご自分のドメインを登録しておく必要があります。これにより、アプリとそのユーザーはドメイン内の任意のユーザーになりすますことができます。
まず、サービス アカウントと認証情報を作成します。
サービス アカウント キーを JSON 形式でダウンロードし、サービス アカウント ID をメモします。
サービス アカウント ID と Google Ads API スコープ(
https://www.googleapis.com/auth/adwords
)をドメイン管理者と共有します。ドメイン全体の権限をサービス アカウントに委任するよう、ドメイン管理者にリクエストします。
ドメイン管理者の方は、ヘルプセンターの手順に沿って対応してください。
これで、サービス アカウントを使用して、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 を必要最小限のセットに限定することもおすすめします。こうした予防措置を講じると、サービス アカウントのキーのファイルに不正なアクセスが発生した場合でも、攻撃者がアクセスできるデータ量を抑えることができます。