IAP で保護されたリソースへのアクセスの管理

このページでは、Identity-Aware Proxy(IAP)で保護されたリソースへの個々またはグループでのアクセスをリソースレベルで管理する方法について説明します。

概要

IAP を使用すると、Google Cloud プロジェクトの個々のリソースに IAP ポリシーを構成できます。プロジェクトに複数のアプリがある場合は、アプリごとに異なるアクセス ポリシーを設定できます。たとえば、プロジェクトに Compute Engine、Google Kubernetes Engine、App Engine のアプリが含まれている場合があります。App Engine アプリの場合、バージョンとサービスごとに異なるアクセス ポリシーを適用できます。

プロジェクト以上のレベルでアクセスを管理するには、IAM の管理ページを使用します。プロジェクト レベルでアクセス権を持つユーザー(プリンシパル)のリストは、プロジェクト内の IAP で保護されたすべてのリソースに適用されます。

始める前に

始める前に、次のものが必要になります。

  • IAP で保護され、個別またはグループ アクセスを追加するリソース。
  • アクセス権を追加するユーザー名またはグループ名。

IAP の有効化と無効化

IAP を有効または無効にするには、特定の権限が必要です。次の表に、アプリの種類ごとに必要な権限を示します。

アプリの種類 必要な権限
App Engine appengine.applications.update
Compute Engine または Google Kubernetes Engine compute.backendServices.update

上記の権限は、プロジェクト編集者、App Engine 管理者、コンピューティング ネットワーク管理者などの役割によって付与されます。これらの役割は、IAP を有効または無効にできますが、アクセス ポリシーの変更に必要な権限はありません。

また、Cloud Console で IAP を有効にするには、clientauthconfig.clients.create 権限と clientauthconfig.clients.getWithSecret 権限が必要になる場合があります。この 2 つの権限は、プロジェクト編集者の役割によって付与されます。

役割の付与の詳細については、アクセス権の付与、変更、取り消しをご覧ください。

Cloud Console によるアクセス管理

IAP で保護されたリソースへのアクセスを Cloud Console で制御するには、アクセス権の追加または削除の手順に従います。

アクセス権の追加

  1. [Identity-Aware Proxy] ページに移動します。
    [Identity-Aware Proxy] ページに移動

  2. IAP で保護するリソースを選択します。次のリソースを選択すると、リソースのグループが保護されます。

    • すべてのウェブサービス: プロジェクト内のすべてのリソースが保護されます。これは、IAM 管理ページでプロジェクト レベルのアクセス権を付与する場合と異なります。すべてのウェブサービスのリソースレベルで IAP ポリシー管理者の役割が付与されたユーザーには、IAP ポリシーに対する権限のみが付与されます。

    • バックエンド サービス: すべてのバックエンド サービスが保護されます。

  3. 右側の情報パネルで、リソースに対する Identity and Access Management(IAM)ロールを付与するグループまたは個人のメールアドレスを追加します。

  4. [ロールを選択] プルダウンで次のロールを選択して、アクセス ポリシーのロールをプリンシパルに適用します。

    • オーナー: IAP ポリシー管理者と同じアクセス権を付与します。代わりに、IAP ポリシー管理者役割を使用してください。この役割はポリシーの変更のみを許可し、アプリへのアクセスは許可しません。

    • IAP ポリシー管理者: IAP ポリシーに対する管理者権限を付与します。

    • IAP で保護されたウェブアプリ ユーザー: IAP を使用するアプリや他の HTTPS リソースへのアクセス権を付与します。

    • セキュリティ審査担当者: IAP ポリシーの表示と監査を許可します。

  5. メールアドレスの追加と役割の設定が完了したら、[追加] をクリックします

アクセス権の削除

  1. [Identity-Aware Proxy] ページに移動します。
    [Identity-Aware Proxy] ページに移動
  2. IAP で保護されているリソースを選択します。
  3. 右側の情報パネルで、プリンシパルから削除する役割に対応するセクションを選択します。
  4. 展開されたセクションで、役割を削除するユーザー名またはグループ名の横にある [削除] をクリックします。
  5. 表示される [プリンシパルを削除] ダイアログで、[削除] をクリックします。

API によるアクセス管理

IAM には、Google Cloud リソースでアクセス制御ポリシーを作成、管理するための標準的なメソッドが用意されています。

リソースと権限

IAP API を使用すると、IAP で保護されたプロジェクトの個々のリソースに IAM 権限を適用できます。特定のレベルで付与された IAM 権限は、それより下位にあるすべてのレベルに適用されます。たとえば、プロジェクト レベルで付与された権限は、プロジェクト内のすべての Google Cloud リソースに適用されます。プロジェクトとその上位レベルのアクセス権も IAP 管理ページに表示されますが、これらの権限の管理は IAM 管理ページで行います。

ユーザーには、IAP で保護されたアプリにアクセスする権限と IAM ポリシーの更新メソッドを使用する権限が必要です。iap.webServiceVersions.accessViaIAP 権限はアプリへのアクセスを許可します。IAP を使用して SSH や RDP などの管理サービスへのアクセスを制御している場合、ユーザーに iap.tunnelInstances.accessViaIAP 権限が必要になります。

IAP リソースには独自の getIamPolicy 権限と setIamPolicy 権限があり、これらの権限により、このリソースとその子に対するアクセス ポリシーを管理する権限が付与されます。

IAM API を呼び出すには、リソースの URL パスを含む呼び出しを作成します。App Engine アプリサービス バージョンの IAM ポリシーを取得するには、次のような呼び出しを作成します。

