View a markdown version of this page

Autenticazione e autorizzazione JWT per Amazon Service OpenSearch - OpenSearch Servizio Amazon

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Autenticazione e autorizzazione JWT per Amazon Service OpenSearch

Amazon OpenSearch Service ora consente di utilizzare JSON Web Tokens (JWTs) per l'autenticazione e l'autorizzazione. JWTs sono token di accesso basati su JSON utilizzati per concedere l'accesso Single Sign-On (SSO). È possibile utilizzare JWTs in OpenSearch Service per creare token Single Sign-on per convalidare le richieste al dominio del Servizio. OpenSearch Per utilizzarlo JWTs, è necessario che il controllo granulare degli accessi sia abilitato e fornire una chiave pubblica valida in formato RSA o ECDSA PEM. Per ulteriori informazioni sul controllo granulare degli accessi, consulta Controllo granulare degli accessi in Amazon Service. OpenSearch

Puoi configurare i token Web JSON utilizzando la console di OpenSearch servizio, il () o il. AWS Command Line Interface AWS CLI AWS SDKs

Considerazioni

Prima di JWTs utilizzarlo con Amazon OpenSearch Service devi considerare quanto segue:

  • A causa delle dimensioni delle chiavi pubbliche RSA in formato PEM, consigliamo di utilizzare la AWS console per configurare l'autenticazione e l'autorizzazione JWT.

  • È necessario fornire utenti e ruoli validi quando si specificano i campi soggetti e ruoli per le proprie richieste JWTs, altrimenti le richieste verranno respinte.

  • OpenSearch 2.11 è la prima versione compatibile che può essere utilizzata per l'autenticazione JWT.

Modifica della policy di accesso al dominio

Prima di poter configurare il dominio per utilizzare l'autenticazione e l'autorizzazione JWT, è necessario aggiornare la politica di accesso al dominio per consentire agli utenti JWT di accedere al dominio. Altrimenti, tutte le richieste autorizzate JWT in entrata vengono rifiutate. La politica di accesso al dominio consigliata per fornire l'accesso completo alle risorse secondarie (/*) è:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:ESHttp*", "Resource": "arn:aws:es:us-east-1:111122223333:domain/domain-name/*" } ] }

Configurazione dell'autenticazione e dell'autorizzazione JWT

È possibile abilitare l'autenticazione e l'autorizzazione JWT durante il processo di creazione del dominio o aggiornando un dominio esistente. I passaggi di configurazione variano leggermente a seconda dell'opzione scelta.

I passaggi seguenti spiegano come configurare un dominio esistente per l'autenticazione e l'autorizzazione JWT nella console di OpenSearch servizio:

  1. In Configurazione del dominio, vai su Autenticazione e autorizzazione JWT per OpenSearch, seleziona Abilita autenticazione e autorizzazione JWT.

  2. Configura la chiave pubblica da utilizzare per il tuo dominio. Per fare ciò, puoi caricare un file PEM contenente una chiave pubblica o inserirlo manualmente.

    Nota

    Se la chiave caricata o inserita non è valida, verrà visualizzato un avviso sopra la casella di testo che specifica il problema.

  3. (Facoltativo) In Impostazioni aggiuntive, puoi configurare i seguenti campi opzionali

    • Chiave dell'oggetto: puoi lasciare vuoto questo campo per utilizzare la sub chiave predefinita per il tuo JWTs.

    • Chiave dei ruoli: puoi lasciare vuoto questo campo per utilizzare la roles chiave predefinita per il tuo JWTs.

    Dopo aver apportato le modifiche, salva il dominio.

Utilizzo di un endpoint JWKS per convalidare un JWT

Invece di configurare una chiave pubblica statica, puoi configurare un URL endpoint JSON Web Key Set (JWKS) per recuperare dinamicamente le chiavi pubbliche dal tuo provider di identità. Quando viene configurato un endpoint JWKS, OpenSearch Service recupera e memorizza automaticamente nella cache le chiavi pubbliche utilizzate per convalidare le firme JWT, eliminando la necessità di aggiornare manualmente le chiavi quando il provider di identità ruota le chiavi di firma.

La configurazione degli endpoint JWKS richiede la versione 3.3 o successiva. OpenSearch

Nota

Quando sono configurati sia un URL JWKS che una chiave pubblica statica, l'URL JWKS ha la precedenza e la chiave pubblica statica viene ignorata.

Compatibilità con le versioni precedenti

Questa funzionalità mantiene la piena compatibilità con le versioni precedenti:

  • Quando non JwksUrl è specificato o impostato su null, il sistema utilizza il meccanismo a chiave pubblica statica esistente.

  • Le configurazioni JWT esistenti continuano a funzionare senza modifiche.

  • È possibile passare da chiavi statiche a JWKS aggiornando la configurazione del dominio.

Configurazione di un endpoint JWKS

È possibile configurare un endpoint JWKS utilizzando la console di OpenSearch servizio, o l'API di configurazione. AWS CLI

