

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à.

# Utilizzo di credenziali temporanee per la connessione ad Amazon Neptune
<a name="iam-auth-temporary-credentials"></a>

Amazon Neptune supporta l'autenticazione IAM con le credenziali temporanee.

Puoi utilizzare un ruolo assunto per l'autenticazione usando una policy di autenticazione IAM, come una delle policy di esempio indicate nelle sezioni precedenti.

Se usi credenziali temporanee, devi specificare `AWS_SESSION_TOKEN` oltre a `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` e `SERVICE_REGION`.

**Nota**  
Le credenziali temporanee scadono dopo un intervallo specificato, *comprensivo del token di sessione*.  
Devi aggiornare il token di sessione quando richiedi le nuove credenziali. Per ulteriori informazioni, consulta [Utilizzo di credenziali di sicurezza temporanee](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) per richiedere l'accesso alle risorse. AWS 

Nelle seguenti sezioni viene descritto come consentire l'accesso e recuperare le credenziali temporanee.

**Per autenticare con le credenziali temporanee**

1. Creare un ruolo IAM con l'autorizzazione per accedere a un cluster Neptune. Per ulteriori informazioni sulla creazione di questo ruolo, consulta [Utilizzo di diversi tipi di policy IAM per controllare l'accesso a Neptune](security-iam-access-manage.md#iam-auth-policy).

1. Aggiungi al ruolo una relazione di trust che consenta di accedere alle credenziali.

   Recuperare le credenziali temporanee, specificando `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` e `AWS_SESSION_TOKEN`.

1. Collegarsi al cluster Neptune e firmare le richieste utilizzando le credenziali temporanee. Per ulteriori informazioni sulla connessione e sulla firma delle richieste, consulta [Connessione al database Amazon Neptune tramite autenticazione AWS Identity and Access Management](iam-auth-connecting.md).

Sono disponibili vari metodi per recuperare le credenziali temporanee a seconda dell'ambiente.

**Topics**
+ [Ottenere credenziali temporanee utilizzando AWS CLI](#iam-auth-temporary-credentials-cli)
+ [Configurazione di AWS Lambda per l'autenticazione IAM di Neptune](#iam-auth-temporary-credentials-lambda)
+ [Configurazione di Amazon EC2 per l'autenticazione IAM di Neptune](#iam-auth-temporary-credentials-ec2)

## Ottenere credenziali temporanee utilizzando AWS CLI
<a name="iam-auth-temporary-credentials-cli"></a>

Per ottenere le credenziali utilizzando il comando AWS Command Line Interface (AWS CLI), devi prima aggiungere una relazione di fiducia che conceda il permesso di assumere il ruolo all' AWS utente che eseguirà il comando. AWS CLI 

Aggiungere la seguente relazione di trust al ruolo di autenticazione IAM di Neptune. Se non si dispone di un ruolo di autenticazione IAM di Neptune, vedi [Utilizzo di diversi tipi di policy IAM per controllare l'accesso a Neptune](security-iam-access-manage.md#iam-auth-policy).

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:user/test"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

Per informazioni su come aggiungere la relazione di trust al ruolo, consulta [Modifica della relazione di trust per un ruolo esistente](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/edit_trust.html) nella *Guida di amministrazione di AWS Directory Service *.

Se la policy Neptune non è ancora collegata a un ruolo, creare un nuovo ruolo. Collegare la policy di autenticazione IAM di Neptune e aggiungere la policy di trust. Per informazioni su come creare un nuovo ruolo, consulta [Creazione di un ruolo](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/create_role.html).

**Nota**  
Le sezioni seguenti presuppongono che tu abbia installato il AWS CLI .

**Per eseguire AWS CLI manualmente**

1. Digita il comando seguente per richiedere le credenziali utilizzando AWS CLI. Sostituisci l'ARN del ruolo, il nome della sessione e il profilo con i tuoi valori.

   ```
   aws sts assume-role  --role-arn  {{arn:aws:iam::123456789012:role/NeptuneIAMAuthRole}} --role-session-name {{test}} --profile {{testprofile}}
   ```

1. Il seguente è un esempio di output del comando. La sezione `Credentials` contiene i valori necessari.
**Nota**  
Annota il valore `Expiration` in quanto più avanti sarà necessario per ottenere nuove credenziali.

   ```
   {
       "AssumedRoleUser": {
           "AssumedRoleId": "AROA3XFRBF535PLBIFPI4:s3-access-example",
           "Arn": "arn:aws:sts::123456789012:assumed-role/xaccounts3access/s3-access-example"
       },
       "Credentials": {
           "SecretAccessKey": "{{9drTJvcXLB89EXAMPLELB8923FB892xMFI}}",
           "SessionToken": "{{AQoXdzELDDY//////////wEaoAK1wvxJY12r2IrDFT2IvAzTCn3zHoZ7YNtpiQLF0MqZye/qwjzP2iEXAMPLEbw/m3hsj8VBTkPORGvr9jM5sgP+w9IZWZnU+LWhmg+a5fDi2oTGUYcdg9uexQ4mtCHIHfi4citgqZTgco40Yqr4lIlo4V2b2Dyauk0eYFNebHtYlFVgAUj+7Indz3LU0aTWk1WKIjHmmMCIoTkyYp/k7kUG7moeEYKSitwQIi6Gjn+nyzM+PtoA3685ixzv0R7i5rjQi0YE0lf1oeie3bDiNHncmzosRM6SFiPzSvp6h/32xQuZsjcypmwsPSDtTPYcs0+YN/8BRi2/IcrxSpnWEXAMPLEXSDFTAQAM6Dl9zR0tXoybnlrZIwMLlMi1Kcgo5OytwU=}}",
           "Expiration": "2016-03-15T00:05:07Z",
           "AccessKeyId": "{{ASIAJEXAMPLEXEG2JICEA}}"
       }
   }
   ```

1. Imposta le variabili di ambiente usando le credenziali restituite.

   ```
   export AWS_ACCESS_KEY_ID={{ASIAJEXAMPLEXEG2JICEA}}
   export AWS_SECRET_ACCESS_KEY={{9drTJvcXLB89EXAMPLELB8923FB892xMFI}}
   export AWS_SESSION_TOKEN={{AQoXdzELDDY//////////wEaoAK1wvxJY12r2IrDFT2IvAzTCn3zHoZ7YNtpiQLF0MqZye/qwjzP2iEXAMPLEbw/m3hsj8VBTkPORGvr9jM5sgP+w9IZWZnU+LWhmg+a5fDi2oTGUYcdg9uexQ4mtCHIHfi4citgqZTgco40Yqr4lIlo4V2b2Dyauk0eYFNebHtYlFVgAUj+7Indz3LU0aTWk1WKIjHmmMCIoTkyYp/k7kUG7moeEYKSitwQIi6Gjn+nyzM+PtoA3685ixzv0R7i5rjQi0YE0lf1oeie3bDiNHncmzosRM6SFiPzSvp6h/32xQuZsjcypmwsPSDtTPYcs0+YN/8BRi2/IcrxSpnWEXAMPLEXSDFTAQAM6Dl9zR0tXoybnlrZIwMLlMi1Kcgo5OytwU=}}
   
   export SERVICE_REGION={{us-east-1 or us-east-2 or us-west-1 or us-west-2 or ca-central-1 or
                         ca-west-1 or sa-east-1 or eu-north-1 or eu-south-2 or eu-west-1 or eu-west-2 or eu-west-3 or
                         eu-central-1 or me-south-1 or me-central-1 or il-central-1 or af-south-1 or ap-east-1 or
                         ap-northeast-1 or ap-northeast-2 or ap-northeast-3 or ap-southeast-1 or ap-southeast-2 or
                         ap-southeast-3 or ap-southeast-4 or ap-southeast-5 or ap-south-1 or ap-south-2 or
                         cn-north-1 or cn-northwest-1 or
                         us-gov-east-1 or us-gov-west-1}}
   ```

1. Collegati utilizzando uno dei seguenti metodi.
   + [Connessione ai database Amazon Neptune utilizzando l'autenticazione IAM con la console Gremlin](iam-auth-connecting-gremlin-console.md)
   + [Connessione ai database Amazon Neptune tramite IAM con Gremlin Java](iam-auth-connecting-gremlin-java.md)
   + [Connessione ai database Amazon Neptune utilizzando l'autenticazione IAM con Java e SPARQL](iam-auth-connecting-sparql-java.md)
   + [Connessione ai database Amazon Neptune utilizzando l'autenticazione IAM con Python](iam-auth-connecting-python.md)

**Per utilizzare un script per ottenere le credenziali**

1. Esegui il comando riportato qui di seguito per installare il comando **jq**. Lo script utilizza questo comando per analizzare l'output del AWS CLI comando.

   ```
   sudo yum -y install jq
   ```

1. Crea un file denominato `credentials.sh` in un editor di testo e aggiungi il seguente testo. Sostituisci la regione del servizio, l'ARN del ruolo, il nome della sessione e il profilo con i tuoi valori.

   ```
   #!/bin/bash
   
   creds_json=$(aws sts assume-role  --role-arn  {{arn:aws:iam::123456789012:role/NeptuneIAMAuthRole}} --role-session-name {{test}} --profile {{testprofile}})
   
   export AWS_ACCESS_KEY_ID=$(echo "$creds_json" | jq .Credentials.AccessKeyId |tr -d '"')
   export AWS_SECRET_ACCESS_KEY=$(echo "$creds_json" | jq .Credentials.SecretAccessKey| tr -d '"')
   export AWS_SESSION_TOKEN=$(echo "$creds_json" | jq .Credentials.SessionToken|tr -d '"')
   
   export SERVICE_REGION={{us-east-1 or us-east-2 or us-west-1 or us-west-2 or ca-central-1 or
                         ca-west-1 or sa-east-1 or eu-north-1 or eu-south-2 or eu-west-1 or eu-west-2 or eu-west-3 or
                         eu-central-1 or me-south-1 or me-central-1 or il-central-1 or af-south-1 or ap-east-1 or
                         ap-northeast-1 or ap-northeast-2 or ap-northeast-3 or ap-southeast-1 or ap-southeast-2 or
                         ap-southeast-3 or ap-southeast-4 or ap-southeast-5 or ap-south-1 or ap-south-2 or
                         cn-north-1 or cn-northwest-1 or
                         us-gov-east-1 or us-gov-west-1}}
   ```

1. Collegati utilizzando uno dei seguenti metodi.
   + [Connessione ai database Amazon Neptune utilizzando l'autenticazione IAM con la console Gremlin](iam-auth-connecting-gremlin-console.md)
   + [Connessione ai database Amazon Neptune tramite IAM con Gremlin Java](iam-auth-connecting-gremlin-java.md)
   + [Connessione ai database Amazon Neptune utilizzando l'autenticazione IAM con Java e SPARQL](iam-auth-connecting-sparql-java.md)
   + [Connessione ai database Amazon Neptune utilizzando l'autenticazione IAM con Python](iam-auth-connecting-python.md)

## Configurazione di AWS Lambda per l'autenticazione IAM di Neptune
<a name="iam-auth-temporary-credentials-lambda"></a>

AWS Lambda include automaticamente le credenziali ogni volta che viene eseguita la funzione Lambda.

Innanzitutto è necessario aggiungere una relazione di trust che conceda al servizio Lambda l'autorizzazione ad assumere il ruolo.

Aggiungere la seguente relazione di trust al ruolo di autenticazione IAM di Neptune. Se non si dispone di un ruolo di autenticazione IAM di Neptune, vedi [Utilizzo di diversi tipi di policy IAM per controllare l'accesso a Neptune](security-iam-access-manage.md#iam-auth-policy).

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

Per informazioni su come aggiungere la relazione di trust al ruolo, consulta [Modifica della relazione di trust per un ruolo esistente](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/edit_trust.html) nella *Guida di amministrazione di AWS Directory Service*.

Se la policy Neptune non è ancora collegata a un ruolo, creare un nuovo ruolo. Collegare la policy di autenticazione IAM di Neptune e aggiungere la policy di trust. Per ulteriori informazioni su come creare un nuovo ruolo, consulta [Creazione di un nuovo ruolo](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/create_role.html) nella *Guida di amministrazione di AWS Directory Service *.

**Per accedere a Neptune da Lambda**

1. Accedi a Console di gestione AWS e apri la AWS Lambda console all'indirizzo. [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)

1. Creare una nuova funzione Lambda per Python versione 3.6.

1. Assegnare il ruolo `AWSLambdaVPCAccessExecutionRole` alla funzione Lambda. Questo ruolo è necessario per accedere alle risorse Neptune che sono solo VPC.

1. Assegnare il ruolo IAM di autenticazione Neptune alla funzione Lambda.

   Per ulteriori informazioni, consulta [Autorizzazioni di AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html) nella *Guida per gli sviluppatori di AWS Lambda *.

1.  Copiare l'autenticazione di IAM Python di esempio nel codice di funzione Lambda.

   Per ulteriori informazioni sull'esempio e sul codice di esempio, consulta [Connessione ai database Amazon Neptune utilizzando l'autenticazione IAM con Python](iam-auth-connecting-python.md).

## Configurazione di Amazon EC2 per l'autenticazione IAM di Neptune
<a name="iam-auth-temporary-credentials-ec2"></a>

Amazon EC2 consente di utilizzare i profili di istanza per fornire automaticamente le credenziali. Per ulteriori informazioni, consulta [Utilizzo dei profili dell'istanza](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html) nella *Guida per l'utente di IAM*.

Innanzitutto è necessario aggiungere una relazione di trust che conceda al servizio Amazon EC2 l'autorizzazione ad assumere il ruolo.

Aggiungere la seguente relazione di trust al ruolo di autenticazione IAM di Neptune. Se non si dispone di un ruolo di autenticazione IAM di Neptune, vedi [Utilizzo di diversi tipi di policy IAM per controllare l'accesso a Neptune](security-iam-access-manage.md#iam-auth-policy).

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

Per informazioni su come aggiungere la relazione di trust al ruolo, consulta [Modifica della relazione di trust per un ruolo esistente](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/edit_trust.html) nella *Guida di amministrazione di AWS Directory Service *.

Se la policy Neptune non è ancora collegata a un ruolo, creare un nuovo ruolo. Collegare la policy di autenticazione IAM di Neptune e aggiungere la policy di trust. Per ulteriori informazioni su come creare un nuovo ruolo, consulta [Creazione di un nuovo ruolo](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/create_role.html) nella *Guida di amministrazione di AWS Directory Service *.

**Per utilizzare un script per ottenere le credenziali**

1. Esegui il comando riportato qui di seguito per installare il comando **jq**. Lo script utilizza questo comando per analizzare l'output del comando **curl**.

   ```
   sudo yum -y install jq
   ```

1. Crea un file denominato `credentials.sh` in un editor di testo e aggiungi il seguente testo. Sostituisci la regione del servizio con il tuo valore.

   ```
   TOKEN=$( curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" )
   role_name=$( curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/iam/security-credentials/ )
   creds_json=$( curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/iam/security-credentials/${role_name} )
   
   export AWS_ACCESS_KEY_ID=$(echo "$creds_json" | jq .AccessKeyId |tr -d '"')
   export AWS_SECRET_ACCESS_KEY=$(echo "$creds_json" | jq .SecretAccessKey| tr -d '"')
   export AWS_SESSION_TOKEN=$(echo "$creds_json" | jq .Token|tr -d '"')
   
   export SERVICE_REGION={{us-east-1 or us-east-2 or us-west-1 or us-west-2 or ca-central-1 or
                         ca-west-1 or sa-east-1 or eu-north-1 or eu-south-2 or eu-west-1 or eu-west-2 or eu-west-3 or
                         eu-central-1 or me-south-1 or me-central-1 or il-central-1 or af-south-1 or ap-east-1 or
                         ap-northeast-1 or ap-northeast-2 or ap-northeast-3 or ap-southeast-1 or ap-southeast-2 or
                         ap-southeast-3 or ap-southeast-4 or ap-southeast-5 or ap-south-1 or ap-south-2 or
                         cn-north-1 or cn-northwest-1 or
                         us-gov-east-1 or us-gov-west-1}}
   ```

1. Esegui lo script nella shell `bash` utilizzando il comando `source`:

   ```
   source credentials.sh
   ```

   Ancora meglio è aggiungere i comandi in questo script al file `.bashrc` sull'istanza EC2 in modo che vengano richiamati automaticamente al momento dell'accesso, rendendo disponibili le credenziali temporanee per la console di Gremlin.

1. Collegati utilizzando uno dei seguenti metodi.
   + [Connessione ai database Amazon Neptune utilizzando l'autenticazione IAM con la console Gremlin](iam-auth-connecting-gremlin-console.md)
   + [Connessione ai database Amazon Neptune tramite IAM con Gremlin Java](iam-auth-connecting-gremlin-java.md)
   + [Connessione ai database Amazon Neptune utilizzando l'autenticazione IAM con Java e SPARQL](iam-auth-connecting-sparql-java.md)
   + [Connessione ai database Amazon Neptune utilizzando l'autenticazione IAM con Python](iam-auth-connecting-python.md)