OAuth 構成をカスタマイズして IAP を有効にする

このページでは、Identity-Aware Proxy(IAP)の OAuth 構成をカスタマイズするタイミングと方法について説明します。

IAP は、Google が管理する OAuth クライアントを使用してユーザーを認証します。

Google が管理する OAuth クライアントは、ブラウザを通じて IAP 対応アプリケーションにアクセスするとき、同じ組織内のユーザーへのアクセスを制限します。

カスタム OAuth 構成を使用するタイミング

次の操作を行うには、カスタム OAuth 構成を使用する必要があります。

  • 組織外のユーザーに IAP 対応アプリケーションへのアクセスを許可する。
  • 認証中に自分のブランド情報を表示する。
  • アプリケーションへのプログラムからのアクセスを有効にする

OAuth 構成をカスタマイズするときは、OAuth 同意画面を構成する必要があります。そのため、アプリケーションのブランディング情報は Google 検証プロセスを受ける必要があります。確認プロセスの詳細については、OAuth 同意画面の設定をご覧ください。

カスタム OAuth クライアントの認証情報を作成して管理する必要があります。これには、クライアント シークレットを安全に保存し、必要に応じて許可されたユーザーと共有することが含まれます。

Google が管理する OAuth クライアントとカスタム OAuth クライアントの比較

次の表に、Google が管理する OAuth クライアントとカスタム OAuth クライアントの比較を示します。

Google が管理する OAuth クライアント カスタム OAuth クライアント
ユーザー 内部専用 地域が分散した
ブランド Google Cloud ブランド お客様所有のブランド
OAuth の設定 Google による構成 お客様による構成
Oauth 認証情報 Google が管理 顧客管理
アプリケーション アクセス ブラウザフローのみ ブラウザフローとプログラムによるアクセス

カスタム OAuth クライアント構成を使用して IAP を有効にする

App Engine

コンソール

ダイナミック インクルード ファイル

プロジェクトの OAuth 同意画面をまだ構成していない場合は、画面を構成するように指示されます。OAuth 同意画面を構成する方法については、OAuth 同意画面の設定をご覧ください。

IAP アクセス権の設定

  1. [Identity-Aware Proxy] ページに移動します。
    [Identity-Aware Proxy] ページに移動
  2. IAP で保護するプロジェクトを選択します。
  3. アクセスを許可するリソースの横にあるチェックボックスをオンにします。
  4. 右側のパネルで [プリンシパルを追加] をクリックします。
  5. 表示される [メンバーの追加] ダイアログで、プロジェクトに対する IAP で保護されたウェブアプリ ユーザーの役割を付与するグループ、または個人のメールアドレスを追加します。

    このロールを持つことができるプリンシパルの種類は次のとおりです。

    • Google アカウント: user@gmail.com
    • Google グループ: admins@googlegroups.com
    • サービス アカウント: server@example.gserviceaccount.com
    • Google Workspace ドメイン: example.com

    追加する Google アカウントは、自分がアクセスできるものにしてください。

  6. [役割] のプルダウン リストから [Cloud IAP] > [IAP で保護されたウェブアプリ ユーザー] を選択します。
  7. [保存] をクリックします。

IAP の有効化

  1. [Identity-Aware Proxy] ページの [APPLICATIONS] で、アクセスを制限するアプリケーションを見つけます。リソースの IAP を有効にするには、
  2. 表示された [IAP の有効化] ウィンドウで [有効にする] をクリックし、IAP でリソースを保護することを確認します。IAP が有効になった後は、ロードバランサへのすべての接続でログイン認証情報が必要になります。プロジェクトで IAP で保護されたウェブアプリ ユーザーの役割を持つアカウントにのみアクセスが許可されます。

gcloud

プロジェクトと IAP を設定する前に、最新バージョンの gcloud CLI を入手する必要があります。gcloud CLI のインストール手順については、gcloud CLI のインストールをご覧ください。

  1. 認証するには、Google Cloud CLI を使用して次のコマンドを実行します。
    gcloud auth login
  2. 表示された URL に従ってログインします。
  3. ログインしたら、表示される確認コードをコピーしてコマンドラインに貼り付けます。
  4. 次のコマンドを実行して、IAP で保護するリソースを含むプロジェクトを指定します。
    gcloud config set project PROJECT_ID
  5. IAP の OAuth クライアントを作成するの手順に沿って、OAuth 同意画面を構成し、OAuth クライアントを作成します。
  6. OAuth クライアント ID とシークレットを保存します。
  7. IAP を有効にするには、次のコマンドを実行します。
    gcloud iap web enable \
        --oauth2-client-id=CLIENT_ID \
        --oauth2-client-secret=CLIENT_SECRET \
        --resource-type=app-engine \
        --versions=VERSION

