このページでは、Identity-Aware Proxy(IAP) で Compute Engine インスタンスを保護する方法について説明します。
始める前に
Compute Engine で IAP を有効にするには、次のものが必要です。
- 課金が有効になっている Google Cloud コンソール プロジェクト。
- ロードバランサで処理される 1 つ以上の Compute Engine インスタンスのグループ。
- 外部 HTTPS ロードバランサの設定についての詳細の確認。
- 内部 HTTP ロードバランサの設定についての詳細の確認。
- ロードバランサのアドレスに登録されたドメイン名。
- すべてのリクエストに ID があることを確認するアプリケーション コード。
- ユーザーの ID の取得をご覧ください。
Compute Engine インスタンスをまだ設定していない場合は、Compute Engine の IAP の設定をご覧ください。
IAP は、Google が管理する OAuth クライアントを使用してユーザーを認証します。組織内のユーザーのみが IAP 対応アプリケーションにアクセスできます。組織外のユーザーにアクセスを許可するには、外部アプリケーション用に IAP を有効にするをご覧ください。
IAP は、Compute Engine のバックエンド サービスまたは Compute Engine の転送ルールで有効にできます。Compute Engine バックエンド サービスで IAP を有効にすると、そのバックエンド サービスのみが IAP によって保護されます。Compute Engine 転送ルールで IAP を有効にすると、転送ルールの背後にあるすべての Compute Engine インスタンスが IAP によって保護されます。
転送ルールで IAP を有効にする
転送ルールで IAP を有効にするには、ロードバランサの認可ポリシー フレームワークを使用します。
gcloud
- 运行以下命令以准备
policy.yaml文件。 该政策允许 IP 地址范围为10.0.0.0/24的客户端在转发规则上启用 IAP。
$ cat << EOF > policy.yaml
action: CUSTOM
description: authz policy with Cloud IAP
name: AUTHZ_POLICY_NAME
httpRules:
- from:
sources:
- ipBlocks:
- prefix: "10.0.0.0"
length: 24
customProvider:
cloudIap: {}
target:
loadBalancingScheme: EXTERNAL_MANAGED
resources:
- https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/FORWARDING_RULE_ID
EOF
- 运行以下命令以在转发规则上启用 IAP。
gcloud network-security authz-policies import AUTHZ_POLICY_NAME \ --source=policy.yaml \ --location=LOCATION \ --project=PROJECT_ID
替换以下内容:
- PROJECT_ID:项目 ID。 Google Cloud
- LOCATION:资源所在的区域。
- FORWARDING_RULE_ID:转发规则资源的 ID。
- AUTHZ_POLICY_NAME:授权政策的名称。
API
- 运行以下命令以准备
policy.json文件。cat << EOF > policy.json { "name": "AUTHZ_POLICY_NAME", "target": { "loadBalancingScheme": "INTERNAL_MANAGED", "resources": [ "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/FORWARDING_RULE_ID" ], }, "action": "CUSTOM", "httpRules": [ { "from": { "sources": { "ipBlocks": [ { "prefix": "10.0.0.0", "length": 24 } ] } } } ], "customProvider": { "cloudIap": {} } } EOF 运行以下命令以在转发规则上启用 IAP。
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @policy.json \ "https://networksecurity.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/authzPolicies"
替换以下内容:
- PROJECT_ID: Google Cloud 项目 ID。
- LOCATION:资源所在的区域。
- FORWARDING_RULE_ID:转发规则资源的 ID。
- AUTHZ_POLICY_NAME:授权政策的名称。
転送ルールで IAP を有効にした後で、リソースに権限を適用できます。
Compute Engine バックエンド サービスで IAP を有効にする
Compute Engine バックエンド サービスで IAP を有効にするには、そのバックエンド サービスを使用します。
Console
Google Cloud コンソールを使用して IAP を有効にする場合、Google が管理する OAuth クライアントは使用できません。
プロジェクトの OAuth 同意画面をまだ構成していない場合は、画面を構成するように指示されます。OAuth 同意画面を構成する方法については、OAuth 同意画面の設定をご覧ください。
GKE クラスタ バージョン 1.24 以降を実行している場合は、Kubernetes Gateway API を使用して
IAP と GKE を構成できます。これを行うには、次の手順を完了してから、
IAP を構成するの手順に沿って操作します。
BackendConfig は構成しないでください。
IAP アクセス権の設定
-
[Identity-Aware Proxy] ページに移動します。
[Identity-Aware Proxy] ページに移動 - IAP で保護するプロジェクトを選択します。
-
アクセスを許可するリソースの横にあるチェックボックスをオンにします。
リソースが表示されない場合は、リソースが作成されていることと、 BackendConfig Compute Engine 上り(内向き)コントローラが同期されていることを確認してください。
バックエンド サービスが使用可能であることを確認するには、次の gcloud コマンドを実行します。
gcloud compute backend-services list - 右側のパネルで [プリンシパルを追加] をクリックします。
-
表示される [メンバーの追加] ダイアログで、プロジェクトに対する IAP で保護されたウェブアプリ ユーザーの役割を付与するグループ、または個人のメールアドレスを追加します。
このロールを持つことができるプリンシパルの種類は次のとおりです。
- Google アカウント: user@gmail.com
- Google グループ: admins@googlegroups.com
- サービス アカウント: server@example.
- Google Workspace ドメイン: example.com
追加する Google アカウントは、自分がアクセスできるものにしてください。
- [役割] のプルダウン リストから [Cloud IAP] > [IAP で保護されたウェブアプリ ユーザー] を選択します。
- [保存] をクリックします。
IAP の有効化
-
[Identity-Aware Proxy] ページの [アプリケーション] で、アクセスを制限する instance group にサービスを提供するロードバランサを探します。リソースの IAP を有効にするには、
IAP を有効にするには:- ロードバランサのフロントエンド の構成内では、少なくとも 1 つのプロトコルは HTTPS でなければなりません。ロードバランサの設定をご覧ください。
-
compute.backendServices.update、clientauthconfig.clients.create、clientauthconfig.clients.update、 およびclientauthconfig.clients.getWithSecret権限が必要です。上記の権限 は、プロジェクト編集者などの役割によって付与されます。詳細については、 IAP で保護されたリソースへのアクセスを管理するをご覧ください。
- 表示された [IAP の有効化] ウィンドウで [有効にする] をクリックし、IAP でリソースを保護することを確認します。IAP が有効になった後は、ロードバランサへのすべての接続でログイン認証情報が必要になります。プロジェクトで IAP で保護されたウェブアプリ ユーザーの役割を持つアカウントにのみアクセスが許可されます。
gcloud
在设置项目和 IAP 之前,您需要最新版本的 gcloud CLI。如需了解如何安装 gcloud CLI, 请参阅 安装 gcloud CLI。
-
如需进行身份验证,请使用 Google Cloud CLI 并运行以下命令。
gcloud auth login - 如需登录,请按照显示的网址操作。
- 登录后,复制显示的验证码并将其粘贴到命令行中。
-
运行以下命令,指定包含要使用 IAP 保护的资源的项目。
gcloud config set project PROJECT_ID -
如需启用 IAP,请运行全局范围或区域范围的命令。
全球范围 区域范围gcloud compute backend-services update BACKEND_SERVICE_NAME --global --iap=enabledgcloud compute backend-services update BACKEND_SERVICE_NAME --region REGION_NAME --iap=enabled
启用 IAP 后,您可以使用 gcloud CLI 通过 IAM 角色 roles/iap.httpsResourceAccessor 修改 IAP 访问权限政策。详细了解如何
管理角色和权限。
API
次のコマンドを実行して
settings.jsonファイルを準備します。cat << EOF > settings.json { "iap": { "enabled":true } } EOF次のコマンドを実行して 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 を有効にすると、Google Cloud CLI で roles/iap.httpsResourceAccessor の IAM ロールを使用して IAP アクセス ポリシーを変更できます。詳しくは、ロールと権限の管理をご覧ください。