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à.
Connessione ai database Amazon Neptune utilizzando l'autenticazione IAM dalla riga di comando
Avere uno strumento a riga di comando per inviare query al cluster database Neptune è molto utile, come illustrato in molti esempi di questa documentazione. Lo strumento curl
Tuttavia, per proteggere i dati è meglio abilitare l'autenticazione IAM.
Quando è abilitata l'autenticazione IAM, ogni richiesta deve essere firmata utilizzando Signature Version 4 (Sig4). Lo strumento a riga di comando awscurlcurl
e può firmare le query utilizzando la firma Sig4. La sezione Uso di awscurl seguente spiega come utilizzare awscurl
in modo sicuro con le credenziali temporanee.
Configurazione di uno strumento a riga di comando per l'utilizzo di HTTPS
Neptune richiede che tutte le connessioni utilizzino HTTPS. Qualsiasi strumento a riga di comando come curl
o awscurl
necessita dell'accesso ai certificati appropriati per poter utilizzare HTTPS. Se curl
o awscurl
sono in grado di individuare i certificati adeguati, gestiscono le connessioni HTTPS in modo analogo alle connessioni HTTP, senza parametri aggiuntivi. Gli esempi di questa documentazione si basano su questo scenario.
Per scoprire come ottenere tali certificati e come formattarli correttamente in un archivio di certificati CA (Certificate Authority) che curl
può utilizzare, consulta Verifica certificati SSLcurl
.
È possibile specificare il percorso di questo archivio di certificati CA utilizzando la variabile di ambiente CURL_CA_BUNDLE
. In Windows, curl
cerca automaticamente un file denominato curl-ca-bundle.crt
. Cerca prima nella stessa cartella di curl.exe
, quindi in altri punti del percorso. Per ulteriori informazioni, consulta Verifica certificati SSL
Utilizzo di awscurl
con credenziali temporanee per connettersi in modo sicuro a un cluster database con autenticazione IAM abilitata
Lo strumento awscurlcurl
, ma necessita anche di informazioni aggiuntive:
-
--access_key
: chiave di accesso valida. Se non viene fornita utilizzando questo parametro, deve essere fornita nella variabile di ambienteAWS_ACCESS_KEY_ID
o in un file di configurazione. -
--secret_key
: chiave segreta valida corrispondente alla chiave di accesso. Se non viene fornita utilizzando questo parametro, deve essere fornita nella variabile di ambienteAWS_SECRET_ACCESS_KEY
o in un file di configurazione. -
--security_token
: token di sessione valido. Se non viene fornita utilizzando questo parametro, deve essere fornita nella variabile di ambienteAWS_SECURITY_TOKEN
o in un file di configurazione.
In passato, era prassi comune utilizzare credenziali persistenti con awscurl
, come le credenziali utente IAM o anche le credenziali root, ma ciò non è consigliato. Genera invece credenziali temporanee utilizzando uno dei AWS
Security Token Service (STS) o uno dei relativi APIs wrapper.AWS CLI
È preferibile inserire i valori AccessKeyId
, SecretAccessKey
e SessionToken
restituiti dalla chiamata STS nelle variabili di ambiente appropriate nella sessione della shell anziché in un file di configurazione. In questo modo, quando la shell termina, le credenziali vengono automaticamente eliminate, cosa che non avviene con un file di configurazione. Allo stesso modo, non richiedere per le credenziali temporanee una durata più lunga di quella di cui si potrebbe aver bisogno.
L'esempio seguente mostra i passaggi da eseguire in una shell Linux per ottenere credenziali temporanee valide per mezz'ora usando sts assume-role, per poi inserirle in variabili di ambiente dove awscurl
può trovarle:
aws sts assume-role \ --duration-seconds 1800 \ --role-arn "arn:aws:iam::
(account-id)
:role/(rolename)
" \ --role-session-name AWSCLI-Session > $output AccessKeyId=$(cat $output | jq '.Credentials''.AccessKeyId') SecretAccessKey=$(cat $output | jq '.Credentials''.SecretAccessKey') SessionToken=$(cat $output | jq '.Credentials''.SessionToken') export AWS_ACCESS_KEY_ID=$AccessKeyId export AWS_SECRET_ACCESS_KEY=$SecretAccessKey export AWS_SESSION_TOKEN=$SessionToken
È possibile quindi usare awscurl
per effettuare una richiesta firmata al cluster database in questo modo:
awscurl
(your cluster endpoint)
:8182/status \ --region us-east-1 \ --service neptune-db