IAP を有効にすると、gcloud CLI で roles/iap.httpsResourceAccessor の IAM ロールを使用して IAP アクセス ポリシーを変更できます。詳しくは、ロールと権限の管理をご覧ください。

API

  1. IAP の OAuth クライアントを作成するの手順に沿って、OAuth 同意画面を構成し、OAuth クライアントを作成します。

  2. OAuth クライアント ID とシークレットを保存します。

  3. 次のコマンドを実行して settings.json ファイルを準備します。

    cat << EOF > settings.json
    {
    "iap":
      {
        "enabled":true,
        "oauth2ClientId" : CLIENT_ID,
        "oauth2ClientSecret" : CLIENT_SECRET,
      }
    }
    EOF
    

  4. 次のコマンドを実行して、IAP を有効にします。

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d @settings.json \
    "https://appengine.googleapis.com/v1/apps/PROJECT_ID?updateMask=iap"
    

IAP を有効にすると、Google Cloud CLI で roles/iap.httpsResourceAccessor の IAM ロールを使用して IAP アクセス ポリシーを変更できます。詳しくは、ロールと権限の管理をご覧ください。

Compute Engine

コンソール

プロジェクトの OAuth 同意画面をまだ構成していない場合は、画面を構成するように指示されます。OAuth 同意画面を構成する方法については、OAuth 同意画面の設定をご覧ください。

IAP アクセス権の設定

  1. [Identity-Aware Proxy] ページに移動します。
    [Identity-Aware Proxy] ページに移動
  2. IAP で保護するプロジェクトを選択します。
  3. アクセスを許可するリソースの横にあるチェックボックスをオンにします。

    リソースが表示されない場合は、リソースが作成され、BackendConfig Compute Engine Ingress コントローラが同期されていることを確認してください。

    バックエンド サービスが利用可能であることを確認するには、次の gcloud コマンドを実行します。

    gcloud compute backend-services list
  4. 右側のパネルで [プリンシパルを追加] をクリックします。
  5. 表示される [メンバーの追加] ダイアログで、プロジェクトに対する IAP で保護されたウェブアプリ ユーザーの役割を付与するグループ、または個人のメールアドレスを追加します。

    このロールを持つことができるプリンシパルの種類は次のとおりです。

    • Google アカウント: user@gmail.com
    • Google グループ: admins@googlegroups.com
    • サービス アカウント: server@example.gserviceaccount.com
    • Google Workspace ドメイン: example.com

    追加する Google アカウントは、自分がアクセスできるものにしてください。

  6. [役割] のプルダウン リストから [Cloud IAP] > [IAP で保護されたウェブアプリ ユーザー] を選択します。
  7. [保存] をクリックします。

gcloud

プロジェクトと IAP を設定する前に、最新バージョンの gcloud CLI を入手する必要があります。gcloud CLI のインストール方法については、gcloud CLI のインストールをご覧ください。

  1. 認証するには、Google Cloud CLI を使用して次のコマンドを実行します。
    gcloud auth login
  2. 表示された URL に従ってログインします。
  3. ログインしたら、表示される確認コードをコピーしてコマンドラインに貼り付けます。
  4. 次のコマンドを実行して、IAP で保護するリソースを含むプロジェクトを指定します。
    gcloud config set project PROJECT_ID
  5. IAP の OAuth クライアントを作成するの手順に沿って、OAuth 同意画面を構成し、OAuth クライアントを作成します。
  6. OAuth クライアント ID とシークレットを保存します。
  7. IAP を有効にするには、グローバル スコープまたはリージョン スコープのコマンドを実行します。

    グローバル スコープ
    gcloud compute backend-services update BACKEND_SERVICE_NAME \
        --global \
        --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
    リージョン スコープ
    gcloud compute backend-services update BACKEND_SERVICE_NAME \
        --region REGION_NAME \
        --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
        

IAP を有効にすると、gcloud CLI で roles/iap.httpsResourceAccessor の IAM ロールを使用して IAP アクセス ポリシーを変更できます。詳しくは、ロールと権限の管理をご覧ください。

API

  1. IAP の OAuth クライアントを作成するの手順に沿って、OAuth 同意画面を構成し、OAuth クライアントを作成します。

  2. OAuth クライアント ID とシークレットを保存します。

  3. 次のコマンドを実行して settings.json ファイルを準備します。

    cat << EOF > settings.json
    {
    "iap":
      {
        "enabled":true
      }
    }
    EOF
    

  4. 次のコマンドを実行して、IAP を有効にします。

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d @settings.json \
    "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/REGION/backendServices/BACKEND_SERVICE_NAME"
    

