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: 05-08-2021

Il mio cluster Amazon OpenSearch Service (successore di Amazon Elasticsearch Service) 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. Tuttavia, è possibile 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 (successore di Kibana, uno strumento di terze parti) dall'esterno del VPC sia conforme ai requisiti di sicurezza della tua organizzazione.

Per accedere ai pannelli di controllo dall'esterno del VPC utilizzando un tunnel SSH, attieniti alla seguente procedura:

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 nello stesso VPC in cui risiede il dominio OpenSearch Service.

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 il controllo degli accessi granulare (FGAC) è abilitato, 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 gruppo di identità, seleziona la casella di controllo Abilita l'accesso alle identità non autenticate, quindi scegli Crea gruppo.

9.    Quando ti viene richiesto di accedere alle tue risorse AWS, scegli Consenti per creare i due ruoli predefiniti associati al tuo gruppo 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 OpenSearch Service 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 OpenSearch Services. 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 locale che utilizzerai per accedere al pannello di controllo di OpenSearch Service.

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 la scheda Pattern URL.

8.    Scegli Aggiungi nuovo pattern e compila i seguenti campi:
Per Nome pattern, inserisci un nome che abbia senso per te, ad esempio “Endpoint VPC”.
Per Pattern URL, inserisci l'endpoint VPC per i pannelli di controllo. Assicurati che gli URL delle whitelist siano selezionati. Assicurati che i caratteri jolly siano selezionati.

9.     Scegli Salva.

Crea il tunnel SSH

1.    Esegui il seguente comando dal computer locale che utilizzerai per accedere al pannello di controllo Dashboards. Sostituisci quanto segue:
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 è abilitato il controllo degli accessi granulare (FGAC), aggiungi un ruolo autenticato Amazon Cognito

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

1.    Accedi alla Console di gestione AWS.

2.    In Analytics, scegli Amazon OpenSearch Service.

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 dettagliato degli accessi, consulta Tutorial: utente master IAM e Amazon Cognito.


Questo articolo è stato utile?


Hai bisogno di supporto tecnico o per la fatturazione?