このページでは、Identity-Aware Proxy(IAP) で Compute Engine インスタンスを保護する方法について説明します。
Google Cloud 上にないリソースを保護するには、オンプレミスのアプリとリソースの保護をご覧ください。
始める前に
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
ファイルを準備します。
$ cat << EOF > policy.yaml
action: CUSTOM
description: authz policy with Cloud IAP
name: AUTHZ_POLICY_NAME
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 beta network-security authz-policies import AUTHZ_POLICY_NAME \ --source=policy.yaml \ --location=LOCATION \ --project=PROJECT_ID
以下を置き換えます。
- PROJECT_ID: Google Cloud プロジェクト ID。
- 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": [], "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 @settings.json \ "https://networksecurity.googleapis.com/v1beta1/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 を有効にするには、そのバックエンド サービスを使用します。
コンソール
Google Cloud コンソールを使用して IAP を有効にする場合、Google が管理する OAuth クライアントは使用できません。
プロジェクトの OAuth 同意画面をまだ構成していない場合は、画面を構成するように指示されます。OAuth 同意画面を構成する方法については、OAuth 同意画面の設定をご覧ください。
IAP アクセス権の設定
-
[Identity-Aware Proxy] ページに移動します。
[Identity-Aware Proxy] ページに移動 - IAP で保護するプロジェクトを選択します。
-
アクセスを許可するリソースの横にあるチェックボックスをオンにします。
リソースが表示されない場合は、リソースが作成され、BackendConfig Compute Engine Ingress コントローラが同期されていることを確認します。
バックエンド サービスが利用可能であることを確認するには、次の gcloud コマンドを実行します。
gcloud compute backend-services list
- 右側のパネルで [プリンシパルを追加] をクリックします。
-
表示される [メンバーの追加] ダイアログで、プロジェクトに対する IAP で保護されたウェブアプリ ユーザーの役割を付与するグループ、または個人のメールアドレスを追加します。
このロールを持つことができるプリンシパルの種類は次のとおりです。
- Google アカウント: user@gmail.com
- Google グループ: admins@googlegroups.com
- サービス アカウント: server@example。gserviceaccount.com
- 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.getWithSecret
権限が必要です。上記の権限は、プロジェクト編集者などの役割によって付与されます。詳細については、IAP で保護されたリソースへのアクセスを管理するをご覧ください。
- 表示された [IAP の有効化] ウィンドウで [有効にする] をクリックし、IAP でリソースを保護することを確認します。IAP が有効になった後は、ロードバランサへのすべての接続でログイン認証情報が必要になります。プロジェクトで IAP で保護されたウェブアプリ ユーザーの役割を持つアカウントにのみアクセスが許可されます。
gcloud
プロジェクトと IAP を設定する前に、最新バージョンの gcloud CLI を入手する必要があります。gcloud CLI をインストールする手順については、gcloud CLI をインストールするをご覧ください。
-
認証するには、Google Cloud CLI を使用して次のコマンドを実行します。
gcloud auth login
- 表示された URL に従ってログインします。
- ログインしたら、表示される確認コードをコピーしてコマンドラインに貼り付けます。
-
次のコマンドを実行して、IAP で保護するリソースを含むプロジェクトを指定します。
gcloud config set project PROJECT_ID
-
IAP を有効にするには、グローバル スコープまたはリージョン スコープのコマンドを実行します。
グローバル スコープ リージョン スコープgcloud compute backend-services update BACKEND_SERVICE_NAME --global --iap=enabled
gcloud compute backend-services update BACKEND_SERVICE_NAME --region REGION_NAME --iap=enabled
IAP を有効にすると、gcloud CLI で roles/iap.httpsResourceAccessor
の IAM ロールを使用して 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 アクセス ポリシーを変更できます。詳しくは、ロールと権限の管理をご覧ください。
次のステップ
- アクセスレベルを適用して、より詳細なコンテキスト ルールを設定する。
- Cloud Audit Logs を有効にするでアクセス リクエストを確認する。
- IAP の詳細について学習する。