In che modo è possibile utilizzare un tunnel SSH per accedere ai pannelli di controllo OpenSearch dall'esterno di un VPC con l'autenticazione di Amazon Cognito?

Ultimo aggiornamento: 14/12/2022

Il mio cluster del servizio OpenSearch di Amazon si trova in un cloud privato virtuale (VPC). Desidero utilizzare un tunnel SSH per accedere ai pannelli di controllo di OpenSearch dall'esterno di un VPC con l'autenticazione di Amazon Cognito.

Breve descrizione

Per impostazione predefinita, Amazon Cognito limita l'accesso ai pannelli di controllo di OpenSearch agli utenti AWS Identity and Access Management (IAM) nel VPC. Puoi accedere a un dominio del servizio OpenSearch di Amazon tramite un altro VPC configurando un endpoint VPC gestito dal servizio OpenSearch (con tecnologia AWS PrivateLink). Puoi anche accedere ai pannelli di controllo di OpenSearch dall'esterno del VPC utilizzando un tunnel SSH.

Importante: assicurati che l'accesso ai pannelli di controllo di OpenSearch dall'esterno del VPC sia conforme ai requisiti di sicurezza della tua organizzazione.

Accesso ai pannelli di controllo dall'esterno del VPC utilizzando un tunnel SSH:

1.    Crea un gruppo di utenti e un gruppo di identità Amazon Cognito.

2.    Crea un'istanza Amazon Elastic Compute Cloud (Amazon EC2) in una sottorete pubblica. Questa sottorete deve trovarsi nello stesso VPC del tuo dominio del servizio OpenSearch.

3.    Utilizza un componente aggiuntivo del browser, come FoxyProxy, per configurare un proxy SOCKS.

4.    Crea un tunnel SSH dal tuo computer locale all'istanza EC2.

Nota: puoi anche utilizzare un proxy NGINX o una VPN client per accedere ai pannelli di controllo dall'esterno di un VPC con autenticazione Amazon Cognito. Per ulteriori informazioni, consulta In che modo è possibile accedere ai pannelli di controllo OpenSearch dall'esterno di un VPC utilizzando l'autenticazione di Amazon Cognito?

5.    (Facoltativo) Se è abilitato il controllo granulare degli accessi (FGAC), aggiungi un ruolo autenticato Amazon Cognito.

Risoluzione

Crea un gruppo di utenti e un gruppo di identità Amazon Cognito

1.    Crea un gruppo di utenti Amazon Cognito.

2.    Configura un dominio del gruppo di utenti con hosting.

3.    Nel pannello di navigazione della console Amazon Cognito, scegli Utenti e gruppi.

4.    Scegli Crea utente e quindi completa i campi. Assicurati di inserire un indirizzo email. Quindi, seleziona la casella di controllo Contrassegna l’e-mail come verificata.

5.    Scegli la scheda Gruppi e quindi scegli Crea gruppo. Per Precedenza, immetti 0. Per ulteriori informazioni, consulta Creazione di un nuovo gruppo nella Console di gestione AWS.

6.    Apri di nuovo la console Amazon Cognito.

7.    Scegli Gestisci gruppi di identità, quindi scegli Crea nuovo gruppo di identità.

8.    Immetti un nome per il pool di identità e seleziona la casella di controllo Abilita l'accesso alle identità non autenticate. Quindi, seleziona Crea pool.

9.    Quando ti viene richiesto di accedere alle tue risorse AWS, scegli Consenti. In questo modo vengono creati i due ruoli predefiniti associati al pool di identità, uno per gli utenti non autenticati e uno per gli utenti autenticati.

10.    Configura il tuo dominio OpenSearch Services per utilizzare l'autenticazione Amazon Cognito per i pannelli di controllo OpenSearch:
Per Cognito User Pool, scegli il gruppo di utenti che hai creato nella fase 1.
Per Cognito Identity Pool, scegli il gruppo di identità che hai creato nella fase 8.

11.    Configura il tuo dominio del servizio OpenSearch in modo che utilizzi una policy di accesso simile alla seguente. Sostituisci questi valori:
account-id con il tuo ID account AWS
identity-name con il nome del tuo gruppo di identità Amazon Cognito
domain-name con il nome del tuo dominio
Regione con la regione in cui risiede il tuo dominio, ad esempio us-east-1

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:sts::account-id:assumed-role/Cognito_identity-nameAuth_Role/CognitoIdentityCredentials"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:Region:account-id:domain/domain-name/*"
    }
  ]
}

