このページでは、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 で制御するには、アクセス権の追加または削除の手順に従います。
アクセス権の追加
[Identity-Aware Proxy] ページに移動します。
[Identity-Aware Proxy] ページに移動IAP で保護するリソースを選択します。次のリソースを選択すると、リソースのグループが保護されます。
すべてのウェブサービス: プロジェクト内のすべてのリソースが保護されます。これは、IAM 管理ページでプロジェクト レベルのアクセス権を付与する場合と異なります。すべてのウェブサービスのリソースレベルで IAP ポリシー管理者の役割が付与されたユーザーには、IAP ポリシーに対する権限のみが付与されます。
バックエンド サービス: すべてのバックエンド サービスが保護されます。
右側の情報パネルで、リソースに対する Identity and Access Management(IAM)ロールを付与するグループまたは個人のメールアドレスを追加します。
[ロールを選択] プルダウンで次のロールを選択して、アクセス ポリシーのロールをプリンシパルに適用します。
オーナー: IAP ポリシー管理者と同じアクセス権を付与します。代わりに、IAP ポリシー管理者役割を使用してください。この役割はポリシーの変更のみを許可し、アプリへのアクセスは許可しません。
IAP ポリシー管理者: IAP ポリシーに対する管理者権限を付与します。
IAP で保護されたウェブアプリ ユーザー: IAP を使用するアプリや他の HTTPS リソースへのアクセス権を付与します。
セキュリティ審査担当者: IAP ポリシーの表示と監査を許可します。
メールアドレスの追加と役割の設定が完了したら、[追加] をクリックします
アクセス権の削除
- [Identity-Aware Proxy] ページに移動します。
[Identity-Aware Proxy] ページに移動 - IAP で保護されているリソースを選択します。
- 右側の情報パネルで、プリンシパルから削除する役割に対応するセクションを選択します。
- 展開されたセクションで、役割を削除するユーザー名またはグループ名の横にある [削除] をクリックします。
- 表示される [プリンシパルを削除] ダイアログで、[削除] をクリックします。
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/ |
iap.web.getIamPolicy iap.web.setIamPolicy |
iap.webTypes |
バックエンド サービスまたは App Engine アプリのいずれか。これは、IAP 管理ページの [バックエンド サービス] チェックボックスや [App Engine アプリ] チェックボックスと同じです。 | バックエンド サービス グローバル スコープ: https://iap.googleapis.com/v1beta1/projects/ リージョン スコープ: https://iap.googleapis.com/v1beta1/projects/ App Engine アプリ https://iap.googleapis.com/v1beta1/projects/ |
iap.webTypes.getIamPolicy iap.webTypes.setIamPolicy |
iap.webServices |
Compute Engine バックエンド サービスまたは App Engine アプリサービスのいずれか。バックエンド サービスのパスには、バックエンド サービス ID またはバックエンド サービス名のいずれかを指定できます。 | バックエンド サービス グローバル スコープ: https://iap.googleapis.com/v1beta1/projects/ リージョン スコープ: https://iap.googleapis.com/v1beta1/projects/ App Engine アプリ https://iap.googleapis.com/v1beta1/projects/ |
iap.webServices.getIamPolicy iap.webServices.setIamPolicy |
iap.webServiceVersions |
App Engine サービスのバージョン。Compute Engine はバージョニングをサポートしていません。 | https://iap.googleapis.com/v1beta1/projects/ |
iap.webServiceVersions.getIamPolicy iap.webServiceVersions.setIamPolicy |
iap.tunnel |
プロジェクト内で IAP によって保護されているすべてのインスタンス。これは、IAP 管理ページの [すべてのトンネル リソース] チェックボックスと同じです。 | https://iap.googleapis.com/v1beta1/projects/ |
iap.tunnel.getIamPolicy iap.tunnel.setIamPolicy |
iap.tunnelZones |
1 つ以上のインスタンスを持つゾーン。これは、IAP 管理ページのゾーン名のチェックボックスと同じです(たとえば、us-central1-c )。 |
https://iap.googleapis.com/v1beta1/projects/ |
iap.tunnelZones.getIamPolicy iap.tunnelZones.setIamPolicy |
iap.tunnelInstances |
個々のインスタンス。 | https://iap.googleapis.com/v1beta1/projects/ |
iap.tunnelInstances.getIamPolicy iap.tunnelInstances.setIamPolicy |
iap.tunnelLocations |
1 つ以上の宛先グループを持つリージョン(例: us-central1 )。 |
https://iap.googleapis.com/v1/projects/ |
iap.tunnelLocations.getIamPolicy iap.tunnelLocations.setIamPolicy |
iap.tunnelDestGroups |
個々の宛先グループ。 | https://iap.googleapis.com/v1/projects/ |
iap.tunnelDestGroups.getIamPolicy iap.tunnelDestGroups.setIamPolicy |
ロール
次の表に、IAP IAM の役割と、各役割に含まれる IAP 固有の権限のリストを示します。IAM のロールの詳細については、ロールと権限の管理をご覧ください。
役割 | 含まれている権限 | 説明 |
---|---|---|
IAP で保護されたウェブアプリ ユーザー(roles/iap.httpsResourceAccessor ) |
iap.webServiceVersions.accessViaIAP |
App Engine と Compute Engine のリソースへのアクセスを許可します。 |
IAP で保護されたトンネル ユーザー(roles/iap.tunnelResourceAccessor ) |
iap.tunnelInstances.accessViaIAP iap.tunnelDestGroups.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/
で始まるという条件で誰でもリソースにアクセスできるようにするポリシーは無効です。