Tutorial: utente principale IAM e Amazon Cognito - Amazon OpenSearch Service

Tutorial: utente principale IAM e Amazon Cognito

In questo tutorial viene descritto un caso d'uso frequente di controllo degli accessi dettagliato: un utente principale IAM con autenticazione Amazon Cognito per OpenSearch Dashboards. Sebbene questi passaggi utilizzino il bacino d'utenza di Amazon Cognito per l'autenticazione, questo stesso processo di base funziona per qualsiasi provider di autenticazione Cognito che consente di assegnare ruoli IAM differenti a utenti diversi.

Nota

Questa esercitazione presuppone che siano presenti due ruoli IAM esistenti, uno per l'utente master e uno per gli utenti più limitati. Se non si dispone di due ruoli, è necessario crearli.

Nozioni di base sul controllo granulare degli accessi

  1. Creare un dominio con le seguenti impostazioni:

    • OpenSearch 1.0 o versioni successive o Elasticsearch 7.8 o versioni successive

    • Accesso pubblico

    • Controllo granulare degli accessi abilitato con un ruolo IAM come utente master (IAMMasterUserRole per il resto di questo tutorial)

    • Autenticazione di Amazon Cognito abilitata per OpenSearch Dashboards. Per le istruzioni sull'abilitazione dell'autenticazione Cognito e la selezione di un pool di utenti e identità, consulta Configurazione di un dominio per l'utilizzo di Amazon Cognito.

    • La seguente policy di accesso:

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "*" ] }, "Action": [ "es:ESHttp*" ], "Resource": "arn:aws:es:region:account:domain/domain-name/*" } ] }
    • HTTPS richiesto per tutto il traffico verso il dominio

    • Crittografia da nodo a nodo

    • Crittografia dei dati a riposo

  2. Passare alla console IAM e quindi scegliere Ruoli.

  3. Selezionare IAMMasterUserRole e passare alla scheda Relazioni di trust.

  4. Scegliere Modifica relazione di trust e assicurarsi che il pool di identità di Amazon Cognito possa assumere il ruolo. Visualizzerai la dichiarazione seguente:

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Federated": "cognito-identity.amazonaws.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "identity-pool-id" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "authenticated" } } }] }
  5. Scegli Update Trust Policy (Aggiorna policy di trust).

  6. Aggiungere la stessa policy di attendibilità a un secondo ruolo IAM (IAMLimitedUserRole per il resto di questa esercitazione).

  7. Passare alla console Amazon Cognito e scegliere Gestisci bacini d'utenza.

  8. Scegliere il pool di utenti e quindi scegliere Utenti e gruppi.

  9. Scegliere Crea utente, specificare un nome utente per master-user e una password, quindi scegliere Crea utente.

  10. Creare un altro utente denominato limited-user.

  11. Passare alla scheda Gruppi quindi scegliere Crea gruppo.

  12. Assegnare un nome al gruppo master-user-group, scegliere IAMMasterUserRole nell'elenco a discesa Ruolo IAM e quindi scegliere Crea gruppo.

  13. Creare un altro gruppo denominato limited-user-group che utilizza IAMLimitedUserRole.

  14. Scegliere master-user-group, scegliere Aggiungi utenti, quindi aggiungere master-user.

  15. Scegliere limited-user-group, scegliere Aggiungi utenti, quindi aggiungere limited-user.

  16. Scegliere Impostazioni client app e prendere nota dell'ID client app per il dominio.

  17. Scegliere Identità federate, scegliere il pool di identità e quindi scegliere Modifica pool di identità.

  18. Espandere provider di autenticazione, individuare l'ID del pool di utenti e l'ID client dell'app per il dominio e quindi modificare Usa ruolo predefinito in Scegli ruolo dal token.

  19. Per Risoluzione ruolo, scegliere DENY. Con questa impostazione, gli utenti devono essere in un gruppo per ricevere un ruolo IAM dopo l'autenticazione.

  20. Seleziona Salva modifiche.

  21. Passare a OpenSearch Dashboards.

  22. Accedi con master-user.

  23. Sceglie Aggiungi dati di esempio e aggiungi alcuni dati di volo campione.

  24. Scegliere Sicurezza, Ruoli, Crea ruolo.

  25. Denominare il ruolo new-role.

  26. Per le autorizzazioni per l'indice, specifica opensearch_dashboards_sample_data_fli* per il modello di indice (kibana_sample_data_fli* sui domini Elasticsearch).

  27. Per il gruppo di operazioni, scegliere read.

  28. Per Sicurezza a livello di documento, specificare la seguente query:

    { "match": { "FlightDelay": true } }
  29. Per la sicurezza a livello di campo, scegliere Escludi e specificare FlightNum.

  30. Per Anonimizzazione, specificare Dest.

  31. Scegliere Create (Crea) .

  32. Scegliere Utenti mappati, Gestisci mappatura. Quindi aggiungere l'ARN per IAMLimitedUserRole come identità esterna e scegliere Mappa.

  33. Torna all'elenco di ruoli e scegli opensearch_dashboards_user. Scegliere Utenti mappati, Gestisci mappatura. Aggiungere l'ARN per IAMLimitedUserRole come ruolo di back-end e scegliere Mappa.

  34. In una nuova finestra del browser privato, passare a Dashboards, accedere utilizzando limited-user, quindi scegliere Esplora da solo.

  35. Scegliere Strumenti di sviluppo ed eseguire la ricerca predefinita:

    GET _search { "query": { "match_all": {} } }

    Notare l'errore di autorizzazioni. limited-user non dispone delle autorizzazioni per eseguire ricerche a livello di cluster.

  36. Esegui un'altra ricerca:

    GET opensearch_dashboards_sample_data_flights/_search { "query": { "match_all": {} } }

    Si noti che tutti i documenti corrispondenti hanno un campo FlightDelay di true, un campo Dest anonimizzato e nessun campo FlightNum.

  37. Nella finestra del browser originale, accedere come master-user, scegliere Strumenti di sviluppo, e quindi eseguire le stesse ricerche. Nota la differenza tra autorizzazioni, numero di hit, documenti corrispondenti e campi inclusi.