IAP を有効にすると、gcloud CLI で roles/iap.httpsResourceAccessor の IAM ロールを使用して IAP アクセス ポリシーを変更できます。詳しくは、ロールと権限の管理をご覧ください。

Cloud Run

コンソール

プロジェクトの OAuth 同意画面をまだ構成していない場合は、画面を構成するように指示されます。OAuth 同意画面を構成する方法については、OAuth 同意画面の設定をご覧ください。

IAP アクセス権の設定

  1. Identity-Aware Proxy ページを開きます。
    Identity-Aware Proxy に移動
  2. IAP で保護するプロジェクトを選択します。
  3. [アプリケーション] で、メンバーを追加するロードバランサ バックエンド サービスの横にあるチェックボックスをオンにします。
  4. 右側のパネルで [メンバーを追加] をクリックします。
  5. [メンバーの追加] ダイアログで、プロジェクトに対する IAP で保護されたウェブアプリ ユーザーのロールを持つグループ、または個人のアカウントを入力します。メンバーにすることができるアカウントの種類は以下のとおりです。

    • Google アカウント: user@gmail.com - これは、user@google.com やその他の Google Workspace ドメインなどの Google Workspace のアカウントでもかまいません。
    • Google グループ: admins@googlegroups.com
    • サービス アカウント: server@example.gserviceaccount.com
    • Google Workspace ドメイン: example.com
  6. [ロール] リストから [Cloud IAP] > [IAP で保護されたウェブアプリ ユーザー] を選択します。

  7. [保存] をクリックします。

IAP の有効化

  1. IAP ページの [アプリケーション] で、アクセスを制限するロードバランサのバックエンド サービスを見つけます。[IAP] 切り替えボタンをクリックして、リソースで IAP を有効にします。
  2. 表示された [IAP の有効化] ウィンドウで [有効にする] をクリックし、IAP でリソースを保護することを確認します。IAP が有効になった後は、ロードバランサへのすべての接続でログイン認証情報が必要になります。プロジェクトで IAP で保護されたウェブアプリ ユーザーの役割を持つアカウントにのみアクセスが許可されます。
  3. IAP に対してバックエンド Cloud Run サービスへのトラフィックの送信を承認するには、サービスにプリンシパルを追加するの手順に沿って、次の原則とロールを追加します。

    • プリンシパル: service-[PROJECT-NUMBER]@gcp-sa-iap.iam.gserviceaccount.com
    • ロール: Cloud Run 起動元

gcloud

  1. IAP の OAuth クライアントを作成するの手順に沿って、OAuth 同意画面を構成し、OAuth クライアントを作成します。
  2. OAuth クライアント ID とシークレットを保存します。
  3. まだ作成していない場合は、次のコマンドを実行してサービス アカウントを作成します。以前にサービス アカウントを作成している場合、コマンドを実行しても重複するサービス アカウントは作成されません。
    gcloud beta services identity create \
        --service=iap.googleapis.com --project=PROJECT_ID
    
  4. 次のコマンドを実行して、前の手順で作成したサービス アカウントに起動元権限を付与します。
    gcloud run services add-iam-policy-binding SERVICE-NAME \
        --member='serviceAccount:service-PROJECT-NUMBER@gcp-sa-iap.iam.gserviceaccount.com' \
        --role='roles/run.invoker'
    
  5. ロードバランサのバックエンド サービスがグローバルかリージョンかに応じて、グローバル スコープまたはリージョン スコープのコマンドを実行して IAP を有効にします。前のステップの OAuth クライアント ID とシークレットを使用します。

    グローバル スコープ

    gcloud compute backend-services update BACKEND_SERVICE_NAME \
        --global \
        --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
    

    リージョン スコープ

    gcloud compute backend-services update BACKEND_SERVICE_NAME \
        --region REGION_NAME \
        --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
    
    以下を置き換えます。

    • BACKEND_SERVICE_NAME: バックエンド サービスの名前。
    • CLIENT_ID: 前のステップの OAuth クライアント ID。
    • CLIENT_SECRET: 前のステップの OAuth クライアント シークレット。
    • REGION_NAME: IAP を有効にするリージョン。

IAP を有効にすると、Google Cloud CLI で Identity and Access Management ロール roles/iap.httpsResourceAccessor を使用して IAP アクセス ポリシーを変更できます。詳細については、ロールと権限の管理をご覧ください。