Questo articolo mira a presentarti le diverse funzionalità di rete avanzate in AEM as a Cloud Service, tra cui il provisioning self-service di VPN, porte non standard e indirizzi IP in uscita dedicati.
Puoi anche trovare una serie di articoli progettati per guidarti attraverso ciascuna delle opzioni di rete avanzate in questa posizione.
AEM as a Cloud Service offre diversi tipi di funzionalità di rete avanzate, che possono essere configurate dai clienti utilizzando le API di Cloud Manager. Comprendono:
Questo articolo descrive in dettaglio ciascuna di queste opzioni, incluso come configurarle. Come strategia generale di configurazione, l’endpoint API /networkInfrastructures
viene richiamato a livello di programma per dichiarare il tipo desiderato di rete avanzata, seguito da una chiamata all’endpoint /advancedNetworking
per ogni ambiente per abilitare l’infrastruttura e configurare parametri specifici dell’ambiente. Fai riferimento agli endpoint appropriati nella documentazione API di Cloud Manager per ogni sintassi formale, oltre a richieste di esempio e risposte.
Un programma può fornire un’unica variante di rete avanzata. Quando bisogna decidere tra l’uscita flessibile della porta e l’indirizzo IP in uscita dedicato, si consiglia di scegliere l’uscita flessibile della porta se non è necessario un indirizzo IP specifico perché Adobe può ottimizzare le prestazioni del traffico in uscita flessibile della porta.
La rete avanzata non è disponibile per il programma sandbox.
Inoltre, gli ambienti devono essere aggiornati a AEM versione 5958 o successiva.
I clienti già dotati di tecnologia di uscita dedicata legacy che devono configurare una di queste opzioni non dovrebbero farlo oppure la connettività del sito potrebbe essere influenzata. Per assistenza, contatta il supporto Adobe.
Questa funzionalità avanzata di rete consente di configurare AEM as a Cloud Service per incrementare il traffico attraverso porte diverse da HTTP (porta 80) e HTTPS (porta 443), che sono aperte per impostazione predefinita.
L’uscita dalla porta flessibile è la scelta consigliata se non hai bisogno di VPN e non hai bisogno di un indirizzo IP di uscita dedicato, in quanto il traffico che non si basa su un’uscita dedicata può raggiungere una produttività più elevata.
Una volta per programma, l’endpoint POST /program/<programId>/networkInfrastructures
viene richiamato, passando semplicemente il valore di flexiblePortEgress
per il parametro kind
e area geografica. L’endpoint risponde con network_id
, nonché altre informazioni, compreso lo stato. Nei documenti API viene fatto riferimento all’intero set di parametri e alla sintassi esatta.
Una volta effettuata la chiamata, in genere sono necessari circa 15 minuti per il provisioning dell’infrastruttura di rete. Una chiamata all’endpoint GET per infrastruttura di rete di Cloud Manager mostrerebbe uno stato “ready”.
Se la configurazione dell’uscita della porta flessibile con ambito di programma è pronta, l’endpoint PUT /program/<program_id>/environment/<environment_id>/advancedNetworking
deve essere richiamato per ambiente per abilitare la rete a livello di ambiente e per dichiarare facoltativamente eventuali regole di inoltro porte. I parametri sono configurabili in base all’ambiente per offrire flessibilità.
Le regole di inoltro di porta devono essere dichiarate per tutte le porte di destinazione diverse da 80/443, ma solo se non si utilizza il protocollo http o https, specificando il set di host di destinazione (nomi o IP e con porte). Per ogni host di destinazione, i clienti devono mappare la porta di destinazione prevista su una porta da 30000 a 30999.
L’API dovrebbe rispondere in pochi secondi, indicando lo stato di aggiornamento e dopo circa 10 minuti, il metodo GET
dell’endpoint indica che la rete avanzata è abilitata.
È possibile aggiornare la configurazione a livello di programma richiamando l’endpoint PUT /api/program/<program_id>/network/<network_id>
e entrerà in vigore tra pochi minuti.
Il parametro “tipo” (flexiblePortEgress
, dedicatedEgressIP
o VPN
) non può essere modificato. Contatta l’assistenza clienti per descrivere cosa è già stato creato e il motivo della modifica.
È possibile aggiornare le regole di inoltro delle porte per ambiente richiamando nuovamente l’endpoint PUT /program/{programId}/environment/{environmentId}/advancedNetworking
, assicurandosi di includere l’intero set di parametri di configurazione, anziché un sottoinsieme.
Al fine di disabilitare l’uscita di porta flessibile da un particolare ambiente, richiama DELETE [/program/{programId}/environment/{environmentId}/advancedNetworking] ()
.
Per ulteriori informazioni sulle API, consulta la sezione Documentazione API di Cloud Manager.
Per il traffico http o https che accede a porte diverse da 80 o 443, è necessario configurare un proxy utilizzando le seguenti variabili di ambiente host e porte:
AEM_PROXY_HOST
/ AEM_HTTP_PROXY_PORT
(impostazione predefinita proxy.tunnel:3128
nelle versioni AEM < 6094)AEM_PROXY_HOST
/ AEM_HTTPS_PROXY_PORT
(impostazione predefinita proxy.tunnel:3128
nelle versioni AEM < 6094)Ad esempio, di seguito è riportato un codice di esempio per inviare una richiesta a www.example.com:8443
:
String url = "www.example.com:8443"
String proxyHost = System.getenv().getOrDefault("AEM_PROXY_HOST", "proxy.tunnel");
int proxyPort = Integer.parseInt(System.getenv().getOrDefault("AEM_HTTPS_PROXY_PORT", "3128"));
HttpClient client = HttpClient.newBuilder()
.proxy(ProxySelector.of(new InetSocketAddress(proxyHost, proxyPort)))
.build();
HttpRequest request = HttpRequest.newBuilder().uri(URI.create(url)).build();
HttpResponse<String> response = client.send(request, BodyHandlers.ofString());
Se utilizzi librerie di rete Java non standard, configura i proxy utilizzando le proprietà riportate sopra per tutto il traffico.
Il traffico non http/s con destinazioni attraverso porte dichiarate nel parametro portForwards
deve fare riferimento a una proprietà denominata AEM_PROXY_HOST
, oltre alla porta mappata. Esempio:
DriverManager.getConnection("jdbc:mysql://" + System.getenv("AEM_PROXY_HOST") + ":53306/test");
La tabella seguente descrive il routing del traffico:
Traffico | Condizione di destinazione | Porta | Connessione | Esempio di destinazione esterna |
---|---|---|---|---|
Protocollo Http o https | Traffico http/s standard | 80 o 443 | Consentito | |
Traffico non standard (su altre porte diverse da 80 o 443) tramite proxy http configurato utilizzando la variabile di ambiente e il numero di porta proxy seguenti. Non dichiarare la porta di destinazione nel parametro portForwards della chiamata API di Cloud Manager:
| Porte esterne 80 o 443 | Consentito | example.com:8443 | |
Traffico non standard (su altre porte diverse dalle porte 80 o 443) che non utilizza il proxy http | Porte esterne 80 o 443 | Bloccato | ||
Non http o non https | Il client si connette alla variabile di ambiente AEM_PROXY_HOST utilizzando un portOrig dichiarato nel parametro API portForwards . |
Qualsiasi | Consentito | mysql.example.com:3306 |
Tutto il resto | Qualsiasi | Bloccato | db.example.com:5555 |
Configurazione di Apache/Dispatcher
La direttiva mod_proxy
del livello Apache/Dispatcher di AEM Cloud Service può essere configurata utilizzando le proprietà descritte in precedenza.
ProxyRemote "http://example.com:8080" "http://${AEM_PROXY_HOST}:3128"
ProxyPass "/somepath" "http://example.com:8080"
ProxyPassReverse "/somepath" "http://example.com:8080"
SSLProxyEngine on //needed for https backends
ProxyRemote "https://example.com:8443" "http://${AEM_PROXY_HOST}:3128"
ProxyPass "/somepath" "https://example.com:8443"
ProxyPassReverse "/somepath" "https://example.com:8443"
Se hai effettuato il provisioning con un IP in uscita dedicato prima della versione di settembre 2021 (10/06/21), fai riferimento a Clienti di indirizzi in uscita dedicati legacy.
Questo indirizzo IP dedicato può migliorare la sicurezza durante l’integrazione con i fornitori SaaS (ad esempio, un fornitore CRM) o altre integrazioni al di fuori di AEM as a Cloud Service che offrono un elenco Consentiti di indirizzi IP. Aggiungendo l’indirizzo IP dedicato all’elenco Consentiti, si garantisce che solo il traffico proveniente dall’istanza di AEM Cloud Service del cliente possa passare al servizio esterno. Verrà aggiunto al traffico proveniente da qualsiasi altro IP consentito.
Se la funzione di indirizzo IP dedicato non è abilitata, il traffico proveniente da AEM as a Cloud Service passa attraverso una serie di IP condivisi con altri clienti.
La funzionalità di inoltro Splunk non è possibile da un indirizzo IP in uscita dedicato.
La configurazione dell’indirizzo IP in uscita dedicato è identica all’uscita da porta flessibile.
La differenza principale è che il traffico sarà sempre in uscita da un IP dedicato e univoco. Per trovare tale IP, utilizza un risolutore DNS per identificare l’indirizzo IP associato a p{PROGRAM_ID}.external.adobeaemcloud.com
. L’indirizzo IP non dovrebbe cambiare, ma se deve cambiare in futuro, verrà fornita una notifica avanzata.
Oltre alle regole di routing supportate dall’uscita da porta flessibile nell’endpoint PUT /program/<program_id>/environment/<environment_id>/advancedNetworking
, l’indirizzo IP in uscita dedicato supporta un parametro nonProxyHosts
. Questo consente di dichiarare un gruppo di host che devono indirizzare attraverso un intervallo di indirizzi IP condivisi anziché l’indirizzo IP dedicato, il che può essere utile in quanto il traffico in uscita attraverso gli IP condivisi può essere ulteriormente ottimizzato. Gli URL nonProxyHost
possono seguire i pattern di example.com
o *.example.com
, in cui il carattere jolly è supportato solo all’inizio del dominio.
Quando si decide tra uscita da porta flessibile e indirizzo IP in uscita dedicato, i clienti devono scegliere la prima soluzione se non è necessario un indirizzo IP specifico, poiché Adobe può ottimizzare le prestazioni del traffico in uscita da porta flessibile.
Al fine di disable Indirizzo IP Egress dedicato da un particolare ambiente, richiama DELETE [/program/{programId}/environment/{environmentId}/advancedNetworking] ()
.
Per ulteriori informazioni sulle API, consulta la sezione Documentazione API di Cloud Manager.
Il traffico Http o https passa attraverso un proxy preconfigurato, a condizione che utilizzino le proprietà standard del sistema Java per le configurazioni proxy.
Il traffico non http/s con destinazioni attraverso porte dichiarate nel parametro portForwards
deve fare riferimento a una proprietà denominata AEM_PROXY_HOST
, oltre alla porta mappata. Esempio:
DriverManager.getConnection("jdbc:mysql://" + System.getenv("AEM_PROXY_HOST") + ":53306/test");
Traffico | Condizione di destinazione | Porta | Connessione | Esempio di destinazione esterna |
---|---|---|---|---|
Protocollo Http o https | Traffico verso Azure o servizi Adobe | Qualsiasi | Tramite gli IP del cluster condiviso (non l’IP dedicato) | adobe.io api.windows.net |
Host corrispondente al parametro nonProxyHosts |
80 o 443 | Tramite gli IP del cluster condiviso | ||
Host corrispondente al parametro nonProxyHosts |
Porte esterne 80 o 443 | Bloccato | ||
Tramite la configurazione proxy http, configurata per impostazione predefinita per il traffico http/s utilizzando la libreria client HTTP Java standard | Qualsiasi | Attraverso l’IP dedicato in uscita | ||
Ignora la configurazione proxy http (ad esempio, se viene rimossa esplicitamente dalla libreria client HTTP Java standard o se viene utilizzata una libreria Java che ignora la configurazione proxy standard) | 80 o 443 | Tramite gli IP del cluster condiviso | ||
Ignora la configurazione proxy http (ad esempio, se viene rimossa esplicitamente dalla libreria client HTTP Java standard o se viene utilizzata una libreria Java che ignora la configurazione proxy standard) | Porte esterne 80 o 443 | Bloccato | ||
Non http o non https | Il client si connette alla variabile d’ambiente AEM_PROXY_HOST usando un portOrig dichiarato nel parametro API portForwards |
Qualsiasi | Attraverso l’IP dedicato in uscita | mysql.example.com:3306 |
Qualsiasi altra | Bloccato |
La funzione è compatibile con il codice o le librerie Java che generano traffico in uscita, purché utilizzino le proprietà standard del sistema Java per le configurazioni proxy. In pratica, dovrebbe essere inclusa la maggior parte delle librerie comuni.
Di seguito è riportato un esempio di codice:
public JSONObject getJsonObject(String relativePath, String queryString) throws IOException, JSONException {
String relativeUri = queryString.isEmpty() ? relativePath : (relativePath + '?' + queryString);
URL finalUrl = endpointUri.resolve(relativeUri).toURL();
URLConnection connection = finalUrl.openConnection();
connection.addRequestProperty("Accept", "application/json");
connection.addRequestProperty("X-API-KEY", apiKey);
try (InputStream responseStream = connection.getInputStream(); Reader responseReader = new BufferedReader(new InputStreamReader(responseStream, Charsets.UTF_8))) {
return new JSONObject(new JSONTokener(responseReader));
}
}
Alcune librerie richiedono una configurazione esplicita per utilizzare le proprietà standard del sistema Java per le configurazioni proxy.
Un esempio che utilizza Apache HttpClient, che richiede chiamate esplicite a
HttpClientBuilder.useSystemProperties()
o l’uso di
HttpClients.createSystem()
:
public JSONObject getJsonObject(String relativePath, String queryString) throws IOException, JSONException {
String relativeUri = queryString.isEmpty() ? relativePath : (relativePath + '?' + queryString);
URL finalUrl = endpointUri.resolve(relativeUri).toURL();
HttpClient httpClient = HttpClientBuilder.create().useSystemProperties().build();
HttpGet request = new HttpGet(finalUrl.toURI());
request.setHeader("Accept", "application/json");
request.setHeader("X-API-KEY", apiKey);
HttpResponse response = httpClient.execute(request);
String result = EntityUtils.toString(response.getEntity());
}
Lo stesso IP dedicato viene applicato a tutti i programmi di un cliente nella sua organizzazione Adobe e per tutti gli ambienti in ciascuno dei suoi programmi. Si applica ai servizi sia di authoring che di pubblicazione.
Per verificare che il traffico sia effettivamente in uscita all’indirizzo IP dedicato previsto, controlla i registri nel servizio di destinazione, se disponibili. Altrimenti può essere utile richiamare un servizio di debug come https://ifconfig.me/IP, che restituirà l’indirizzo IP chiamante.
Se hai effettuato il provisioning con un IP in uscita dedicato prima del 30.09.2021, la funzionalità IP in uscita dedicata supporta solo le porte HTTP e HTTPS.
Questo include HTTP/1.1 e HTTP/2 se crittografati.
La VPN consente la connessione a un’infrastruttura on-premise o a un centro dati dall’ambiente di authoring, pubblicazione o anteprima. Ad esempio, per le procedure di accesso a un database.
Consente inoltre di connettersi ai fornitori SaaS, ad esempio un fornitore di CRM che supporta la VPN o la connessione da una rete aziendale all’ambiente di authoring, anteprima o pubblicazione di AEM as a Cloud Service.
Sono supportati la maggior parte dei dispositivi VPN con tecnologia IPSec. Consulta l’elenco dei dispositivi in questa pagina, in base alle informazioni contenute nella colonna delle istruzioni di configurazione RouteBased. Configura il dispositivo come descritto nella tabella.
Una volta per programma, viene richiamato l’endpoint POST /program/<programId>/networkInfrastructures
, passando in un payload di informazioni di configurazione che includono: il valore di “vpn” per il parametro kind
, l’area geografica, lo spazio indirizzi (elenco di CIDR - nota che questo valore non potrà essere modificato in seguito), i risolutori DNS (per la risoluzione dei nomi nella rete del cliente) e informazioni sulla connessione VPN, ad esempio la configurazione del gateway, la chiave VPN condivisa e i criteri di sicurezza IP. L'endpoint risponde con network_id
, nonché altre informazioni, tra cui lo stato. Per il set completo di parametri e la sintassi esatta è necessario fare riferimento alla documentazione dell’API.
Una volta effettuata la chiamata, in genere il provisioning dell’infrastruttura di rete richiede tra i 45 e i 60 minuti. Il metodo GET dell’API può essere chiamato per restituire lo stato corrente, che alla fine passerà da creating
a ready
. Consulta la documentazione dell’API per tutti gli stati.
Se la configurazione VPN in ambito di programma è pronta, l’endpoint PUT /program/<program_id>/environment/<environment_id>/advancedNetworking
deve essere richiamato per ambiente per abilitare la rete a livello di ambiente e per dichiarare eventuali regole di port forwarding. I parametri sono configurabili in base all’ambiente per offrire flessibilità.
Per ulteriori informazioni, consulta la documentazione dell’API.
Le regole di port forwarding devono essere dichiarate per tutto il traffico TCP non http/s che deve essere instradato attraverso la VPN specificando il set di host di destinazione (nomi o IP e con le porte). Per ogni host di destinazione, i clienti devono mappare la porta di destinazione prevista a una porta da 30000 a 30999, i cui valori devono essere univoci in tutti gli ambienti del programma. I clienti possono inoltre indicare un set di URL nel parametro nonProxyHosts
, che dichiara l’URL per cui il traffico deve ignorare il routing VPN e passare attraverso un intervallo IP condiviso. Segue i pattern di example.com
o *.example.com
, in cui il carattere jolly è supportato solo all’inizio del dominio.
L’API dovrebbe rispondere in pochi secondi indicando lo stato updating
e dopo circa 10 minuti, una chiamata all’endpoint GET dell’ambiente di Cloud Manager dovrebbe mostrare lo stato ready
, indicando che l’aggiornamento è stato applicato all’ambiente.
Tieni presente che anche se non sono presenti regole di routing del traffico dell’ambiente (host o bypass), è comunque necessario chiamare PUT /program/<program_id>/environment/<environment_id>/advancedNetworking
, solo con un payload vuoto.
La configurazione VPN a livello di programma può essere aggiornata richiamando l’endpoint PUT /api/program/<program_id>/network/<network_id>
.
Lo spazio indirizzi non può essere modificato dopo il provisioning iniziale della VPN. Se necessario, contatta l’Assistenza clienti. Inoltre, il parametro kind
(flexiblePortEgress
, dedicatedEgressIP
o VPN
) non può essere modificato. Contatta l’assistenza clienti per descrivere cosa è già stato creato e il motivo della modifica.
È possibile aggiornare le regole di routing per ambiente richiamando nuovamente l’endpoint PUT /program/{programId}/environment/{environmentId}/advancedNetworking
, assicurandosi di includere il set completo di parametri di configurazione, anziché un sottoinsieme. In genere, l’applicazione degli aggiornamenti dell’ambiente richiede 5-10 minuti.
Per disabilitare la VPN per un particolare ambiente, richiama DELETE /program/{programId}/environment/{environmentId}/advancedNetworking
. Troverai maggiori dettagli nella documentazione dell’API.
La tabella seguente descrive il routing del traffico.
Traffico | Condizione di destinazione | Porta | Connessione | Esempio di destinazione esterna |
---|---|---|---|---|
Protocollo Http o https | Traffico verso Azure o servizi Adobe | Qualsiasi | Tramite gli IP del cluster condiviso (non l’IP dedicato) | adobe.io api.windows.net |
Host corrispondente al parametro nonProxyHosts |
80 o 443 | Tramite gli IP del cluster condiviso | ||
Host corrispondente al parametro nonProxyHosts |
Porte esterne 80 o 443 | Bloccato | ||
Se l’IP rientra nell’intervallo di spazio Indirizzo gateway VPN e tramite la configurazione proxy http (configurata per impostazione predefinita per il traffico http/s utilizzando la libreria client Java HTTP standard) | Qualsiasi | Tramite la VPN | 10.0.0.1:443 Può essere anche un nome host. |
|
Se l’IP non rientra nell’intervallo Spazio degli indirizzi gateway VPN e attraverso la configurazione proxy http (configurata per impostazione predefinita per il traffico http/s utilizzando la libreria client Java HTTP standard) | Qualsiasi | Attraverso l’IP dedicato in uscita | ||
Ignora la configurazione proxy http (ad esempio, se viene rimossa esplicitamente dalla libreria client Java HTTP standard o se si utilizza una libreria Java che ignora la configurazione proxy standard) | 80 o 443 | Tramite gli IP del cluster condiviso | ||
Ignora la configurazione proxy http (ad esempio, se viene rimossa esplicitamente dalla libreria client Java HTTP standard o se si utilizza una libreria Java che ignora la configurazione proxy standard) | Porte esterne 80 o 443 | Bloccato | ||
Non http o non https | Se l’IP rientra nell’intervallo Spazio degli indirizzi gateway VPN e il client si connette a AEM_PROXY_HOST variabile env che utilizza un portOrig dichiarato nel parametro di API portForwards |
Qualsiasi | Tramite la VPN | 10.0.0.1:3306 Può essere anche un nome host. |
Se l’IP non rientra nell’intervallo Spazio degli indirizzi gateway VPN e il client si connette a AEM_PROXY_HOST variabile env che utilizza un portOrig dichiarato nel parametro di API portForwards |
Qualsiasi | Attraverso l’IP dedicato in uscita | ||
Qualsiasi altra | Qualsiasi | Bloccato |
Il diagramma seguente fornisce una rappresentazione visiva di un insieme di domini e IP associati che sono utili per la configurazione e lo sviluppo. La tabella riportata di seguito descrive tali domini e IP.
Pattern di dominio | Significato in uscita (da AEM) | Significato ingresso (a AEM) |
---|---|---|
p{PROGRAM_ID}.external.adobeaemcloud.com |
Indirizzo IP di uscita dedicato per il traffico che va verso Internet anziché attraverso reti private | Le connessioni dalla VPN verrebbero visualizzate in CDN come provenienti da questo IP. Per consentire solo le connessioni dalla VPN a AEM, configura Cloud Manager per consentire solo questo IP e bloccare tutto il resto. Per ulteriori informazioni, consulta la sezione “Limitare l’ingresso alle connessioni VPN”. |
p{PROGRAM_ID}-gateway.external.adobeaemcloud.com |
N/D | IP del gateway VPN sul lato AEM. Il team di progettazione della rete di un cliente può utilizzarlo per consentire solo le connessioni VPN al proprio gateway VPN da un indirizzo IP specifico. |
p{PROGRAM_ID}.inner.adobeaemcloud.net |
IP del traffico proveniente dal lato AEM della VPN verso il lato cliente. Questo può essere aggiunto all’elenco Consentiti nella configurazione del cliente per garantire che le connessioni possano essere effettuate solo da AEM. | Se il cliente desidera consentire l’accesso VPN a AEM, deve configurare le voci DNS CNAME per mappare il proprio dominio personalizzato e/o author-p{PROGRAM_ID}-e{ENVIRONMENT_ID}.adobeaemcloud.com e/o publish-p{PROGRAM_ID}-e{ENVIRONMENT_ID}.adobeaemcloud.com a questo. |
Se vuoi consentire solo l’accesso VPN ad AEM, è possibile configurare gli inserimenti nell’elenco Consentiti dell’ambiente in Cloud Manager in modo che solo l’IP definito da p{PROGRAM_ID}.external.adobeaemcloud.com
è autorizzato a parlare con l’ambiente. Questa operazione può essere eseguita come per qualsiasi altro inserimento nell’elenco Consentiti basato su IP in Cloud Manager.
Se le regole devono essere basate su percorsi, utilizza le direttive http standard a livello di dispatcher per negare o consentire determinati IP. Devono anche garantire che i percorsi desiderati non siano memorizzabili nella cache sulla CDN in modo che la richiesta arrivi sempre all’origine.
Esempio di configurazione Httpd
Order deny,allow
Deny from all
Allow from 192.168.0.1
Header always set Cache-Control private
A delete infrastruttura di rete per un programma, richiamare DELETE /program/{program ID}/networkinfrastructure/{networkinfrastructureID}
.
Elimina eliminerà l'infrastruttura solo se tutte le reti avanzate sono disabilitate.
È possibile migrare tra tipi di rete avanzati seguendo la seguente procedura:
Questa procedura comporterà un downtime dei servizi di rete avanzati tra eliminazione e ricreazione
Se i tempi di inattività potrebbero causare un impatto significativo sulle attività aziendali, contattare l'assistenza clienti per descrivere cosa è già stato creato e il motivo del cambiamento.