全体的なセキュリティを向上させるため、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-engine
、iap_web
、compute
、organization
、またはfolder
にする必要があります。 - SERVICE: サービス名。
resource-type
がcompute
またはapp-engine
の場合、これは省略可能です。 - VERSION: バージョン名。これは
compute
には適用されず、resource-type
がapp-engine
の場合は省略可能です。
API
許可されるドメインを構成するには、次の手順を行います。API を使用して許可されるドメインを構成する方法については、IapSettings をご覧ください。
フィールド マスクを使用して、許可されるドメイン設定で 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" } }
次のコマンドを実行して
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 管理者に、ホスト名を許可されたドメインのリストに追加するように依頼してください。