このガイドでは、Google Cloudで OAuth ベースのアプリケーション統合を管理する方法について説明します。
OAuth ベースのアプリケーションを統合する大まかな手順は次のとおりです。
- OAuth クライアントを作成します。
- OAuth クライアント認証情報を作成します。
- OAuth クライアント認証情報で、クライアント シークレットを取得します。クライアント シークレットの保存とアクセスに関連するリスクと、それらを軽減するための戦略については、OAuth クライアントと認証情報のセキュリティに関するリスクと軽減策をご覧ください。
これらの手順を完了すると、OAuth ベースのアプリケーションはGoogle Cloud のプロダクトとデータにアクセスできるようになります。
始める前に
Google Cloud 組織を設定する必要があります。
Google Cloud CLI をインストールします。 インストール後、次のコマンドを実行して Google Cloud CLI を初期化します。
gcloud init
外部 ID プロバイダ(IdP)を使用している場合は、まずフェデレーション ID を使用して gcloud CLI にログインする必要があります。
OAuth アプリケーションを登録する組織で Workforce Identity プールとプロバイダを設定する必要があります。Microsoft Entra ID、Okta、その他の OIDC プロバイダと SAML 2.0 プロバイダの Workforce Identity 連携を設定する方法を確認してください。
必要なロール
組織に OAuth アプリケーションを登録するために必要な権限を取得するには、プロジェクトに対する IAM OAuth クライアント管理者(roles/iam.oauthClientAdmin
)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
OAuth クライアントを管理する
このセクションでは、OAuth クライアントを管理する方法について説明します。
OAuth クライアントを作成する
OAuth クライアントを作成するには、次の操作を行います。
gcloud
gcloud iam oauth-clients create APP_OAUTH_CLIENT_ID \
--project=PROJECT_ID \
--location=global \
--client-type="CONFIDENTIAL_CLIENT" \
--display-name="My OAuth application" \
--description="An application registration for MyApp" \
--allowed-scopes="https://www.googleapis.com/auth/cloud-platform" \
--allowed-redirect-uris="REDIRECT_URI" \
--allowed-grant-types="authorization_code_grant"
次のように置き換えます。
APP_OAUTH_CLIENT_ID
: この OAuth クライアントを表すクライアント ID。PROJECT_ID
: Workforce Identity プールとプロバイダを作成したプロジェクトの ID。プロジェクトは、Workforce プールとプロバイダが作成された組織で作成する必要があります。REDIRECT_URI
: OAuth アプリケーションのリダイレクト URI(例:https://myapp.com/signin-callback
)。
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
-d "{ \
'allowedGrantTypes': ['AUTHORIZATION_CODE_GRANT'], \
'allowedRedirectUris': ['REDIRECT_URI'], \
'allowedScopes': ['https://www.googleapis.com/auth/cloud-platform'], \
'clientType': 'CONFIDENTIAL_CLIENT', \
'description': 'My OAuth client description', \
'disabled': false, \
'displayName': 'My OAuth client'}" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients\?oauthClientId\=APP_OAUTH_CLIENT_ID
次のように置き換えます。
PROJECT_ID
: Workforce Identity プールとプロバイダを作成したプロジェクトの ID。プロジェクトは、Workforce プールとプロバイダが作成された組織で作成する必要があります。REDIRECT_URI
: OAuth アプリケーションのリダイレクト URI(例:https://myapp.com/signin-callback
)。APP_OAUTH_CLIENT_ID
: この OAuth クライアントを表すクライアント ID。
アプリケーションを登録したら、OAuth クライアント認証情報を作成し、OAuth アプリケーションがGoogle Cloudへのアクセスに使用するシークレットを取得します。
OAuth クライアントのリストを取得する
登録済みの OAuth クライアントのリストを取得するには、次のコマンドを実行します。
gcloud
gcloud iam oauth-clients list \
--project=PROJECT_ID \
--location=global
REST
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients
PROJECT_ID
は、OAuth アプリケーションが登録されているプロジェクトの ID に置き換えます。
OAuth クライアントの説明を取得する
OAuth クライアントの説明を取得するには、次のコマンドを実行します。
gcloud
gcloud iam oauth-clients describe APP_OAUTH_CLIENT_ID \
--project PROJECT_ID \
--location global
次のように置き換えます。
APP_OAUTH_CLIENT_ID
: 説明を取得する OAuth クライアントの IDPROJECT_ID
: OAuth アプリケーションを登録したプロジェクトの ID
REST
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID
次のように置き換えます。
PROJECT_ID
: OAuth アプリケーションを登録したプロジェクトの IDAPP_OAUTH_CLIENT_ID
: 説明を取得する OAuth クライアントの ID
OAuth クライアントを更新する
OAuth クライアントを更新するには、次のコマンドを実行します。
gcloud
gcloud iam oauth-clients update APP_OAUTH_CLIENT_ID \
--project=PROJECT_ID \
--location=global \
--allowed-redirect-uris="REDIRECT_URI"
次のように置き換えます。
APP_OAUTH_CLIENT_ID
: 更新する OAuth クライアントの OAuth クライアント IDPROJECT_ID
: OAuth アプリケーションを登録したプロジェクトの IDREDIRECT_URI
: OAuth アプリケーションのリダイレクト URI
他のフィールドを更新するには、gcloud iam oauth-clients update
に記載されているフラグを使用します。
REST
curl -d'{"allowedRedirectUris":"REDIRECT_URI"}' \
-H "Content-Type: application/json" -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID?update_mask=allowed_redirect_uris
次のように置き換えます。
PROJECT_ID
: OAuth アプリケーションを登録したプロジェクトの IDAPP_OAUTH_CLIENT_ID
: 更新する OAuth クライアントの OAuth クライアント IDREDIRECT_URI
: OAuth クライアントのリダイレクト URI
他のフィールドを更新するには、update_mask
を gcloud iam oauth-clients update
に記載されているフィールド名に設定します。
OAuth クライアントを削除する
OAuth クライアントを削除するには、次のコマンドを実行します。
gcloud
gcloud iam oauth-clients delete APP_OAUTH_CLIENT_ID \
--project PROJECT_ID \
--location global
次のように置き換えます。
APP_OAUTH_CLIENT_ID
: 削除する OAuth クライアント IDPROJECT_ID
: OAuth アプリケーションを登録したプロジェクトの ID
REST
curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID
次のように置き換えます。
PROJECT_ID
: OAuth アプリケーションを登録したプロジェクトの IDAPP_OAUTH_CLIENT_ID
: 削除する OAuth クライアント ID
OAuth クライアント認証情報を管理する
このセクションでは、OAuth クライアントの OAuth クライアント認証情報を管理する方法について説明します。
OAuth クライアント認証情報を作成する
OAuth クライアント認証情報を作成するには、次のコマンドを実行します。
gcloud
gcloud iam oauth-clients credentials create APP_OAUTH_CLIENT_CREDENTIAL_ID \
--oauth-client=APP_OAUTH_CLIENT_ID \
--display-name='My OAuth client credential' \
--location='global'
次のように置き換えます。
APP_OAUTH_CLIENT_CREDENTIAL_ID
: このクライアント認証情報を表す IDAPP_OAUTH_CLIENT_ID
: 登録済みの OAuth クライアント アプリケーションの説明から取得できる OAuth クライアント ID
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
-d "{'disabled': false, 'displayName': 'My OAuth client credential'}" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials\?oauthClientCredentialId=APP_OAUTH_CLIENT_CREDENTIAL_ID
次のように置き換えます。
PROJECT_ID
: OAuth アプリケーションを登録したプロジェクトの IDAPP_OAUTH_CLIENT_ID
: 登録済みの OAuth クライアント アプリケーションの説明から取得できる OAuth クライアント IDAPP_OAUTH_CLIENT_CREDENTIAL_ID
: このクライアント認証情報を表す ID
OAuth クライアント認証情報のリストを取得する
OAuth クライアント認証情報のリストを取得するには、次のコマンドを実行します。
gcloud
gcloud iam oauth-clients credentials list \
--oauth-client=APP_OAUTH_CLIENT_ID \
--project=PROJECT_ID \
--location=global
次のように置き換えます。
APP_OAUTH_CLIENT_ID
: 認証情報のリストを取得する OAuth クライアント IDPROJECT_ID
: OAuth アプリケーションを登録したプロジェクトの ID
REST
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/$PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials
次のように置き換えます。
PROJECT_ID
: OAuth アプリケーションを登録したプロジェクトの IDAPP_OAUTH_CLIENT_ID
: 認証情報のリストを取得する OAuth クライアント ID
OAuth クライアント認証情報の説明を取得する
OAuth クライアント認証情報の説明を取得するには、次のコマンドを実行します。出力を調べることで、クライアント シークレットを確認できます。
gcloud
gcloud iam oauth-clients credentials describe APP_OAUTH_CLIENT_CREDENTIAL_ID \
--oauth-client=APP_OAUTH_CLIENT_ID \
--location='global'
次のように置き換えます。
APP_OAUTH_CLIENT_CREDENTIAL_ID
: OAuth クライアントのリダイレクト URIAPP_OAUTH_CLIENT_ID
: クライアント アプリケーションの登録の説明から取得できる OAuth クライアント ID
REST
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials/APP_OAUTH_CLIENT_CREDENTIAL_ID
次のように置き換えます。
PROJECT_ID
: OAuth アプリケーションを登録したプロジェクトの IDAPP_OAUTH_CLIENT_CREDENTIAL_ID
: OAuth クライアントのリダイレクト URIAPP_OAUTH_CLIENT_ID
: クライアント アプリケーションの登録の説明から取得できる OAuth クライアント ID
出力の clientSecret
はクライアント シークレットです。これは、OAuth アプリケーションが Google Cloudへのアクセスに使用するシークレットです。
OAuth クライアント認証情報を更新する
OAuth クライアント認証情報を更新するには、次のコマンドを実行します。
gcloud
gcloud iam oauth-clients credentials update APP_OAUTH_CLIENT_CREDENTIAL_ID \
--client-id=APP_OAUTH_CLIENT_ID \
--display-name="My new credential name" \
--location=global
REST
curl -d'{"displayName":"My new credential name"}' -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials/APP_OAUTH_CLIENT_CREDENTIAL_ID?update_mask=display_name
次のように置き換えます。
PROJECT_ID
: OAuth アプリケーションを登録したプロジェクトの IDAPP_OAUTH_CLIENT_CREDENTIAL_ID
: OAuth クライアントのリダイレクト URIAPP_OAUTH_CLIENT_ID
: クライアント アプリケーションの登録の説明から取得できる OAuth クライアント ID
OAuth クライアント認証情報を無効にする
OAuth クライアント認証情報を削除する前に、無効にする必要があります。OAuth クライアント認証情報を無効にするには、次のコマンドを実行します。
gcloud
gcloud iam oauth-clients credentials update APP_OAUTH_CLIENT_CREDENTIAL_ID \
--oauth-client=APP_OAUTH_CLIENT_ID \
--disabled \
--project=PROJECT_ID \
--location=global
次のように置き換えます。
PROJECT_ID
: OAuth アプリケーションを登録したプロジェクトの IDAPP_OAUTH_CLIENT_ID
: OAuth クライアント IDAPP_OAUTH_CLIENT_CREDENTIAL_ID
: 無効にするクライアント認証情報 ID
REST
curl -d'{"disabled":"true"}' \
-H "Content-Type: application/json" -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials/APP_OAUTH_CLIENT_CREDENTIAL_ID?update_mask=disabled
次のように置き換えます。
PROJECT_ID
: OAuth アプリケーションを登録したプロジェクトの IDAPP_OAUTH_CLIENT_ID
: OAuth クライアント IDAPP_OAUTH_CLIENT_CREDENTIAL_ID
: 無効にするクライアント認証情報 ID
OAuth クライアント認証情報を削除する
OAuth クライアント認証情報を削除するには、次のコマンドを実行します。
gcloud
gcloud iam oauth-clients credentials delete APP_OAUTH_CLIENT_CREDENTIAL_ID \
--project=PROJECT_ID \
--oauth-client=APP_OAUTH_CLIENT_ID \
--location=global
次のように置き換えます。
APP_OAUTH_CLIENT_CREDENTIAL_ID
: OAuth クライアント IDPROJECT_ID
: OAuth アプリケーションを登録したプロジェクトの IDAPP_OAUTH_CLIENT_ID
: クライアント認証情報 ID
REST
curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials/APP_OAUTH_CLIENT_CREDENTIAL_ID
次のように置き換えます。
PROJECT_ID
: OAuth アプリケーションを登録したプロジェクトの IDAPP_OAUTH_CLIENT_ID
: クライアント認証情報 IDAPP_OAUTH_CLIENT_CREDENTIAL_ID
: OAuth クライアント ID