Ad esempio, la seguente policy di accesso utilizza questi valori:

ID account AWS: 111122223333
nome gruppo di identità Amazon Cognito: MyIdentityPool
nome di dominio: MyDomain
Regione: us-east-1

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:sts::111122223333:assumed-role/Cognito_MyIdentityPoolAuth_Role/CognitoIdentityCredentials"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:us-east-1:111122223333:domain/MyDomain/*"
    }
  ]
}

Crea un'istanza EC2 e configura le regole del gruppo di sicurezza

1.    Avvia un'istanza EC2 in una sottorete pubblica dello stesso VPC in cui si trova il tuo dominio del servizio OpenSearch. Nella pagina Configura i dettagli dell’istanza, assicurati che l'assegnazione automatica dell'IP pubblico sia impostata su Abilita.
Nota: nei passaggi seguenti, l'istanza EC2 viene definita tunnel_ec2.

2.    Aggiungi regole in entrata al gruppo di sicurezza associato all'istanza tunnel_ec2. Queste regole devono consentire il traffico verso le porte 8157 e 22 dall'indirizzo IP del computer che utilizzerai per accedere al pannello di controllo del servizio OpenSearch.

3.    Aggiungi una regola in entrata al gruppo di sicurezza associato al dominio OpenSearch Service. Questa regola deve consentire il traffico proveniente dall'indirizzo IP privato dell'istanza tunnel_ec2.

Configura il proxy SOCKS

1.    Aggiungi FoxyProxy Standard a Google Chrome.

2.    Apri FoxyProxy e scegli Opzioni.

3.    Nell'elenco a discesa Modalità proxy, scegli Usa proxy in base ai modelli e alle priorità predefiniti.

4.    Scegli Aggiungi nuovo proxy.

5.    Seleziona la scheda Generale e inserisci un Nome proxy, ad esempio "Proxy pannelli di controllo".

6.    Nella scheda Dettagli proxy, accertati che sia selezionata l'opzione Configurazione proxy manuale e quindi compila i seguenti campi:
       Per Host o indirizzo IP, immetti localhost.
       Per Porta, immetti 8157.
       Seleziona il proxy SOCKS
       Seleziona SOCKS v5.

7.    Scegli i modelli URL.

8.    Scegli Add new pattern (Aggiungi nuovo modello) e compila i seguenti campi:
       In Pattern Name (Nome modello), inserisci un nome come "Endpoint VPC".
       Per URL pattern (modelli URL), inserisci l'endpoint VPC per i pannelli di controllo. Assicurati che l'accesso all'URL sia consentito. Assicurati che i caratteri jolly siano selezionati.

9.     Scegli Save (Salva).

Crea il tunnel SSH

1.    Esegui questo comando dal computer locale che utilizzerai per accedere al pannello di controllo Dashboards. Sostituisci questi elementi:
       mykeypair.pem: il nome del file .pem per la coppia di chiavi specificata all'avvio dell'istanza EC2 tunnel_ec2.
       public_dns_name: il DNS pubblico dell'istanza EC2 tunnel_ec2. Per ulteriori informazioni, consulta Visualizzazione dei nomi host DNS per l'istanza EC2.

ssh -i "mykeypair.pem"  ec2-user@public_dns_name -ND 8157

2.    Inserisci l'endpoint dei pannelli di controllo nel tuo browser. Viene visualizzata la pagina di accesso di Amazon Cognito per i pannelli di controllo.

(Facoltativo) Se il controllo granulare degli accessi (FGAC) è abilitato, aggiungi un ruolo autenticato Amazon Cognito

Se il controllo granulare degli accessi (FGAC) è abilitato sul cluster del servizio OpenSearch, è possibile che si verifichi l'errore "ruolo mancante". Per risolvere l'errore di “ruolo mancante”, attieniti alla seguente procedura:

1.    Apri la console del servizio OpenSearch.

2.    Nel pannello di navigazione, in Cluster gestiti, scegli Domini.

3.    Scegli Operazioni.

4.    Scegli Modifica utente master.

5.    Scegli Imposta ARN IAM come utente master.

6.    Nel campo ARN IAM, aggiungi il ruolo ARN autenticato di Amazon Cognito.

7.    Scegli Invia.

Per ulteriori informazioni sul controllo degli accessi granulare, consulta Tutorial: utente master IAM e Amazon Cognito.