https://iap.googleapis.com/v1beta1/projects/PROJECT_NUMBER/iap_web/
appengine-APP_ID/services/SERVICE_ID/versions/VERSION_ID:getIamPolicy
リソースの種類 説明 パス 権限
iap.web プロジェクト内で IAP によって保護されているすべてのウェブアプリ。これは、IAP 管理ページの [すべてのウェブサービス] チェックボックスと同じです。

https://iap.googleapis.com/v1beta1/projects/
PROJECT_NUMBER/iap_web
iap.web.getIamPolicy

iap.web.setIamPolicy
iap.webTypes バックエンド サービスまたは App Engine アプリのいずれか。これは、IAP 管理ページの [バックエンド サービス] チェックボックスや [App Engine アプリ] チェックボックスと同じです。 バックエンド サービス

グローバル スコープ:

https://iap.googleapis.com/v1beta1/projects/
PROJECT_NUMBER/iap_web/compute

リージョン スコープ:

https://iap.googleapis.com/v1beta1/projects/
PROJECT_NUMBER/iap_web/compute-REGION_NAME


App Engine アプリ


https://iap.googleapis.com/v1beta1/projects/
PROJECT_NUMBER/iap_web/appengine-APP_ID
iap.webTypes.getIamPolicy

iap.webTypes.setIamPolicy
iap.webServices Compute Engine バックエンド サービスまたは App Engine アプリサービスのいずれか。バックエンド サービスのパスには、バックエンド サービス ID またはバックエンド サービス名のいずれかを指定できます。 バックエンド サービス

グローバル スコープ:

https://iap.googleapis.com/v1beta1/projects/
PROJECT_NUMBER/iap_web/compute/services/
BACKEND_SERVICE_ID or BACKEND_SERVICE_NAME

リージョン スコープ:

https://iap.googleapis.com/v1beta1/projects/
PROJECT_NUMBER/iap_web/compute-REGION_NAME/
services/BACKEND_SERVICE_ID or BACKEND_SERVICE_NAME


App Engine アプリ


https://iap.googleapis.com/v1beta1/projects/
PROJECT_NUMBER/iap_web/appengine-APP_ID/
services/APP_SERVICE_ID
iap.webServices.getIamPolicy

iap.webServices.setIamPolicy
iap.webServiceVersions App Engine サービスのバージョン。Compute Engine はバージョニングをサポートしていません。

https://iap.googleapis.com/v1beta1/projects/
PROJECT_NUMBER/iap_web/appengine-APP_ID/
services/APP_SERVICE_ID/versions/VERSION_ID
iap.webServiceVersions.getIamPolicy

iap.webServiceVersions.setIamPolicy
iap.tunnel プロジェクト内で IAP によって保護されているすべてのインスタンス。これは、IAP 管理ページの [すべてのトンネル リソース] チェックボックスと同じです。

https://iap.googleapis.com/v1beta1/projects/
PROJECT_NUMBER/iap_tunnel
iap.tunnel.getIamPolicy

iap.tunnel.setIamPolicy
iap.tunnelZones 少なくとも 1 つのインスタンスを持つすべてのゾーン。これは、IAP 管理ページのゾーン名のチェックボックスと同じです(たとえば、us-central1-c)。

https://iap.googleapis.com/v1beta1/projects/
PROJECT_NUMBER/iap_tunnel/zones/ZONE_NAME
iap.tunnelZones.getIamPolicy

iap.tunnelZones.setIamPolicy
iap.tunnelInstances 個々のインスタンス。

https://iap.googleapis.com/v1beta1/projects/
PROJECT_NUMBER/iap_tunnel/zones/ZONE_NAME
/instances/INSTANCE_ID or INSTANCE_NAME
iap.tunnelInstances.getIamPolicy

iap.tunnelInstances.setIamPolicy

役割

次の表に、IAP IAM の役割と、各役割に含まれる IAP 固有の権限のリストを示します。IAM のロールの詳細については、ロールと権限の管理をご覧ください。

役割 含まれている権限 説明
IAP で保護されたウェブアプリ ユーザー(roles/iap.httpsResourceAccessor iap.webServiceVersions.accessViaIAP App Engine と Compute Engine のリソースへのアクセスを許可します。
IAP で保護されたトンネル ユーザー(roles/iap.tunnelResourceAccessor iap.tunnelInstances.accessViaIAP IAP を使用するトンネル リソースへのアクセスを許可します。
IAP ポリシー管理者(roles/iap.admin iap.web.getIamPolicy
iap.web.setIamPolicy
iap.webTypes.getIamPolicy
iap.webTypes.setIamPolicy
iap.webServices.getIamPolicy
iap.webServices.setIamPolicy
iap.webServiceVersions.getIamPolicy
iap.webServiceVersions.setIamPolicy
IAP 管理者権限を付与し、リソースの IAP アクセス ポリシーの管理を許可します。

公開アクセス

リソースへのアクセスを全員に許可するには、以下のプリンシパルのいずれかをそのアクセスリストに追加します。

  • allAuthenticatedUsers: Google アカウントまたはサービス アカウントで認証されるすべてのユーザー。
  • allUsers: 認証されたユーザーと認証されていないユーザーの両方を含む、インターネット上のユーザー。リクエストの署名済みヘッダーには、sub または emailクレームはありません。

公開アクセスが許可されている場合、IAP はリクエストの Cloud Audit Logs ログを生成しません。

現在、公開アクセスを許可するバインディングに条件を関連付けることはできません。たとえば、リクエストパスが /public/ で始まるという条件で誰でもリソースにアクセスできるようにするポリシーは無効です。