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

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

次の場合は、IAP で許可されたドメインを構成することもできます。

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

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

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

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

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

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

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

組織内で許可されるドメインを設定するには、次のコマンドを実行します。

gcloud iap settings set SETTING_FILE --organization=ORGANIZATION

フォルダ内のリソースに対して許可されるドメインを設定するには、次のコマンドを実行します。

gcloud iap settings set SETTING_FILE --folder=FOLDER

プロジェクト内のすべてのウェブタイプ リソースに対して許可されるドメインを設定するには、次のコマンドを実行します。

gcloud iap settings set SETTING_FILE --project=PROJECT --resource-type=iap_web

プロジェクト内のすべての App Engine サービスに対して許可されるドメインを設定するには、次のコマンドを実行します。

gcloud iap settings set SETTING_FILE --project=PROJECT --resource-type=app-engine --service=SERVICE

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

{
  "access_settings": {
      "allowed_domains_settings": {
          "enable": true,
          "domains": [
              "*.abc.com",
              "*.xyz.co.in"
          ]
      }
  }
}

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

  • 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. フィールド マスクを使用して、許可されるドメイン設定で JSON ファイルを作成します。JSON SETTING_FILE の例:

    {
       "iap_settings":{
          "value":{
             "access_settings":{
                "allowed_domains_settings":{
                   "enable":{
                      "value":"True"
                   },
                   "domains":{
                      "value":[
                         "*.abc.com",
                         "*.xyz.co.in"
                      ]
                   }
                }
             }
          }
       },
       "update_mask":{
          "value":"iap_settings.access_settings.allowed_domains_settings"
       }
    }
    
  2. 次のコマンドを実行して UpdateIAPSettings API を使用し、許可されるドメイン設定を追加します。

    curl -i -H "Content-Type:application/json" 
    -H "Authentication: Bearer $(gcloud auth print-access-token)" IAP_URL
    -d SETTINGS_FILE.JSON

組織内のすべてのリソースに対して許可されたドメイン設定を行うには、次の URL を使用します。 https://iap.googleapis.com/v1/organization/ORGANIZATION_ID:iapsettings

フォルダ内のすべてのリソースに対して許可されたドメイン設定を行うには、次の URL を使用します。 https://iap.googleapis.com/v1/folder/FOLDER_ID:iapsettings

プロジェクト内のすべてのウェブタイプ リソースに対して許可されたドメイン設定を行うには、次の URL を使用します。 https://iap.googleapis.com/v1/projects/PROJECT_NUMBER/iap_web:iapsettings

プロジェクト内のすべての App Engine リソースに対して許可されたドメイン設定を行うには、次の URL を使用します。 https://iap.googleapis.com/v1/projects/PROJECT_NUMBER/iap_web/appengine-APP_ID:iapsettings

プロジェクト内の App Engine サービス バージョンに対して許可されたドメイン設定を行うには、次の URL を使用します。 https://iap.googleapis.com/v1/projects/PROJECT_NUMBER/iap_web/appengine-APP_ID/services/APP_SERVICE_ID/versions/VERSION_ID:iapsettings

プロジェクト内のすべての Compute Engine リソースに対して許可されたドメイン設定を行うには、次の URL を使用します。 https://iap.googleapis.com/v1/projects/PROJECT_NUMBER/iap_web/compute:iapsettings

プロジェクト内の Compute Engine リソースに対して許可されたドメイン設定を行うには、次の URL を使用します。 https://iap.googleapis.com/v1/projects/PROJECT_NUMBER/iap_web/compute/services/BACKEND_SERVICE_ID:iapsettings

トラブルシューティング

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