Per configurare un endpoint JWKS
  1. In Configurazione del dominio, vai a Autenticazione e autorizzazione JWT per. OpenSearch

  2. Seleziona Abilita l'autenticazione e l'autorizzazione JWT.

  3. Per Key source, seleziona JWKS URL.

  4. Inserisci l'URL dell'endpoint JWKS fornito dal tuo provider di identità (ad esempio,). https://example.com/.well-known/jwks.json

  5. (Facoltativo) Configura i campi chiave Oggetto e Ruoli chiave in Impostazioni aggiuntive.

  6. Scegli Save changes (Salva modifiche).

Il AWS CLI comando seguente configura un endpoint JWKS per l'autenticazione JWT su un dominio esistente:

aws opensearch update-domain-config \ --domain-name my-domain \ --advanced-security-options '{"JWTOptions":{"Enabled":true, "JwksUrl":"https://example.com/.well-known/jwks.json", "SubjectKey":"sub", "RolesKey":"roles"}}'

La seguente richiesta all'API di configurazione configura un endpoint JWKS per l'autenticazione JWT su un dominio esistente:

POST https://es.us-east-1.amazonaws.com/2021-01-01/opensearch/domain/my-domain/config { "AdvancedSecurityOptions": { "JWTOptions": { "Enabled": true, "JwksUrl": "https://example.com/.well-known/jwks.json", "RolesKey": "optional-roles-key", "SubjectKey": "optional-subject-key" } } }

Requisiti dell'intestazione JWT

Quando si utilizza un endpoint JWKS, l'intestazione JWT deve includere un ID chiave (kid) che identifica la chiave specifica da utilizzare per la verifica:

{ "alg": "RS256", "typ": "JWT", "kid": "V-diposfUJIk5jDBFi_QRouiVinG5PowskcSWy5EuCo" }

Il kid valore deve corrispondere a un identificatore chiave nella risposta dell'endpoint JWKS.

Per ulteriori informazioni sulle opzioni di configurazione e sulle impostazioni di sicurezza di JWKS, consulta Utilizzo di un endpoint JWKS per convalidare un JWT nella documentazione. OpenSearch

Utilizzo di un JWT per inviare una richiesta di test

Dopo aver creato un nuovo JWT con una coppia di soggetto e ruolo specificata, puoi inviare una richiesta di test. Per fare ciò, usa la chiave privata per firmare la tua richiesta tramite lo strumento che ha creato il JWT. OpenSearch Il servizio è in grado di convalidare la richiesta in arrivo verificando questa firma.

Nota

Se hai specificato una chiave dell'oggetto o una chiave di ruolo personalizzata per il tuo JWT, devi utilizzare i nomi di claim corretti per il tuo JWT.

Di seguito è riportato un esempio di come utilizzare un token JWT per accedere al OpenSearch servizio tramite l'endpoint di ricerca del dominio:

curl -XGET "$search_endpoint" -H "Authorization: Bearer <JWT>"

Il AWS CLI comando seguente abilita l'autenticazione e l'autorizzazione JWT a OpenSearch condizione che il dominio esista:

aws opensearch update-domain-config --domain-name <your_domain_name> --advanced-security-options '{"JWTOptions":{"Enabled":true, "PublicKey": "<your_public_key>", "SubjectKey": "<your_subject_key>", "RolesKey": "<your_roles_key>"}}'

Configurazione dell'autenticazione e dell'autorizzazione JWT (configurazione tramite API)

La seguente richiesta all'API di configurazione abilita l'autenticazione e l'autorizzazione JWT OpenSearch su un dominio esistente:

POST https://es.us-east-1.amazonaws.com/2021-01-01/opensearch/domain/my-domain/config { "AdvancedSecurityOptions": { "JWTOptions": { "Enabled": true, "PublicKey": "public-key", "RolesKey": "optional-roles-key", "SubjectKey": "optional-subject-key" } } }
Generazione di una key pair

Per eseguire la configurazione JWTs per il tuo OpenSearch dominio, dovrai fornire una chiave pubblica in formato Privacy-Enhanced Mail (PEM). Amazon OpenSearch Service attualmente supporta due algoritmi di crittografia asimmetrica quando si utilizza JWTs: RSA ed ECDSA.

Per creare una coppia di key pair RSA utilizzando la libreria openssl comune, segui questi passaggi:

  1. openssl genrsa -out privatekey.pem 2048

  2. openssl rsa -in privatekey.pem -pubout -out publickey.pem

In questo esempio, il publickey.pem file contiene la chiave pubblica da utilizzare con Amazon OpenSearch Service, mentre privatekey.pem contiene quella privata per la firma dell' JWTs invio al servizio. Inoltre, hai la possibilità di convertire la chiave privata nel pkcs8 formato comunemente usato se ne hai bisogno per generare il tuo JWTs.

Se utilizzi il pulsante di caricamento per aggiungere un file PEM direttamente alla console, il file deve avere un'.pemestensione o altre estensioni di file come .crt.cert, o non .key sono al momento supportate.