リソースへのアクセスを特定のドメインに制限する

全体的なセキュリティを向上させるため、IAP ではデフォルトで、一致する Server Name Indication(SNI)がないリクエストへのアクセスを拒否します。これにより、IAP は悪意のあるドメインへの URL リダイレクトを制限できます。IAP で許可されるドメイン機能は、IAP で保護されたリソースにセキュリティ レイヤを追加します。リソース オーナーまたは IAP 管理者は、許可されるドメイン機能を構成することで、IAP で保護されたリソースへのアクセスを特定のドメインに制限できます。

次のシナリオでは、IAP で許可されるドメインを構成することもできます。

  • ブラウザまたは中間プロキシが接続プーリングを強制しています: このシナリオでは、HTTP レスポンス 429 とエラーコード 51 が返されます。この問題を解決するには、IAP 管理者がホスト名を含むように許可されたドメインのリストを更新します。
  • 指定されたホスト名が、サーバー上の SSL 証明書と一致しません。このシナリオではエラーコード 52 が返されます。この問題を解決するには、IAP 管理者がホスト名を含むように許可されたドメインのリストを更新します。

許可されるドメインを構成する

gcloud または API を使用して、許可されるドメイン設定を構成できます。許可されるドメインを構成するには、次のフィールドを使用します。

  • enable: ブール値。許可されるドメインの機能を有効または無効にします。
  • Domains: 文字列。許可されるドメインのリスト。ドメインには *.example.com. などのワイルドカード プレフィックスを含めることができます。ドメイン名には、パブリック サフィックスやトップレベル ドメインに直接ワイルドカードを含めることはできません。例: *.com*.co.in

詳しくは、IapSettings をご覧ください。

IAP で許可されるドメインを構成するには、次の手順を行います。

コンソール

  1. IAP ページに移動します。
    Identity-Aware Proxy に移動します
  2. プロジェクトを選択し、許可されるドメインの機能を有効にするリソースを選択します。
  3. リソースの [設定] を開きます。[許可されるドメイン] で [許可されるドメインを有効にする] を選択します。
  4. 許可されるドメインのリストを指定し、[保存] をクリックします。

gcloud

許可されるドメインを指定するコマンドの例を以下に示します。

詳細については、gcloud iap settings set をご覧ください。

次のコマンドを実行します。

gcloud iap settings set SETTING_FILE [--folder=FOLDER --organization=ORGANIZATION --project=/PROJECT --resource-type=RESOURCE_TYPE --service=SERVICE --version=VERSION

ここで、SETTING_FILE は次のようになります。

accessSettings:
  allowed_domains_settings:
    enable: true
    domains: ["*.example.com", "*.example.net"]

次のように置き換えます。

  • FOLDER: フォルダ ID。
  • ORGANIZATION: 組織 ID。
  • PROJECT: プロジェクト ID。
  • RESOURCE_TYPE: IAP リソースタイプ。app-engineiap_webcomputeorganization、またはfolder にする必要があります。
  • SERVICE: サービス名。resource-typecompute または app-engine の場合、これは省略可能です。
  • VERSION: バージョン名。これは compute に適用されず、resource-typeapp-engine の場合は省略可能です。

API

許可されるドメインを構成するには、次の手順を行います。API を使用して許可されるドメインを構成する方法については、IapSettings をご覧ください。

  1. 次のコマンドを実行して iap_settings.json ファイルを準備します。必要に応じて値を更新します。
 {
     "access_settings":{
         "allowed_domains_settings":{
             "enable": true
             "domains": [
                 "*.example.com",
                 "*.exampe.net"
             ]
         }
     }
 }
  1. gcloud iap settings get コマンドを実行してリソース名を取得します。出力から名前フィールドをコピーします。次のステップで名前が必要になります。
gcloud iap settings get [--organization=ORGANIZATION --folder=FOLDER --project=/PROJECT --resource-type=RESOURCE_TYPE --service=SERVICE --version=VERSION]
  1. 次のコマンドの RESOURCE_NAME は、前のステップで取得した名前に置き換えます。IapSettings が更新されます。
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d @iap_settings.json \
"https://iap.googleapis.com/v1/RESOURCE_NAME:iapSettings?updateMask=iapSettings.accessSettings.allowedDomainsSettings.enable,iapSettings.accessSettings.allowedDomainsSettings.domains"

トラブルシューティング

許可されるドメイン アクセスの問題
エラーコード 53 が表示された場合は、IAP 管理者に、ホスト名を許可されたドメインのリストに追加するように依頼してください。