

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

# Protezione del database Amazon Neptune
<a name="security"></a>

La sicurezza del cloud ha la massima AWS priorità. In qualità di AWS cliente, puoi beneficiare di un data center e di un'architettura di rete progettati per soddisfare i requisiti delle organizzazioni più sensibili alla sicurezza.

La sicurezza è una responsabilità condivisa tra AWS te e te. Il [modello di responsabilità condivisa](https://aws.amazon.com/compliance/shared-responsibility-model/) descrive questo come sicurezza *del* cloud e sicurezza *nel* cloud:
+ **Sicurezza del cloud**: AWS è responsabile della protezione dell'infrastruttura che gestisce AWS i servizi nel AWS cloud. AWS ti fornisce anche servizi che puoi utilizzare in modo sicuro. I revisori di terze parti testano e verificano regolarmente l'efficacia della sicurezza come parte dei [programmi di conformitàAWS](https://aws.amazon.com/compliance/programs/). Per ulteriori informazioni sui programmi di conformità che si applicano ad Amazon Neptune, consulta [Servizi AWS coperti dal programma di conformità](https://aws.amazon.com/compliance/services-in-scope/).
+ **Sicurezza nel cloud**: la tua responsabilità è determinata dal AWS servizio che utilizzi. L’utente è anche responsabile di altri fattori, tra cui la riservatezza dei dati, i requisiti della propria azienda e le leggi e normative vigenti.

Questa documentazione consente di comprendere come applicare il modello di responsabilità condivisa quando si utilizza Neptune. I seguenti argomenti illustrano come configurare Neptune per soddisfare gli obiettivi di sicurezza e conformità. Scopri anche come utilizzare altri AWS servizi che ti aiutano a monitorare e proteggere le tue risorse di Neptune.

**Topics**
+ [Aggiornamenti del sistema operativo Amazon Neptune](security-os-upgrades.md)
+ [Protezione dei dati nel database Amazon Neptune](data-protection.md)
+ [Autenticazione del database Amazon Neptune con AWS Identity and Access Management](iam-auth.md)
+ [Abilitazione dell'autenticazione del database IAM in Amazon Neptune](iam-auth-enable.md)
+ [Connessione al database Amazon Neptune tramite autenticazione AWS Identity and Access Management](iam-auth-connecting.md)
+ [Gestione dell'accesso ai database Amazon Neptune utilizzando le policy IAM](security-iam-access-manage.md)
+ [Utilizzo di ruoli collegati ai servizi per Amazon Neptune](security-iam-service-linked-roles.md)
+ [Utilizzo di credenziali temporanee per la connessione ad Amazon Neptune](iam-auth-temporary-credentials.md)
+ [Registrazione e monitoraggio dell'utilizzo e delle prestazioni in Amazon Neptune](security-monitoring.md)
+ [Amazon Neptune e endpoint VPC di interfaccia ()AWS PrivateLink](vpc-interface-endpoints.md)
+ [Considerazioni sulla conformità per Amazon Neptune](neptune-compliance.md)
+ [Creazione di implementazioni Amazon Neptune resilienti e resistenti ai disastri](disaster-recovery-resiliency.md)

# Aggiornamenti del sistema operativo Amazon Neptune
<a name="security-os-upgrades"></a>

 Amazon Neptune garantisce miglioramenti continui nelle prestazioni, nella sicurezza e nella stabilità del database tramite aggiornamenti regolari del sistema operativo. Questi aggiornamenti vengono applicati sia ai database di Neptune che a Neptune Analytics, seguendo un processo di aggiornamento strutturato. Amazon Neptune rilascia aggiornamenti del sistema operativo almeno una volta al mese. 

 Gli aggiornamenti del sistema operativo Neptune Database che non richiedono tempi di inattività vengono applicati automaticamente durante la finestra di manutenzione. Alcuni aggiornamenti del sistema operativo (ad esempio: aggiornamento della versione del kernel) richiedono il riavvio dell'istanza. Questi aggiornamenti sono opzionali e non hanno una data prestabilita per applicarli. Tuttavia, se non applichi questi aggiornamenti, alla fine potrebbero diventare necessari e applicati automaticamente durante la finestra di manutenzione dell'istanza. 

 **Neptune Analytics** - Gli aggiornamenti del sistema operativo Neptune Analytics sono semplici e non richiedono alcuna azione da parte del cliente. Questi aggiornamenti vengono applicati automaticamente in background senza tempi di inattività. 

 Per mantenere la sicurezza e la conformità, ti consigliamo di applicare regolarmente tutti gli aggiornamenti resi disponibili da Amazon Neptune durante la finestra di manutenzione. Rimanere aggiornati su tutti gli aggiornamenti opzionali e obbligatori aiuta a incorporare patch di sicurezza critiche e garantisce l'allineamento con i vari obblighi di conformità. Le versioni obsolete del sistema operativo possono comportare la non conformità ai requisiti normativi. 

## Riduzione al minimo dei tempi di inattività per gli aggiornamenti del sistema operativo che richiedono un riavvio
<a name="security-os-upgrades-minimizing-downtime"></a>

 Per gli aggiornamenti del sistema operativo che richiedono un riavvio, si consiglia di aggiornare prima le istanze Reader in un cluster, quindi l'istanza writer per massimizzare la disponibilità del cluster. Non è consigliabile aggiornare contemporaneamente le istanze Reader e Writer, poiché in caso di failover potrebbero verificarsi tempi di inattività più lunghi. 

## Applicazione degli aggiornamenti del sistema operativo all'istanza DB di Neptune
<a name="security-applying-os-upgrades"></a>

 Le istanze Neptune DB richiedono occasionalmente aggiornamenti del sistema operativo. Amazon Neptune aggiorna il sistema operativo a una versione più recente per migliorare le prestazioni del database e il livello di sicurezza generale dei clienti. In genere, gli aggiornamenti richiedono circa 10 minuti. Gli aggiornamenti del sistema operativo non modificano la versione del motore database o la classe istanza database di un’istanza database. 

 Per ricevere una notifica quando diventa disponibile un nuovo aggiornamento opzionale, puoi iscriverti alla categoria degli eventi di patch di `RDS-EVENT-0230` sicurezza. Per informazioni sulla sottoscrizione agli eventi di Amazon Neptune, [consulta la sezione Abbonamento](https://docs.aws.amazon.com//neptune/latest/userguide/events-subscribing.html) alla notifica degli eventi di Amazon Neptune. 

**Importante**  
 La tua istanza Amazon Neptune DB verrà messa offline durante l'aggiornamento del sistema operativo. Puoi ridurre al minimo i tempi di inattività del cluster disponendo di un cluster a più istanze. Se non disponi di un cluster a più istanze, puoi scegliere di crearne temporaneamente uno aggiungendo istanze secondarie per eseguire questa manutenzione, quindi eliminando le istanze Reader aggiuntive una volta completata la manutenzione (verranno applicate le normali tariffe per l'istanza secondaria). 

 È possibile utilizzare Console di gestione AWS o la AWS CLI per determinare se è disponibile un aggiornamento. 

### Utilizzando il Console di gestione AWS
<a name="security-applying-os-upgrades-management-console"></a>

 Per determinare se è disponibile un aggiornamento, utilizzare Console di gestione AWS: 

1. [Accedi alla console di AWS gestione e apri la console Amazon Neptune da casa. https://console.aws.amazon.com/neptune/](https://console.aws.amazon.com/neptune/home)

1.  Nel pannello di navigazione, scegli **Cluster**, quindi seleziona l'istanza. 

1.  Scegli **Manutenzione**. 

1.  Nella sezione **Manutenzione in sospeso**, trova l'aggiornamento del sistema operativo. 

![\[Un'immagine che mostra la sezione Console di gestione AWS Manutenzione e un aggiornamento del sistema operativo disponibile.\]](http://docs.aws.amazon.com/it_it/neptune/latest/userguide/images/consoleForOSUpgrades.png)


 È possibile selezionare l'aggiornamento del sistema operativo e fare clic su **Applica ora** o **Applica alla finestra di manutenzione successiva** nella sezione **Manutenzione in sospeso**. **Se il valore di manutenzione è **nella finestra successiva**, rimanda gli elementi di manutenzione scegliendo Rinvia aggiornamento.** Non puoi rinviare un’azione di manutenzione se è già stata avviata. 

 ****In alternativa, puoi scegliere l'istanza da un elenco di cluster facendo clic su Cluster nel riquadro di navigazione e selezionando **Applica ora o Applica** **alla finestra di manutenzione successiva** dal menu Azioni.**** 

### Utilizzo della AWS CLI
<a name="security-applying-os-upgrades-cli"></a>

 Per determinare se è disponibile un aggiornamento utilizzando il AWS CLI, chiamate il `describe-pending-maintenance-actions` comando: 

```
aws neptune describe-pending-maintenance-actions
```

```
{
    "ResourceIdentifier": "arn:aws:rds:us-east-1:123456789012:db:myneptune",
    "PendingMaintenanceActionDetails": [
        {
            "Action": "system-update",
            "Description": "New Operating System update is available"
        }
    ]
}
```

 Per applicare gli aggiornamenti del sistema operativo, chiamate il `apply-pending-maintenance-action` comando: 

```
aws neptune apply-pending-maintenance-action \
    --apply-action system-update \
    --resource-identifier (ARN of your DB instance) \
    --opt-in-type immediate
```

# Protezione dei dati nel database Amazon Neptune
<a name="data-protection"></a>

Il modello di [responsabilità AWS condivisa Modello](https://aws.amazon.com/compliance/shared-responsibility-model/) si applica alla protezione dei dati in Amazon Neptune. Come descritto in questo modello, AWS è responsabile della protezione dell'infrastruttura globale che gestisce tutti i. Cloud AWS L’utente è responsabile del controllo dei contenuti ospitati su questa infrastruttura. L’utente è inoltre responsabile della configurazione della protezione e delle attività di gestione per i Servizi AWS utilizzati. Per maggiori informazioni sulla privacy dei dati, consulta le [Domande frequenti sulla privacy dei dati](https://aws.amazon.com/compliance/data-privacy-faq/). Per informazioni sulla protezione dei dati in Europa, consulta il post del blog relativo al [AWS Modello di responsabilità condivisa e GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) nel *AWS Blog sulla sicurezza*.

Ai fini della protezione dei dati, consigliamo di proteggere Account AWS le credenziali e configurare i singoli utenti con AWS IAM Identity Center or AWS Identity and Access Management (IAM). In tal modo, a ogni utente verranno assegnate solo le autorizzazioni necessarie per svolgere i suoi compiti. Suggeriamo, inoltre, di proteggere i dati nei seguenti modi:
+ Utilizza l’autenticazione a più fattori (MFA) con ogni account.
+  SSL/TLS Da utilizzare per comunicare con AWS le risorse. È richiesto TLS 1.2 ed è consigliato TLS 1.3.
+ Configura l'API e la registrazione delle attività degli utenti con AWS CloudTrail. Per informazioni sull'utilizzo dei CloudTrail percorsi per acquisire AWS le attività, consulta [Lavorare con i CloudTrail percorsi](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html) nella *Guida per l'AWS CloudTrail utente*.
+ Utilizza soluzioni di AWS crittografia, insieme a tutti i controlli di sicurezza predefiniti all'interno Servizi AWS.
+ Utilizza i servizi di sicurezza gestiti avanzati, come Amazon Macie, che aiutano a individuare e proteggere i dati sensibili archiviati in Amazon S3.
+ Se hai bisogno di moduli crittografici convalidati FIPS 140-3 per accedere AWS tramite un'interfaccia a riga di comando o un'API, usa un endpoint FIPS. Per ulteriori informazioni sugli endpoint FIPS disponibili, consulta il [Federal Information Processing Standard (FIPS) 140-3](https://aws.amazon.com/compliance/fips/).

Ti consigliamo di non inserire mai informazioni riservate o sensibili, ad esempio gli indirizzi e-mail dei clienti, nei tag o nei campi di testo in formato libero, ad esempio nel campo **Nome**. Ciò include quando lavori con Neptune o Servizi AWS altri utenti utilizzando la console, l'API AWS CLI o. AWS SDKs I dati inseriti nei tag o nei campi di testo in formato libero utilizzati per i nomi possono essere utilizzati per i la fatturazione o i log di diagnostica. Quando si fornisce un URL a un server esterno, suggeriamo vivamente di non includere informazioni sulle credenziali nell’URL per convalidare la richiesta al server.

**Importante**  
 TLS 1.3 è supportato solo per la versione 1.3.2.0 e successive del motore Neptune. 

Utilizzi chiamate API AWS pubblicate per gestire Neptune attraverso la rete. I client devono supportare Transport Layer Security (TLS) 1.2 o versioni successive utilizzando suite di crittografia avanzate, come descritto in [La crittografia si connette ai database Neptune](security-ssl.md). La maggior parte dei sistemi moderni, come Java 7 e versioni successive, supporta tali modalità.

Le seguenti sezioni descrivono ulteriormente come vengono protetti i dati di Neptune.

**Topics**
+ [Protezione del database Amazon Neptune con Amazon VPC](security-vpc.md)
+ [Crittografia delle connessioni al tuo database Amazon Neptune con SSL/HTTPS](security-ssl.md)
+ [Crittografia dei dati inattivi nel database Amazon Neptune](encrypt.md)

# Protezione del database Amazon Neptune con Amazon VPC
<a name="security-vpc"></a>

Un cluster Amazon Neptune DB *può* essere creato solo in un Amazon Virtual Private Cloud (Amazon VPC) e i suoi endpoint sono accessibili all'interno di tale VPC, in genere da un'istanza Amazon Elastic Compute Cloud (Amazon EC2) in esecuzione in quel VPC. In alternativa, è possibile accedervi utilizzando un endpoint pubblico. Per ulteriori informazioni sugli endpoint pubblici, consulta [Neptune](neptune-public-endpoints.md) public endpoints.

È possibile proteggere i dati di Neptune limitando l'accesso al VPC in cui si trova il cluster database Neptune, come descritto in [Connessione a un cluster Amazon Neptune](get-started-connecting.md).

# Crittografia delle connessioni al tuo database Amazon Neptune con SSL/HTTPS
<a name="security-ssl"></a>

Amazon Neptune consente solo connessioni Secure Sockets Layer (SSL) tramite HTTPS verso qualsiasi istanza o endpoint del cluster.

Neptune richiede almeno la versione 1.2 di TLS, utilizzando le seguenti suite di crittografia avanzata:
+ `TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256`
+ `TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384`
+ `TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256`
+ `TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384`

A partire dalla versione 1.3.2.0 del motore Neptune, Neptune supporta la versione 1.3 di TLS utilizzando le seguenti suite di crittografia:
+ TLS\$1AES\$1128\$1GCM\$1 SHA256
+ TLS\$1AES\$1256\$1GCM\$1 SHA384

Anche laddove le connessioni HTTP sono consentite nelle versioni precedenti del motore, qualsiasi cluster database che utilizza un nuovo gruppo di parametri del cluster database deve utilizzare SSL per impostazione predefinita. *Per proteggere i dati, gli endpoint Neptune nella versione del motore `1.0.4.0` e successive supportano solo le richieste HTTPS.* Per ulteriori informazioni, consulta [Utilizzo dell'endpoint HTTP REST per connettersi a un'istanza database Neptune](access-graph-sparql-http-rest.md).

Neptune fornisce automaticamente certificati SSL per le istanze database Neptune. Non è necessario richiedere i certificati. I certificati vengono forniti al momento della creazione di una nuova istanza.

Neptune assegna un singolo certificato SSL wildcard alle istanze del tuo account per ogni regione. AWS Il certificato fornisce voci per gli endpoint del cluster, gli endpoint di sola lettura del cluster e gli endpoint dell'istanza.

**Dettagli del certificato**  
Le seguenti voci sono incluse nel certificato fornito:
+ Endpoint del cluster: `*.cluster-a1b2c3d4wxyz.region.neptune.amazonaws.com`
+ Endpoint di sola lettura: `*.cluster-ro-a1b2c3d4wxyz.region.neptune.amazonaws.com`
+ Endpoint dell'istanza: `*.a1b2c3d4wxyz.region.neptune.amazonaws.com`

Sono supportate solo le voci elencate in questa pagina. 

**Connessioni proxy**  
I certificati supportano solo i nomi host elencati nella sezione precedente. 

Se si utilizza un sistema di bilanciamento del carico o un server proxy (ad esempio HAProxy), è necessario utilizzare la terminazione SSL e disporre del proprio certificato SSL sul server proxy. 

Il passthrough SSL non funziona perché i certificati SSL forniti non corrispondono al nome host del server proxy.

**Certificati CA radice**  
I certificati per le istanze Neptune vengono normalmente convalidate utilizzando l'archivio di trust locale del sistema operativo o dell'SDK (come Java SDK).

Se devi fornire un certificato radice manualmente, puoi scaricare il [certificato CA radice di Amazon](https://www.amazontrust.com/repository/AmazonRootCA1.pem) in formato PEM dal [repository delle policy di Amazon Trust Services](https://www.amazontrust.com/repository/).

**Ulteriori informazioni**  
Per ulteriori informazioni sulla connessione agli endpoint Neptune con SSL, consulta [Configurazione della console Gremlin per la connessione a un'istanza database Neptune](access-graph-gremlin-console.md) e [Utilizzo dell'endpoint HTTP REST per connettersi a un'istanza database Neptune](access-graph-sparql-http-rest.md).

# Crittografia dei dati inattivi nel database Amazon Neptune
<a name="encrypt"></a>

Le istanze crittografate di Neptune offrono un livello aggiuntivo di protezione dei dati proteggendoli dagli accessi non autorizzati all'archiviazione sottostante. Puoi usare la crittografia Neptune per aumentare la protezione dei dati delle applicazioni implementate nel cloud. Puoi utilizzarlo anche per soddisfare i requisiti di conformità per la crittografia. data-at-rest

[Per gestire le chiavi utilizzate per crittografare e decrittografare le risorse di Neptune, si utilizza ().AWS Key Management ServiceAWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/) AWS KMS combina hardware e software sicuri e ad alta disponibilità per fornire un sistema di gestione delle chiavi scalabile per il cloud. Utilizzando AWS KMS, è possibile creare chiavi di crittografia e definire le politiche che controllano il modo in cui tali chiavi possono essere utilizzate. AWS KMS supporta AWS CloudTrail, in modo da poter controllare l'utilizzo delle chiavi per verificare che vengano utilizzate in modo appropriato. Puoi usare AWS KMS le tue chiavi in combinazione con Neptune e servizi AWS supportati come Amazon Simple Storage Service (Amazon S3), Amazon Elastic Block Store (Amazon EBS) e Amazon Redshift. *Per un elenco dei servizi che supportano AWS KMS, consulta [How AWS Services AWS KMS Use](https://docs.aws.amazon.com/kms/latest/developerguide/services.html) nella Developer Guide.AWS Key Management Service *

Tutti i log, i backup e gli snapshot sono crittografati per un'istanza Neptune crittografata.

## Abilitazione della crittografia per un'istanza database Neptune
<a name="encrypt-enable"></a>

Per abilitare la crittografia per una nuova istanza database Neptune, scegliere **Sì** nella sezione **Abilita crittografia** della console Neptune. Per informazioni sulla creazione di un'istanza database Neptune, consulta [Creazione di un cluster Amazon Neptune](get-started-create-cluster.md).

Quando crei un'istanza crittografata di Neptune DB, puoi anche fornire AWS KMS l'identificatore della chiave per la tua chiave di crittografia. Se non specifichi un identificatore di AWS KMS chiave, Neptune utilizza la chiave di crittografia Amazon RDS predefinita `aws/rds` () per la tua nuova istanza DB Neptune. AWS KMS crea la chiave di crittografia predefinita per Neptune per il tuo account. AWS Il tuo AWS account ha una chiave di crittografia predefinita diversa per ogni AWS regione.

Dopo aver creato un'istanza database Neptune crittografata, non è possibile modificare la chiave di crittografia per quell'istanza. Quindi, assicurati di determinare i requisiti della chiave di crittografia prima di creare l'istanza database Neptune crittografata.

È possibile utilizzare il nome della risorsa Amazon (ARN) di una chiave di un altro account per crittografare un'istanza database Neptune. Se crei un'istanza di Neptune DB con AWS lo stesso account che possiede AWS KMS la chiave di crittografia utilizzata per crittografare quella nuova istanza di Neptune DB AWS KMS , l'ID della chiave che passi può AWS KMS essere l'alias della chiave anziché l'ARN della chiave.

**Importante**  
Se Neptune perde l'accesso alla chiave di crittografia per un'istanza database Neptune, ad esempio quando viene revocato l'accesso di Neptune a una chiave, l'istanza database crittografata viene impostata su uno stato terminale e può essere ripristinata solo da un backup. È consigliabile sempre abilitare i backup per le istanze database Neptune crittografate per evitare la perdita di dati crittografati nei database.

## Autorizzazioni chiave necessarie per abilitare la crittografia
<a name="encrypt-key-permissions"></a>

L'utente o il ruolo IAM che crea un'istanza database Neptune crittografata deve disporre almeno delle seguenti autorizzazioni per la chiave KMS:
+ `"kms:Encrypt"`
+ `"kms:Decrypt"`
+ `"kms:GenerateDataKey"`
+ `"kms:ReEncryptTo"`
+ `"kms:GenerateDataKeyWithoutPlaintext"`
+ `"kms:CreateGrant"`
+ `"kms:ReEncryptFrom"`
+ `"kms:DescribeKey"`

Ecco un esempio di una policy della chiave che include le autorizzazioni necessarie:

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id": "key-consolepolicy-3",
  "Statement": [
    {
      "Sid": "Allow use of the key for Neptune",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:role/NeptuneFullAccess"
      },
      "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:GenerateDataKey",
        "kms:ReEncryptTo",
        "kms:GenerateDataKeyWithoutPlaintext",
        "kms:CreateGrant",
        "kms:ReEncryptFrom",
        "kms:DescribeKey"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:ViaService": "rds.us-east-1.amazonaws.com"
        }
      }
    },
    {
      "Sid": "Deny use of the key for non Neptune",
      "Effect": "Deny",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:role/NeptuneFullAccess"
      },
      "Action": [
        "kms:*"
      ],
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
          "kms:ViaService": "rds.us-east-1.amazonaws.com"
        }
      }
    }
  ]
}
```

------
+ La prima istruzione fornisce l'accesso a tutti i requisiti necessari AWS KMS APIs per questo ruolo, limitatamente al RDS Service Principal.
+ La seconda dichiarazione rafforza ulteriormente la sicurezza imponendo che questa chiave non sia utilizzabile da questo ruolo per nessun altro servizio. AWS 

È anche possibile ridurre ulteriormente l'ambito delle autorizzazioni `createGrant` aggiungendo:

```
"Condition": {
  "Bool": {
    "kms:GrantIsForAWSResource": true
  }
}
```

## Limitazioni della crittografia Neptune
<a name="encrypt-limitations"></a>

Alla crittografia dei cluster Neptune si applicano le seguenti limitazioni:
+ Non è possibile convertire un cluster database non crittografato in uno crittografato.

  Tuttavia, puoi ripristinare un cluster database non crittografato in un cluster database crittografato. Per eseguire questa operazione, specifica una chiave di crittografia KMS quando ripristini dallo snapshot di cluster database non crittografato.
+ Non è possibile convertire un'istanza database non crittografata in una crittografata. È possibile abilitare la crittografia di un'istanza database solo al momento della creazione.
+ Inoltre, le istanze database crittografate non possono essere modificate per disabilitare la crittografia.
+ Non è possibile creare una replica di lettura crittografata di un'istanza database non crittografata o una replica di lettura non crittografata di un'istanza database crittografata.
+ Le repliche di lettura crittografate devono essere crittografate con la stessa chiave dell'istanza database dell'origine.

# Autenticazione del database Amazon Neptune con AWS Identity and Access Management
<a name="iam-auth"></a>

AWS Identity and Access Management (IAM) è un software Servizio AWS che aiuta un amministratore a controllare in modo sicuro l'accesso alle risorse. AWS Gli amministratori IAM controllano chi può essere *autenticato* (accedere) e *autorizzato* (disporre delle autorizzazioni) per utilizzare le risorse Neptune. IAM è un software Servizio AWS che puoi utilizzare senza costi aggiuntivi.

Puoi usare AWS Identity and Access Management (IAM) per autenticarti sull'istanza o sul cluster DB di Neptune. Quando l'autenticazione del database IAM è abilitata, ogni richiesta deve essere firmata utilizzando AWS Signature Version 4.

AWS Signature Version 4 aggiunge informazioni di autenticazione alle AWS richieste. Per motivi di sicurezza, tutte le richieste ai cluster database Neptune con autenticazione IAM abilitata devono essere firmate con una chiave di accesso. La chiave è composta da un ID chiave di accesso e una chiave di accesso segreta. L'autenticazione viene gestita esternamente utilizzando le policy IAM.

Neptune si autentica durante la connessione e WebSockets per le connessioni verifica periodicamente le autorizzazioni per garantire che l'utente abbia ancora accesso.

**Nota**  
La revoca, l'eliminazione o la rotazione delle credenziali associate all'utente IAM non è consigliata perché non interrompe le connessioni già aperte.
Esistono limiti al numero di WebSocket connessioni simultanee per istanza di database e al tempo in cui una connessione può rimanere aperta. Per ulteriori informazioni, consulta [WebSockets Limiti](limits.md#limits-websockets).

## L'uso di IAM dipende dal ruolo
<a name="security-iam-audience"></a>

Il modo in cui usi AWS Identity and Access Management (IAM) varia a seconda del lavoro svolto in Neptune.

**Utente del servizio**: se utilizzi il servizio Neptune per eseguire il tuo processo, l'amministratore ti fornisce le credenziali e le autorizzazioni necessarie per utilizzare il piano dati di Neptune. Quando hai bisogno di un accesso maggiore per svolgere il tuo lavoro, capire come viene gestito l'accesso ai dati ti consente di richiedere le autorizzazioni corrette all'amministratore.

**Amministratore del servizio**: se sei il responsabile delle risorse Neptune presso la tua azienda, probabilmente disponi dell'accesso alle operazioni di gestione di Neptune, che corrispondono all'[API di gestione Neptune](api.md). Il tuo compito potrebbe anche essere quello di determinare quali azioni di accesso ai dati e risorse Neptune sono necessarie agli utenti del servizio per svolgere il proprio lavoro. Un amministratore IAM può quindi applicare le policy IAM per modificare le autorizzazioni degli utenti del servizio.

**Amministratore IAM**: se sei un amministratore IAM, dovrai scrivere policy IAM per gestire sia la gestione che l'accesso ai dati di Neptune. Per visualizzare esempi di policy basate su identità di Neptune che puoi utilizzare, consulta [Utilizzo di diversi tipi di policy IAM per controllare l'accesso a Neptune](security-iam-access-manage.md#iam-auth-policy).

## Autenticazione con identità
<a name="security-iam-authentication"></a>

L'autenticazione è il modo in cui accedi AWS utilizzando le tue credenziali di identità. Devi autenticarti come utente IAM o assumendo un ruolo IAM. Utente root dell'account AWS

Puoi accedere come identità federata utilizzando credenziali provenienti da una fonte di identità come AWS IAM Identity Center (IAM Identity Center), autenticazione Single Sign-On o credenziali. Google/Facebook Per ulteriori informazioni sull’accesso, consulta [Come accedere all’ Account AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) nella *Guida per l’utente di Accedi ad AWS *.

Per l'accesso programmatico, AWS fornisce un SDK e una CLI per firmare crittograficamente le richieste. Per ulteriori informazioni, consulta [AWS Signature Version 4 per le richieste API](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) nella *Guida per l’utente di IAM*.

### Account AWS utente root
<a name="security-iam-authentication-rootuser"></a>

 Quando si crea un Account AWS, si inizia con un'identità di accesso denominata *utente Account AWS root* che ha accesso completo a tutte Servizi AWS le risorse. Consigliamo vivamente di non utilizzare l’utente root per le attività quotidiane. Per le attività che richiedono le credenziali come utente root, consulta [Attività che richiedono le credenziali dell’utente root](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks) nella *Guida per l’utente di IAM*. 

### Utenti e gruppi IAM
<a name="security-iam-authentication-iamuser"></a>

Un *[utente IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)* è una identità che dispone di autorizzazioni specifiche per una singola persona o applicazione. Ti consigliamo di utilizzare credenziali temporanee invece di utenti IAM con credenziali a lungo termine. Per ulteriori informazioni, consulta [Richiedere agli utenti umani di utilizzare la federazione con un provider di identità per accedere AWS utilizzando credenziali temporanee nella Guida](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp) per l'*utente IAM*.

Un [https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) specifica una raccolta di utenti IAM e semplifica la gestione delle autorizzazioni per gestire gruppi di utenti di grandi dimensioni. Per ulteriori informazioni, consulta [Casi d’uso per utenti IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html) nella *Guida per l’utente di IAM*.

### Ruoli IAM
<a name="security-iam-authentication-iamrole"></a>

Un *[ruolo IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)* è un’identità con autorizzazioni specifiche che fornisce credenziali temporanee. Puoi assumere un ruolo [passando da un ruolo utente a un ruolo IAM (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html) o chiamando un'operazione AWS CLI o AWS API. Per ulteriori informazioni, consulta [Metodi per assumere un ruolo](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html) nella *Guida per l’utente di IAM*.

I ruoli IAM sono utili per l’accesso degli utenti federati, le autorizzazioni utente IAM temporanee, l’accesso multi-account, l’accesso multi-servizio e le applicazioni in esecuzione su Amazon EC2. Per maggiori informazioni, consultare [Accesso a risorse multi-account in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) nella *Guida per l’utente IAM*.

# Abilitazione dell'autenticazione del database IAM in Amazon Neptune
<a name="iam-auth-enable"></a>

Per impostazione predefinita, l'autenticazione database IAM è disabilitata al momento della creazione di un cluster database Amazon Neptune. Puoi attivare l'autenticazione database IAM (o disattivarla nuovamente) utilizzando la Console di gestione AWS.

Per creare un nuovo cluster database Neptune con l'autenticazione IAM utilizzando la console, segui le istruzioni per la creazione di un cluster database Neptune nell'argomento [Avvio di un cluster Neptune DB utilizzando Console di gestione AWS](manage-console-launch-console.md).

Nella seconda pagina del processo di creazione, per **Enable IAM DB Authentication (Attiva autenticazione DB IAM)** scegli **Yes (Sì)**.

**Per abilitare o disabilitare l'autenticazione IAM per un'istanza o un cluster database esistente**

1. [Accedi alla console di AWS gestione e apri la console Amazon Neptune da casa. https://console.aws.amazon.com/neptune/](https://console.aws.amazon.com/neptune/home)

1. Nel pannello di navigazione scegliere **Cluster**.

1. Scegli il cluster database Neptune che desideri modificare e scegli **Azioni cluster**. Scegli **Modify cluster (Modifica cluster)**.

1. Nella sezione**Database options (Opzioni database)**, per **IAM DB Authentication (Autenticazione DB IAM)** scegli **Enable IAM DB authorization (Attiva autorizzazione DB IAM)** o **No** (per disattivare). Quindi, scegliere **Continue (Continua)**.

1. Per applicare immediatamente le modifiche, scegliere **Apply immediately (Applica immediatamente)**.

1. Scegliere **Modify cluster (Modifica cluster)**.

# Connessione al database Amazon Neptune tramite autenticazione AWS Identity and Access Management
<a name="iam-auth-connecting"></a>

Le risorse Amazon Neptune con autenticazione IAM DB abilitata richiedono che tutte le richieste HTTP siano firmate AWS utilizzando Signature Version 4. Per informazioni generali sulla firma delle richieste con AWS Signature Version 4, consulta [Signing AWS API request](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html).

AWS Signature Version 4 è il processo per aggiungere informazioni di autenticazione alle AWS richieste. Per motivi di sicurezza, la maggior parte delle richieste AWS deve essere firmata con una chiave di accesso, che consiste in un ID della chiave di accesso e una chiave di accesso segreta.

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

**Importante**  
L'accesso a Neptune con l'autenticazione basata su IAM richiede la creazione di richieste HTTP e la firma personale delle richieste stesse.

**Come funziona Signature Version 4**

1. Si crea una richiesta canonica.

1. Utilizzi la richiesta canonica e alcune altre informazioni per creare un. string-to-sign

1. Utilizzi la tua chiave di accesso AWS segreta per derivare una chiave di firma, quindi usi quella chiave di firma e poi string-to-sign per creare una firma.

1. Si aggiunge la firma risultante alla richiesta HTTP in un'intestazione o come parametro della stringa di query.

Quando Neptune riceve la richiesta, esegue le stesse operazioni che sono state effettuate per calcolare la firma. Neptune quindi confronta la firma calcolata con quella inviata insieme alla richiesta. Se le firme corrispondono, la richiesta viene elaborata. In caso contrario, viene rifiutata.

Per informazioni generali sulla firma delle richieste con AWS Signature Version 4, vedere [Processo di firma della versione 4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) di Signature in. *Riferimenti generali di AWS*

Le sezioni successive illustrano esempi di come inviare le richieste firmate agli endpoint Gremlin e SPARQL di un'istanza database Neptune con l'autenticazione IAM abilitata.

**Topics**
+ [Prerequisiti per la connessione dei database Amazon Neptune tramite l'autenticazione IAM](iam-auth-connect-prerq.md)
+ [Connessione ai database Amazon Neptune utilizzando l'autenticazione IAM dalla riga di comando](iam-auth-connect-command-line.md)
+ [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 SPARQL e Node.js](iam-auth-connecting-sparql-node.md)
+ [Connessione ai database Amazon Neptune utilizzando l'autenticazione IAM con Python](iam-auth-connecting-python.md)
+ [Connessione ai database Amazon Neptune utilizzando l'autenticazione IAM con Gremlin Python](gremlin-python-iam-auth.md)
+ [Connessione ai database Amazon Neptune utilizzando l'autenticazione IAM con Gremlin JavaScript](gremlin-javascript-iam-auth.md)
+ [Connessione ai database Amazon Neptune utilizzando l'autenticazione IAM con Gremlin Go](gremlin-go-iam-auth.md)
+ [Connessione ai database Amazon Neptune utilizzando l'autenticazione IAM con Gremlin.NET](gremlin-dotnet-iam-auth.md)

# Prerequisiti per la connessione dei database Amazon Neptune tramite l'autenticazione IAM
<a name="iam-auth-connect-prerq"></a>

Di seguito sono riportate le istruzioni per l'installazione di Apache Maven e Java 8 su un'istanza Amazon EC2. Questi sono necessari per gli esempi di autenticazione di Signature Version 4 di Amazon Neptune.

**Installazione di Apache Maven e Java 8 sull'istanza EC2.**

1. Collegare l'istanza Amazon EC2 a un client SSH.

1. Installare Apache Maven sull'istanza EC2. Se usi Amazon Linux 2023 (preferito), usa:

   ```
   sudo dnf update -y
   sudo dnf install maven -y
   ```

   Se usi Amazon Linux 2, scarica il file binario più recente da [https://maven.apache.org/download.cgi:](https://maven.apache.org/download.cgi:)

   ```
   sudo yum remove maven -y
   wget https://dlcdn.apache.org/maven/maven-3/ <version>/binaries/apache-maven-<version>-bin.tar.gz
   sudo tar -xzf apache-maven-<version>-bin.tar.gz -C /opt/
   sudo ln -sf /opt/apache-maven-<version> /opt/maven
   echo 'export MAVEN_HOME=/opt/maven' >> ~/.bashrc
   echo 'export PATH=$MAVEN_HOME/bin:$PATH' >> ~/.bashrc
   source ~/.bashrc
   ```

1. Le librerie della console Gremlin richiedono Java 8. Per installare Java 8 sull'istanza EC2, digita quanto segue.

   ```
   sudo yum install java-1.8.0-devel
   ```

1. Per impostare Java 8 come runtime predefinito sull'istanza EC2, digitare quanto segue.

   ```
   sudo /usr/sbin/alternatives --config java
   ```

   Quando richiesto, immetti il numero per Java 8.

1. Per impostare Java 8 come compilatore predefinito sull'istanza EC2, immetti quanto segue:

   ```
   sudo /usr/sbin/alternatives --config javac
   ```

   Quando richiesto, immetti il numero per Java 8.

# Connessione ai database Amazon Neptune utilizzando l'autenticazione IAM dalla riga di comando
<a name="iam-auth-connect-command-line"></a>

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](https://curl.haxx.se/) è un'opzione eccellente per comunicare con gli endpoint Neptune se l'autenticazione IAM non è abilitata.

**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)](https://docs.aws.amazon.com/general/latest/gr/signing-aws-api-requests.html). Lo strumento a riga di comando [awscurl](https://github.com/okigan/awscurl) di terze parti utilizza la stessa sintassi di `curl` e può firmare le query utilizzando la firma Sig4. La sezione [Uso di `awscurl`](#iam-auth-connect-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
<a name="iam-auth-connect-command-line-https"></a>

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 SSL](https://curl.haxx.se/docs/sslcerts.html) nella documentazione di `curl`.

È 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](https://curl.haxx.se/docs/sslcerts.html).

## Utilizzo di `awscurl` con credenziali temporanee per connettersi in modo sicuro a un cluster database con autenticazione IAM abilitata
<a name="iam-auth-connect-awscurl"></a>

Lo strumento [awscurl](https://github.com/okigan/awscurl) utilizza la stessa sintassi di `curl`, 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 ambiente `AWS_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 ambiente `AWS_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 ambiente `AWS_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)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html) o uno dei relativi APIs wrapper.AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/sts/index.html)

È 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](https://docs.aws.amazon.com/cli/latest/reference/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=$(echo $output | jq '.Credentials''.AccessKeyId')
SecretAccessKey=$(echo $output | jq '.Credentials''.SecretAccessKey')
SessionToken=$(echo $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
```

# Connessione ai database Amazon Neptune utilizzando l'autenticazione IAM con la console Gremlin
<a name="iam-auth-connecting-gremlin-console"></a>

Per connetterti ad Amazon Neptune utilizzando la console Gremlin con autenticazione Signature Version 4, devi `requestInterceptor()` collegare un firmatario SigV4 alla connessione stabilita dal comando. `:remote` Ciò richiede di configurare l'`Cluster`oggetto manualmente e poi passarlo al comando. `:remote`

Tenere presente che questo è molto diverso dalla situazione tipica in cui il comando `:remote` richiede un file di configurazione per formare la connessione. L'approccio del file di configurazione non funzionerà perché `requestInterceptor()` deve essere impostato a livello di codice e non può caricare la configurazione da un file.

**Nota**  
Gli esempi seguenti utilizzano`requestInterceptor()`, che è stato introdotto nella versione TinkerPop 3.6.6. Se stai usando una TinkerPop versione precedente alla 3.6.6 (ma 3.5.5 o successiva), usa `handshakeInterceptor()` invece che negli esempi di `requestInterceptor()` codice seguenti.

Sono necessari i seguenti prerequisiti:
+ È necessario disporre delle credenziali IAM necessarie per firmare le richieste. Vedi [Utilizzo della catena di fornitori di credenziali predefinita nella Guida](https://docs.aws.amazon.com//sdk-for-java/latest/developer-guide/credentials-chain.html) per gli AWS SDK per Java sviluppatori.
+ È necessario aver installato una versione della console Gremlin compatibile con la versione del motore Neptune utilizzata dal cluster database.

Se si utilizzano credenziali temporanee, queste scadono dopo un intervallo specificato, così come il token di sessione, quindi è necessario aggiornare il token di sessione quando si richiedono nuove credenziali. Vedi [Utilizzo di credenziali di sicurezza temporanee per richiedere l'accesso alle AWS risorse nella Guida per](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) l'utente IAM.

Per informazioni sulla connessione tramite SSL/TLS, consulta [Configurazione SSL/TLS](access-graph-gremlin-java.md#access-graph-gremlin-java-ssl).

**Connect la console Gremlin con la firma Sig4**

1. Avviare la console Gremlin:

   ```
   $ bin/gremlin.sh
   ```

1. Al prompt `gremlin>`, installare la libreria `amazon-neptune-sigv4-signer` (questa operazione deve essere eseguita solo una volta per la console):

   ```
   :install com.amazonaws amazon-neptune-sigv4-signer 2.4.0
   ```

   [Se riscontri problemi con questo passaggio, può essere utile consultare la [TinkerPop documentazione](https://tinkerpop.apache.org/docs/current/reference/#gremlin-applications) sulla configurazione di Grape.](http://docs.groovy-lang.org/latest/html/documentation/grape.html)
**Nota**  
Se si utilizza un proxy HTTP, è possibile che si verifichino errori in questo passaggio in cui il comando `:install` non viene completato. Per risolvere questo problema, esegui i comandi seguenti per fornire alla console informazioni sul proxy:  

   ```
   System.setProperty("https.proxyHost", "(the proxy IP address)")
   System.setProperty("https.proxyPort", "(the proxy port)")
   ```

1. Importare la classe richiesta per gestire l'accesso a `requestInterceptor()`:

   ```
   :import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider
   :import com.amazonaws.neptune.auth.NeptuneNettyHttpSigV4Signer
   ```

1. Se si utilizzano credenziali temporanee, è necessario fornire anche il token di sessione come segue:

   ```
   System.setProperty("aws.sessionToken","(your session token)")
   ```

1. Se non si sono ancora stabilite le credenziali dell'account, è possibile assegnarle come segue:

   ```
   System.setProperty("aws.accessKeyId","(your access key)")
   System.setProperty("aws.secretKey","(your secret key)")
   ```

1. Costruire manualmente l'oggetto `Cluster` da connettere a Neptune:

   ```
   cluster = Cluster.build("(host name)")  \
                    .enableSsl(true) \
                    .requestInterceptor { r ->  \
                      def sigV4Signer = new NeptuneNettyHttpSigV4Signer("(Amazon region)", \
                                        DefaultCredentialsProvider.create()); \
                      sigV4Signer.signRequest(r); \
                      return r; } \
                    .create()
   ```

   Per informazioni su come trovare il nome host di un'istanza database Neptune, consulta [Connessione agli endpoint Amazon Neptune](feature-overview-endpoints.md).

1. Stabilire la connessione `:remote` utilizzando il nome della variabile dell'oggetto `Cluster` nel passaggio precedente:

   ```
   :remote connect tinkerpop.server cluster
   ```

1. Immettere il seguente comando per passare alla modalità remota. In questo modo tutte le query Gremlin vengono inviate alla connessione remota:

   ```
   :remote console
   ```

# Connessione ai database Amazon Neptune tramite IAM con Gremlin Java
<a name="iam-auth-connecting-gremlin-java"></a>

Ecco un esempio di come connettersi a Neptune utilizzando l'API Java Gremlin con firma Sig4 (si presuppone una conoscenza generale dell'uso di Maven). Questo esempio utilizza la libreria [Amazon Neptune SigV4 Signer](https://github.com/aws/amazon-neptune-sigv4-signer) per facilitare la firma delle richieste. Innanzitutto, definire le dipendenze come parte del file `pom.xml`:

**Nota**  
I seguenti esempi utilizzano`requestInterceptor()`, che è stata introdotta nella versione 3.6.6. TinkerPop Se stai usando una TinkerPop versione precedente alla 3.6.6 (ma 3.5.5 o successiva), usa `handshakeInterceptor()` invece che negli esempi di `requestInterceptor()` codice seguenti.

```
<dependency>
  <groupId>com.amazonaws</groupId>
  <artifactId>amazon-neptune-sigv4-signer</artifactId>
  <version>3.1.0</version>
</dependency>
```

 Amazon Neptune SigV4 Signer supporta entrambe le versioni 1.x e 2.x di Java SDK. AWS I seguenti esempi utilizzano 2.x, dove è un'istanza. `DefaultCredentialsProvider` `software.amazon.awssdk.auth.credentials.AwsCredentialsProvider` Se stai effettuando l'aggiornamento da 1.x a 2.x, consulta le [modifiche al provider Credentials nella documentazione](https://docs.aws.amazon.com//sdk-for-java/latest/developer-guide/migration-client-credentials.html) di SDK for AWS Java 2.x. 

```
import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider;
import com.amazonaws.neptune.auth.NeptuneNettyHttpSigV4Signer;
import com.amazonaws.neptune.auth.NeptuneSigV4SignerException;

 ...

System.setProperty("aws.accessKeyId","your-access-key");
System.setProperty("aws.secretKey","your-secret-key");

 ...

Cluster cluster = Cluster.build((your cluster))
                 .enableSsl(true)
                 .requestInterceptor( r ->
                  {
                    try {
                      NeptuneNettyHttpSigV4Signer sigV4Signer =
                        new NeptuneNettyHttpSigV4Signer("(your region)", DefaultCredentialsProvider.create());
                      sigV4Signer.signRequest(r);
                    } catch (NeptuneSigV4SignerException e) {
                      throw new RuntimeException("Exception occurred while signing the request", e);
                    }
                    return r;
                  }
                 ).create();
try {
  Client client = cluster.connect();
  client.submit("g.V().has('code','IAD')").all().get();
} catch (Exception e) {
  throw new RuntimeException("Exception occurred while connecting to cluster", e);
}
```

## Autenticazione IAM tra account
<a name="iam-auth-connecting-gremlin-java-cross-account"></a>

 [Amazon Neptune supporta l'autenticazione IAM tra account attraverso l'uso dell'assunzione di ruolo, a volte chiamata anche concatenazione dei ruoli.](https://docs.aws.amazon.com//neptune/latest/userguide/bulk-load-tutorial-chain-roles.html#bulk-load-tutorial-chain-cross-account) Per fornire l'accesso a un cluster Neptune da un'applicazione ospitata in un account diverso: AWS 
+  Crea un nuovo utente o ruolo IAM nell' AWS account dell'applicazione, con una policy di fiducia che consenta all'utente o al ruolo di assumere un altro ruolo IAM. Assegna questo ruolo al computer che ospita l'applicazione (istanza EC2, funzione Lambda, ECS Task, ecc.). 

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

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Sid": "assumeRolePolicy",
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Resource": "arn:aws:iam::111122223333:role/role-name"
      }
    ]
  }
  ```

------
+  Crea un nuovo ruolo IAM nell'account del database Neptune che consenta l'accesso al AWS database Neptune e consenta l'assunzione del ruolo dall'utente/ruolo IAM dell'account dell'applicazione. Utilizza una politica di fiducia di: 

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Principal": {
                  "AWS": [
                      "(ARN of application account IAM user or role)"
                  ]
              },
              "Action": "sts:AssumeRole",
              "Condition": {}
          }
      ]
  }
  ```

------
+  Utilizzate il seguente esempio di codice come guida su come utilizzare questi due ruoli per consentire all'applicazione di accedere a Neptune. In questo esempio, il ruolo dell'account dell'applicazione verrà assunto tramite [DefaultCredentialProviderChain](https://docs.aws.amazon.com//sdk-for-java/v1/developer-guide/credentials.html)durante la creazione di. `STSclient` `STSclient`Viene quindi utilizzato tramite il `STSAssumeRoleSessionCredentialsProvider` per assumere il ruolo ospitato nell'account del database AWS Neptune. 

  ```
  public static void main( String[] args )
    {
  
      /* 
       * Establish an STS client from the application account.
       */
      AWSSecurityTokenService client = AWSSecurityTokenServiceClientBuilder
          .standard()
          .build();
  
      /*
       * Define the role ARN that you will be assuming in the database account where the Neptune cluster resides.
       */
      String roleArnToAssume = "arn:aws:iam::012345678901:role/CrossAccountNeptuneRole";
      String crossAccountSessionName = "cross-account-session-" + UUID.randomUUID();
  
      /*
       * Change the Credentials Provider in the SigV4 Signer to use the STSAssumeRole Provider and provide it
       * with both the role to be assumed, the original STS client, and a session name (which can be
       * arbitrary.)
       */
      Cluster cluster = Cluster.build()
                   .addContactPoint("neptune-cluster.us-west-2.neptune.amazonaws.com")
                   .enableSsl(true)
                   .port(8182)
                   .requestInterceptor( r ->
                    {
                      try {
                        NeptuneNettyHttpSigV4Signer sigV4Signer =
                          // new NeptuneNettyHttpSigV4Signer("us-west-2", DefaultCredentialsProvider.create());
                          new NeptuneNettyHttpSigV4Signer(
                                  "us-west-2",  
                                   new STSAssumeRoleSessionCredentialsProvider
                                      .Builder(roleArnToAssume, crossAccountSessionName)
                                          .withStsClient(client)
                                          .build());
                        sigV4Signer.signRequest(r);
                      } catch (NeptuneSigV4SignerException e) {
                        throw new RuntimeException("Exception occurred while signing the request", e);
                      }
                      return r;
                    }
                   ).create();
  
      GraphTraversalSource g = traversal().withRemote(DriverRemoteConnection.using(cluster));
  
      /* whatever application code is necessary */
  
      cluster.close();
    }
  ```

# Connessione ai database Amazon Neptune utilizzando l'autenticazione IAM con Java e SPARQL
<a name="iam-auth-connecting-sparql-java"></a>

Questa sezione mostra come connettersi a Neptune utilizzando J RDF4 o Apache Jena con autenticazione Signature Version 4.

**Prerequisiti**
+ Java 8 o versione successiva.
+ Apache Maven 3.3 o versione successiva.

  Per informazioni sull'installazione di questi prerequisiti su un'istanza EC2 che esegue Amazon Linux, consulta [Prerequisiti per la connessione dei database Amazon Neptune tramite l'autenticazione IAM](iam-auth-connect-prerq.md).
+ Le credenziali di IAM per firmare le richieste. Per ulteriori informazioni, consulta [Utilizzo della catena di provider delle credenziali predefinita](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html#credentials-default) nella *Guida per gli sviluppatori di AWS SDK per Java *
**Nota**  
Se utilizzi credenziali temporanee, queste 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 per richiedere l'accesso alle AWS risorse nella Guida per l'utente](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) IAM.*
+ Imposta la variabile `SERVICE_REGION` su uno dei valori seguenti per indicare la regione dell'istanza database Neptune:
  + Stati Uniti orientali (Virginia settentrionale): `us-east-1`
  + Stati Uniti orientali (Ohio): `us-east-2`
  + Stati Uniti occidentali (California settentrionale): `us-west-1`
  + Stati Uniti occidentali (Oregon): `us-west-2`
  + Canada (Centrale): `ca-central-1`
  + Canada occidentale (Calgary): `ca-west-1`
  + Sud America (San Paolo): `sa-east-1`
  + Europa (Stoccolma): `eu-north-1`
  + Europa (Spagna): `eu-south-2`
  + Europa (Irlanda): `eu-west-1`
  + Europa (Londra): `eu-west-2`
  + Europa (Parigi): `eu-west-3`
  + Europa (Francoforte): `eu-central-1`
  + Medio Oriente (Bahrein): `me-south-1`
  + Medio Oriente (Emirati Arabi Uniti): `me-central-1`
  + Israele (Tel Aviv):   `il-central-1`
  + Africa (Città del Capo): `af-south-1`
  + Asia Pacifico (Hong Kong): `ap-east-1`
  + Asia Pacifico (Tokyo): `ap-northeast-1`
  + Asia Pacifico (Seoul): `ap-northeast-2`
  + Asia Pacifico (Osaka): `ap-northeast-3`
  + Asia Pacifico (Singapore): `ap-southeast-1`
  + Asia Pacifico (Sydney): `ap-southeast-2`
  + Asia Pacifico (Giacarta): `ap-southeast-3`
  + Asia Pacifico (Melbourne): `ap-southeast-4`
  + Asia Pacifico (Malesia): `ap-southeast-5`
  + Asia Pacifico (Mumbai): `ap-south-1`
  + Asia Pacifico (Hyderabad): `ap-south-2`
  + Cina (Pechino): `cn-north-1`
  + Cina (Ningxia): `cn-northwest-1`
  + AWS GovCloud (Stati Uniti occidentali): `us-gov-west-1`
  + AWS GovCloud (Stati Uniti orientali): `us-gov-east-1`

**Per connettersi a Neptune usando J RDF4 o Apache Jena con firma Signature Version 4**

1. Clona il repository di esempio da. GitHub

   ```
   git clone https://github.com/aws/amazon-neptune-sparql-java-sigv4.git
   ```

1. Passa alla directory clonata.

   ```
   cd amazon-neptune-sparql-java-sigv4
   ```

1. Scarica la versione più recente del progetto controllando il ramo con il tag più recente.

   ```
   git checkout $(git describe --tags `git rev-list --tags --max-count=1`)
   ```

1. Inserisci uno dei seguenti comandi per compilare ed eseguire il codice di esempio.

   Sostituisci *your-neptune-endpoint* con il nome host o l'indirizzo IP dell'istanza DB di Neptune. La porta predefinita è 8182.
**Nota**  
Per informazioni su come trovare il nome host dell'istanza database Neptune, consulta la sezione [Connessione agli endpoint Amazon Neptune](feature-overview-endpoints.md).

**RDF4Eclipse J**  
Immettere quanto segue per eseguire l'esempio RDF4 J.

   ```
   mvn compile exec:java \
       -Dexec.mainClass="com.amazonaws.neptune.client.rdf4j.NeptuneRdf4JSigV4Example" \
       -Dexec.args="https://your-neptune-endpoint:portsparql region-name"
   ```

**Apache Jena**  
Immetti quanto segue per eseguire l'esempio di Apache Jena.

   ```
   mvn compile exec:java \
       -Dexec.mainClass="com.amazonaws.neptune.client.jena.NeptuneJenaSigV4Example" \
       -Dexec.args="https://your-neptune-endpoint:port"
   ```

1. Per visualizzare il codice sorgente dell'esempio, consulta gli esempi disponibili nella directory `src/main/java/com/amazonaws/neptune/client/`.

Per utilizzare il driver di firma SigV4 nella tua applicazione Java, aggiungi il pacchetto Maven `amazon-neptune-sigv4-signer` alla sezione `<dependencies>` di `pom.xml`. Ti consigliamo di usare gli esempi come punto di partenza.

# Connessione ai database Amazon Neptune utilizzando l'autenticazione IAM con SPARQL e Node.js
<a name="iam-auth-connecting-sparql-node"></a>

## Esecuzione di query utilizzando la firma Signature V4 e l' AWS SDK per Javascript V3
<a name="iam-auth-querying-sparql-js-sdk-v3"></a>

Ecco un esempio di come connettersi a Neptune SPARQL utilizzando Node.js con l'autenticazione Signature Version 4 e AWS l'SDK per Javascript V3:

```
const { HttpRequest }  = require('@smithy/protocol-http');
const { fromNodeProviderChain } = require('@aws-sdk/credential-providers');
const { SignatureV4 } = require('@smithy/signature-v4');
const { Sha256 } = require('@aws-crypto/sha256-universal');
const https = require('https');

var region = 'us-west-2'; // e.g. us-west-1
var neptune_endpoint = 'your-Neptune-cluster-endpoint';  // like: 'cluster-id.region.neptune.amazonaws.com'
var query = `query=PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX class: <http://aws.amazon.com/neptune/csv2rdf/class/>
PREFIX resource: <http://aws.amazon.com/neptune/csv2rdf/resource/>
PREFIX prop: <http://aws.amazon.com/neptune/csv2rdf/datatypeProperty/>
PREFIX objprop: <http://aws.amazon.com/neptune/csv2rdf/objectProperty/>

SELECT ?movies ?title WHERE {
  ?jel prop:name "James Earl Jones" .
  ?movies ?p2 ?jel .
  ?movies prop:title ?title
} LIMIT 10`;

runQuery(query);

function runQuery(q) {
  var request = new HttpRequest({
    hostname: neptune_endpoint,
    port: 8182,
    path: 'sparql',
    body: encodeURI(query),
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded',
      'host': neptune_endpoint + ':8182',
    },
    method: 'POST',
  });

  const credentialProvider = fromNodeProviderChain();
  let credentials = credentialProvider();
  credentials.then(
    (cred)=>{
      var signer = new SignatureV4({credentials: cred, region: region, sha256: Sha256, service: 'neptune-db'});
      signer.sign(request).then(
        (req)=>{
          var responseBody = '';
          var sendreq = https.request(
            {
              host: req.hostname,
              port: req.port,
              path: req.path,
              method: req.method,
              headers: req.headers,
            },
          (res) => {
            res.on('data', (chunk) => { responseBody += chunk; });
            res.on('end', () => {
                console.log(JSON.parse(responseBody));
            });
          });
          sendreq.write(req.body);
          sendreq.end();
        }
      );
    },
    (err)=>{
      console.error(err);
    }
  );
}
```

## Esecuzione di query utilizzando la firma Signature V4 e l'SDK per Javascript V2 AWS
<a name="iam-auth-querying-sparql-js-sdk-v2"></a>

Ecco un esempio di come connettersi a Neptune SPARQL utilizzando Node.js con l'autenticazione Signature Version 4 e AWS l'SDK per Javascript V2:

```
var AWS = require('aws-sdk');

var region = 'us-west-2'; // e.g. us-west-1
var neptune_endpoint = 'your-Neptune-cluster-endpoint';  // like: 'cluster-id.region.neptune.amazonaws.com'
var query = `query=PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX class: <http://aws.amazon.com/neptune/csv2rdf/class/>
PREFIX resource: <http://aws.amazon.com/neptune/csv2rdf/resource/>
PREFIX prop: <http://aws.amazon.com/neptune/csv2rdf/datatypeProperty/>
PREFIX objprop: <http://aws.amazon.com/neptune/csv2rdf/objectProperty/>

SELECT ?movies ?title WHERE {
    ?jel prop:name "James Earl Jones" .
    ?movies ?p2 ?jel .
    ?movies prop:title ?title
} LIMIT 10`;

runQuery(query);

function runQuery(q) {

    var endpoint = new AWS.Endpoint(neptune_endpoint);
    endpoint.port = 8182;
    var request = new AWS.HttpRequest(endpoint, region);
    request.path += 'sparql';
    request.body = encodeURI(query);
    request.headers['Content-Type'] = 'application/x-www-form-urlencoded';
    request.headers['host'] = neptune_endpoint;
    request.method = 'POST';

    var credentials = new AWS.CredentialProviderChain();
    credentials.resolve((err, cred)=>{
        var signer = new AWS.Signers.V4(request, 'neptune-db');
        signer.addAuthorization(cred, new Date());
    });

    var client = new AWS.HttpClient();
    client.handleRequest(request, null, function(response) {
        console.log(response.statusCode + ' ' + response.statusMessage);
        var responseBody = '';
        response.on('data', function (chunk) {
            responseBody += chunk;
        });
        response.on('end', function (chunk) {
            console.log('Response body: ' + responseBody);
        });
    }, function(error) {
        console.log('Error: ' + error);
    });
}
```

# Connessione ai database Amazon Neptune utilizzando l'autenticazione IAM con Python
<a name="iam-auth-connecting-python"></a>

In questa sezione viene mostrato un programma di esempio scritto in Python che spiega come lavorare con Signature Version 4 per Amazon Neptune. Questo esempio si basa sugli esempi nella sezione [processo di firma Signature Version 4](https://docs.aws.amazon.com/general/latest/gr/sigv4-signed-request-examples.html) in *Riferimenti generali di Amazon Web Services*.

Per lavorare con questo programma di esempio, è necessario:
+ Python 3.x installato nel computer, scaricabile dal [sito Python](https://www.python.org/downloads/). Questi programmi sono stati testati utilizzando Python 3.6.
+ La [libreria di richieste Python](https://pypi.python.org/pypi/requests), utilizzata nello script di esempio per creare richieste Web. Un modo comodo per installare i pacchetti Python è utilizzare `pip`, che consente di ottenere i pacchetti dal sito del'indice dei pacchetti Python. È quindi possibile installare `requests` eseguendo `pip install requests` alla riga di comando.
+ Una chiave di accesso (ID della chiave di accesso e chiave di accesso segreta) nelle variabili di ambiente denominate `AWS_ACCESS_KEY_ID` e `AWS_SECRET_ACCESS_KEY`. Come best practice, è consigliabile *non* incorporare le credenziali nel codice. Per ulteriori informazioni, consulta [Best practice per gli account AWS](https://docs.aws.amazon.com//accounts/latest/reference/best-practices.html) nella *Guida di riferimento Gestione dell'account AWS *.

  La regione del tuo cluster database Neptune nella variabile di ambiente denominata `SERVICE_REGION`.

  Se usi credenziali temporanee, devi specificare `AWS_SESSION_TOKEN` oltre a `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` e `SERVICE_REGION`.
**Nota**  
Se utilizzi credenziali temporanee, queste 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 delle credenziali di sicurezza temporanee per richiedere l'accesso alle risorse AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html).

L'esempio seguente mostra come effettuare richieste firmate a Neptune utilizzando Python. La richiesta effettua una richiesta GET o POST. Le informazioni di autenticazione vengono trasferite utilizzando l'intestazione della richiesta `Authorization`.

Questo esempio funziona anche come AWS Lambda funzione. Per ulteriori informazioni, consulta [Configurazione di AWS Lambda per l'autenticazione IAM di Neptune](iam-auth-temporary-credentials.md#iam-auth-temporary-credentials-lambda).

**Per effettuare richieste firmate agli endpoint Neptune Gremlin e SPARQL**

1. Crea un nuovo file denominato `neptunesigv4.py` e aprilo in un editor di testo.

1. Copia la seguente chiave pubblica e incollala nel file `neptunesigv4.py`.

   ```
   # Amazon Neptune version 4 signing example (version v3)
   
   # The following script requires python 3.6+
   #    (sudo yum install python36 python36-virtualenv python36-pip)
   # => the reason is that we're using urllib.parse() to manually encode URL
   #    parameters: the problem here is that SIGV4 encoding requires whitespaces
   #    to be encoded as %20 rather than not or using '+', as done by previous/
   #    default versions of the library.
   
   
   # See: https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html
   import sys, datetime, hashlib, hmac
   import requests  # pip3 install requests
   import urllib
   import os
   import json
   from botocore.auth import SigV4Auth
   from botocore.awsrequest import AWSRequest
   from botocore.credentials import ReadOnlyCredentials
   from types import SimpleNamespace
   from argparse import RawTextHelpFormatter
   from argparse import ArgumentParser
   
   # Configuration. https is required.
   protocol = 'https'
   
   # The following lines enable debugging at httplib level (requests->urllib3->http.client)
   # You will see the REQUEST, including HEADERS and DATA, and RESPONSE with HEADERS but without DATA.
   #
   # The only thing missing will be the response.body which is not logged.
   #
   # import logging
   # from http.client import HTTPConnection
   # HTTPConnection.debuglevel = 1
   # logging.basicConfig()
   # logging.getLogger().setLevel(logging.DEBUG)
   # requests_log = logging.getLogger("requests.packages.urllib3")
   # requests_log.setLevel(logging.DEBUG)
   # requests_log.propagate = True
   
   
   # Read AWS access key from env. variables. Best practice is NOT
   # to embed credentials in code.
   access_key = os.getenv('AWS_ACCESS_KEY_ID', '')
   secret_key = os.getenv('AWS_SECRET_ACCESS_KEY', '')
   region = os.getenv('SERVICE_REGION', '')
   
   # AWS_SESSION_TOKEN is optional environment variable. Specify a session token only if you are using temporary
   # security credentials.
   session_token = os.getenv('AWS_SESSION_TOKEN', '')
   
   ### Note same script can be used for AWS Lambda (runtime = python3.6).
   ## Steps to use this python script for AWS Lambda
   # 1. AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY and AWS_SESSION_TOKEN and AWS_REGION variables are already part of Lambda's Execution environment
   #    No need to set them up explicitly.
   # 3. Create Lambda deployment package https://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html
   # 4. Create a Lambda function in the same VPC and assign an IAM role with neptune access
   
   def lambda_handler(event, context):
       # sample_test_input = {
       #     "host": "END_POINT:8182",
       #     "method": "GET",
       #     "query_type": "gremlin",
       #     "query": "g.V().count()"
       # }
   
       # Lambda uses AWS_REGION instead of SERVICE_REGION
       global region
       region = os.getenv('AWS_REGION', '')
   
       host = event['host']
       method = event['method']
       query_type = event['query_type']
       query =  event['query']
   
       return make_signed_request(host, method, query_type, query)
   
   def validate_input(method, query_type):
       # Supporting GET and POST for now:
       if (method != 'GET' and method != 'POST'):
           print('First parameter must be "GET" or "POST", but is "' + method + '".')
           sys.exit()
   
       # SPARQL UPDATE requires POST
       if (method == 'GET' and query_type == 'sparqlupdate'):
           print('SPARQL UPDATE is not supported in GET mode. Please choose POST.')
           sys.exit()
   
   def get_canonical_uri_and_payload(query_type, query, method):
       # Set the stack and payload depending on query_type.
       if (query_type == 'sparql'):
           canonical_uri = '/sparql/'
           payload = {'query': query}
   
       elif (query_type == 'sparqlupdate'):
           canonical_uri = '/sparql/'
           payload = {'update': query}
   
       elif (query_type == 'gremlin'):
           canonical_uri = '/gremlin/'
           payload = {'gremlin': query}
           if (method == 'POST'):
               payload = json.dumps(payload)
   
       elif (query_type == 'openCypher'):
           canonical_uri = '/openCypher/'
           payload = {'query': query}
   
       elif (query_type == "loader"):
           canonical_uri = "/loader/"
           payload = query
   
       elif (query_type == "status"):
           canonical_uri = "/status/"
           payload = {}
   
       elif (query_type == "gremlin/status"):
           canonical_uri = "/gremlin/status/"
           payload = {}
   
       elif (query_type == "openCypher/status"):
           canonical_uri = "/openCypher/status/"
           payload = {}
   
       elif (query_type == "sparql/status"):
           canonical_uri = "/sparql/status/"
           payload = {}
   
       else:
           print(
               'Third parameter should be from ["gremlin", "sparql", "sparqlupdate", "loader", "status] but is "' + query_type + '".')
           sys.exit()
       ## return output as tuple
       return canonical_uri, payload
   
   def make_signed_request(host, method, query_type, query):
       service = 'neptune-db'
       endpoint = protocol + '://' + host
   
       print()
       print('+++++ USER INPUT +++++')
       print('host = ' + host)
       print('method = ' + method)
       print('query_type = ' + query_type)
       print('query = ' + query)
   
       # validate input
       validate_input(method, query_type)
   
       # get canonical_uri and payload
       canonical_uri, payload = get_canonical_uri_and_payload(query_type, query, method)
   
       # assign payload to data or params
       data = payload if method == 'POST' else None
       params = payload if method == 'GET' else None
   
       # create request URL
       request_url = endpoint + canonical_uri
   
       # create and sign request
       creds = SimpleNamespace(
           access_key=access_key, secret_key=secret_key, token=session_token, region=region,
       )
   
       request = AWSRequest(method=method, url=request_url, data=data, params=params)
       SigV4Auth(creds, service, region).add_auth(request)
   
       r = None
   
       # ************* SEND THE REQUEST *************
       if (method == 'GET'):
   
           print('++++ BEGIN GET REQUEST +++++')
           print('Request URL = ' + request_url)
           r = requests.get(request_url, headers=request.headers, verify=False, params=params)
   
       elif (method == 'POST'):
   
           print('\n+++++ BEGIN POST REQUEST +++++')
           print('Request URL = ' + request_url)
           if (query_type == "loader"):
               request.headers['Content-type'] = 'application/json'
           r = requests.post(request_url, headers=request.headers, verify=False, data=data)
   
       else:
           print('Request method is neither "GET" nor "POST", something is wrong here.')
   
       if r is not None:
           print()
           print('+++++ RESPONSE +++++')
           print('Response code: %d\n' % r.status_code)
           response = r.text
           r.close()
           print(response)
   
           return response
   
   help_msg = '''
       export AWS_ACCESS_KEY_ID=[MY_ACCESS_KEY_ID]
       export AWS_SECRET_ACCESS_KEY=[MY_SECRET_ACCESS_KEY]
       export AWS_SESSION_TOKEN=[MY_AWS_SESSION_TOKEN]
       export SERVICE_REGION=[us-east-1|us-east-2|us-west-2|eu-west-1]
   
       python version >=3.6 is required.
   
       Examples: For help
       python3 program_name.py -h
   
       Examples: Queries
       python3 program_name.py -ho your-neptune-endpoint -p 8182 -a GET -q status
       python3 program_name.py -ho your-neptune-endpoint -p 8182 -a GET -q sparql/status
       python3 program_name.py -ho your-neptune-endpoint -p 8182 -a GET -q sparql -d "SELECT ?s WHERE { ?s ?p ?o }"
       python3 program_name.py -ho your-neptune-endpoint -p 8182 -a POST -q sparql -d "SELECT ?s WHERE { ?s ?p ?o }"
       python3 program_name.py -ho your-neptune-endpoint -p 8182 -a POST -q sparqlupdate -d "INSERT DATA { <https://s> <https://p> <https://o> }"
       python3 program_name.py -ho your-neptune-endpoint -p 8182 -a GET -q gremlin/status
       python3 program_name.py -ho your-neptune-endpoint -p 8182 -a GET -q gremlin -d "g.V().count()"
       python3 program_name.py -ho your-neptune-endpoint -p 8182 -a POST -q gremlin -d "g.V().count()"
       python3 program_name.py -ho your-neptune-endpoint -p 8182 -a GET -q openCypher/status
       python3 program_name.py -ho your-neptune-endpoint -p 8182 -a GET -q openCypher -d "MATCH (n1) RETURN n1 LIMIT 1;"
       python3 program_name.py -ho your-neptune-endpoint -p 8182 -a POST -q openCypher -d "MATCH (n1) RETURN n1 LIMIT 1;"
       python3 program_name.py -ho your-neptune-endpoint -p 8182 -a GET -q loader -d '{"loadId": "68b28dcc-8e15-02b1-133d-9bd0557607e6"}'
       python3 program_name.py -ho your-neptune-endpoint -p 8182 -a GET -q loader -d '{}'
       python3 program_name.py -ho your-neptune-endpoint -p 8182 -a POST -q loader -d '{"source": "source", "format" : "csv", "failOnError": "fail_on_error", "iamRoleArn": "iam_role_arn", "region": "region"}'
   
       Environment variables must be defined as AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY and SERVICE_REGION.
       You should also set AWS_SESSION_TOKEN environment variable if you are using temporary credentials (ex. IAM Role or EC2 Instance profile).
   
       Current Limitations:
       - Query mode "sparqlupdate" requires POST (as per the SPARQL 1.1 protocol)
               '''
   
   def exit_and_print_help():
       print(help_msg)
       exit()
   
   def parse_input_and_query_neptune():
   
   
       parser = ArgumentParser(description=help_msg, formatter_class=RawTextHelpFormatter)
       group_host = parser.add_mutually_exclusive_group()
       group_host.add_argument("-ho", "--host", type=str)
       group_port = parser.add_mutually_exclusive_group()
       group_port.add_argument("-p", "--port", type=int, help="port ex. 8182, default=8182", default=8182)
       group_action = parser.add_mutually_exclusive_group()
       group_action.add_argument("-a", "--action", type=str, help="http action, default = GET", default="GET")
       group_endpoint = parser.add_mutually_exclusive_group()
       group_endpoint.add_argument("-q", "--query_type", type=str, help="query_type, default = status ", default="status")
       group_data = parser.add_mutually_exclusive_group()
       group_data.add_argument("-d", "--data", type=str, help="data required for the http action", default="")
   
       args = parser.parse_args()
       print(args)
   
       # Read command line parameters
       host = args.host
       port = args.port
       method = args.action
       query_type = args.query_type
       query = args.data
   
       if (access_key == ''):
           print('!!! ERROR: Your AWS_ACCESS_KEY_ID environment variable is undefined.')
           exit_and_print_help()
   
       if (secret_key == ''):
           print('!!! ERROR: Your AWS_SECRET_ACCESS_KEY environment variable is undefined.')
           exit_and_print_help()
   
       if (region == ''):
           print('!!! ERROR: Your SERVICE_REGION environment variable is undefined.')
           exit_and_print_help()
   
       if host is None:
           print('!!! ERROR: Neptune DNS is missing')
           exit_and_print_help()
   
       host = host + ":" + str(port)
       make_signed_request(host, method, query_type, query)
   
   
   if __name__ == "__main__":
       parse_input_and_query_neptune()
   ```

1. In un terminale, individua la posizione del file `neptunesigv4.py`.

1. Inserisci i seguenti comandi, sostituendo la chiave di accesso, la chiave segreta e la regione con i valori corretti.

   ```
   export AWS_ACCESS_KEY_ID=MY_ACCESS_KEY_ID
   export AWS_SECRET_ACCESS_KEY=MY_SECRET_ACCESS_KEY
   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
   ```

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

   ```
   export AWS_SESSION_TOKEN=MY_AWS_SESSION_TOKEN
   ```
**Nota**  
Se utilizzi credenziali temporanee, queste 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 delle credenziali di sicurezza temporanee per richiedere l'accesso alle risorse AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html).

1. Inserisci uno dei seguenti comandi per inviare una richiesta firmata all'istanza database Neptune. Questi esempi utilizzano Python versione 3.6.

   **Stato endpoint**

   ```
   python3.6 neptunesigv4.py -ho your-neptune-endpoint -p 8182 -a GET -q status
   ```

   **Gremlin**

   ```
   python3.6 neptunesigv4.py -ho your-neptune-endpoint -p 8182 -a GET -q gremlin -d "g.V().count()"
   
   python3.6 neptunesigv4.py -ho your-neptune-endpoint -p 8182 -a POST -q gremlin -d "g.V().count()"
   ```

   **Stato Gremlin**

   ```
   python3.6 neptunesigv4.py -ho your-neptune-endpoint -p 8182 -a GET -q gremlin/status
   ```

   **SPARQL**

   ```
   python3.6 neptunesigv4.py -ho your-neptune-endpoint -p 8182 -a GET -q sparql -d "SELECT ?s WHERE { ?s ?p ?o }"
   ```

   **SPARQL UPDATE**

   ```
   python3.6 neptunesigv4.py -ho your-neptune-endpoint -p 8182 -a POST -q sparqlupdate -d "INSERT DATA { <https://s> <https://p> <https://o> }"
   ```

   **Stato SPARQL**

   ```
   python3.6 neptunesigv4.py -ho your-neptune-endpoint -p 8182 -a GET -q sparql/status
   ```

   **openCypher**

   ```
   python3.6 neptunesigv4.py -ho your-neptune-endpoint -p 8182 -a GET -q openCypher -d "MATCH (n1) RETURN n1 LIMIT 1;"
   
   python3.6 neptunesigv4.py -ho your-neptune-endpoint -p 8182 -a POST -q openCypher -d "MATCH (n1) RETURN n1 LIMIT 1;"
   ```

   **Stato openCypher**

   ```
   python3.6 neptunesigv4.py -ho your-neptune-endpoint -p 8182 -a GET -q openCypher/status
   ```

   **Loader**

   ```
   python3.6 neptunesigv4.py -ho your-neptune-endpoint -p 8182 -a GET -q loader -d '{"loadId": "68b28dcc-8e15-02b1-133d-9bd0557607e6"}'
   
   python3.6 neptunesigv4.py -ho your-neptune-endpoint -p 8182 -a GET -q loader -d '{}'
   
   python3.6 neptunesigv4.py -ho your-neptune-endpoint -p 8182 -a POST -q loader -d '{"source": "source", "format" : "csv", "failOnError": "fail_on_error", "iamRoleArn": "iam_role_arn", "region": "region"}'
   ```

1. La sintassi per eseguire lo script Python è la seguente:

   ```
   python3.6 neptunesigv4.py -ho your-neptune-endpoint -p port -a GET|POST -q gremlin|sparql|sparqlupdate|loader|status -d "string0data"
   ```

   SPARQL UPDATE richiede `POST`.

# Connessione ai database Amazon Neptune utilizzando l'autenticazione IAM con Gremlin Python
<a name="gremlin-python-iam-auth"></a>

## Panoramica di
<a name="gremlin-python-iam-auth-overview"></a>

 Questa guida dimostra come connettersi a un database Amazon Neptune con l'autenticazione IAM abilitata utilizzando il driver Gremlin Python, con l'autenticazione Signature Version 4 e l'SDK AWS for Python (Boto3). 

## Crea una connessione di base
<a name="gremlin-python-iam-auth-basic-connection"></a>

 Usa il seguente esempio di codice come guida su come stabilire una connessione di base con l'autenticazione IAM utilizzando il driver Gremlin Python. 

```
from boto3 import Session
from botocore.auth import SigV4Auth
from botocore.awsrequest import AWSRequest

from gremlin_python.process.anonymous_traversal import traversal
from gremlin_python.driver.driver_remote_connection import DriverRemoteConnection

def main():
    endpoint = 'your.cluster.endpoint.neptune.amazonaws.com'
    conn_string = 'wss://' + endpoint + ':8182/gremlin'
    default_region = 'us-east-1'
    service = 'neptune-db'

    credentials = Session().get_credentials()
    if credentials is None:
        raise Exception("No AWS credentials found")
    creds = credentials.get_frozen_credentials()
    # region set inside config profile or via AWS_DEFAULT_REGION environment variable will be loaded
    region = Session().region_name if Session().region_name else default_region

    request = AWSRequest(method='GET', url=conn_string, data=None)
    SigV4Auth(creds, service, region).add_auth(request)

    rc = DriverRemoteConnection(conn_string, 'g', headers=request.headers.items())
    g = traversal().with_remote(rc)

    # simple query to verify connection
    count = g.V().count().next()
    print('Vertex count: ' + str(count))

    # cleanup
    rc.close()

if __name__ == "__main__":
    main()
```

# Connessione ai database Amazon Neptune utilizzando l'autenticazione IAM con Gremlin JavaScript
<a name="gremlin-javascript-iam-auth"></a>

## Panoramica di
<a name="gremlin-javascript-iam-auth-overview"></a>

 Questa guida dimostra come connettersi a un database Amazon Neptune con l'autenticazione IAM abilitata utilizzando il driver Gremlin, con l'autenticazione Signature Version 4 e JavaScript l'SDK per Javascript v3. AWS 

## Prerequisiti
<a name="gremlin-javascript-iam-auth-prereqs"></a>
+  Un cluster Amazon Neptune con autenticazione IAM abilitata. 
+  Node 13 o successivo (fai riferimento alle versioni minime per Gremlin JavaScript e [AWS SDK](https://docs.aws.amazon.com//AWSJavaScriptSDK/v3/latest/introduction/#release-cadence) per Javascript v3). 
+  AWS credenziali configurate (tramite variabili di ambiente, file di credenziali condivise o ruolo IAM). 

## Crea una connessione di base
<a name="gremlin-javascript-iam-auth-basic-connection"></a>

 Utilizza il seguente esempio di codice come guida su come stabilire una connessione di base con l'autenticazione IAM utilizzando il driver Gremlin JavaScript . 

```
const { fromNodeProviderChain } = require('@aws-sdk/credential-providers');
const { getUrlAndHeaders } = require('gremlin-aws-sigv4/lib/utils');
const { loadConfig } = require("@smithy/node-config-provider");
const { NODE_REGION_CONFIG_FILE_OPTIONS, NODE_REGION_CONFIG_OPTIONS } = require("@smithy/config-resolver");

const gremlin = require('gremlin');
const DriverRemoteConnection = gremlin.driver.DriverRemoteConnection;
const traversal = gremlin.process.AnonymousTraversalSource.traversal;

const DEFAULT_REGION = 'us-east-1';

const getCredentials = async () => {
    try {
        // Loads the default credential provider chain
        return await fromNodeProviderChain();
    } catch (e) {
        console.error("No credentials found", e);
        throw e;
    }
};

(main = async () => {
    console.log('Starting');

    const credentials = await getCredentials();
    try {
        // region set inside config profile or via AWS_REGION environment variable will be loaded
        credentials['region'] = await loadConfig(NODE_REGION_CONFIG_OPTIONS, NODE_REGION_CONFIG_FILE_OPTIONS)();
    } catch (e) {
        credentials['region'] = DEFAULT_REGION
    }

    const connInfo = getUrlAndHeaders(
        'you.cluster.endpoint.neptune.amazonaws.com',
        '8182',
        credentials,
        '/gremlin',
        'wss');

    const dc = new DriverRemoteConnection(connInfo['url'], {headers: connInfo['headers']});
    const g = traversal().withRemote(dc);

    const query = g.V().limit(5).count();
    const count = await query.next();
    console.log("Vertex count: " + count.value);

    await dc.close();
})

main();
```

# Connessione ai database Amazon Neptune utilizzando l'autenticazione IAM con Gremlin Go
<a name="gremlin-go-iam-auth"></a>

## Panoramica di
<a name="gremlin-go-iam-auth-overview"></a>

 Questa guida dimostra come connettersi a un database Amazon Neptune con l'autenticazione IAM abilitata utilizzando il driver Gremlin Go, con l'autenticazione Signature Version 4 e l' AWS SDK per GO v2. 

## Prerequisiti
<a name="gremlin-go-iam-auth-prereqs"></a>
+  Un cluster Amazon Neptune con autenticazione IAM abilitata. 
+  Go 1.22 o successivo (fai riferimento alle versioni minime supportate per [Gremlin Go e SDK for AWS Go](https://pkg.go.dev/github.com/apache/tinkerpop/gremlin-go/v3/driver) [v2](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2)). 
+  AWS credenziali configurate (tramite variabili di ambiente, file di credenziali condivise o ruolo IAM) 

## Crea una connessione di base
<a name="gremlin-go-iam-auth-basic-connection"></a>

 Utilizza il seguente esempio di codice come guida su come stabilire una connessione di base con l'autenticazione IAM utilizzando il driver Gremlin Go. 

```
package main

import (
	"context"
	"fmt"
	"github.com/aws/aws-sdk-go-v2/config"
	"net/http"
	"strings"
	"time"

	gremlingo "github.com/apache/tinkerpop/gremlin-go/v3/driver"
	v4 "github.com/aws/aws-sdk-go-v2/aws/signer/v4"
)

const emptyStringSHA256 = `e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855`

func main() {
	neptuneEndpoint := "you.cluster.endpoint.neptune.amazonaws.com"
	connString := "wss://" + neptuneEndpoint + ":8182/gremlin"
	service := "neptune-db"
	defaultRegion := "us-east-1"

	// Create request to sign
	req, err := http.NewRequest(http.MethodGet, connString, strings.NewReader(""))
	if err != nil {
		fmt.Println(err)
		return
	}

	// Loads the default config with default credentials provider
	// See https://github.com/aws/aws-sdk-go-v2 for additional docs on API usage
	cfg, err := config.LoadDefaultConfig(context.TODO())
	if err != nil {
		fmt.Println(err)
		return
	}
	// Retrieve loaded credentials 
	cr, err := cfg.Credentials.Retrieve(context.TODO())
	if err != nil {
		fmt.Println(err)
		return
	}

	region := defaultRegion
	if cfg.Region != "" {
		// region set inside config profile, or via AWS_REGION or AWS_DEFAULT_REGION environment variable will be loaded
		region = cfg.Region
	}

	signer := v4.NewSigner()
	// Sign request
	err = signer.SignHTTP(context.TODO(), cr, req, emptyStringSHA256, service, "us-east-2", time.Now())
	if err != nil {
		fmt.Println(err)
		return
	}

	// Pass the signed request header into gremlingo.HeaderAuthInfo()
	driverRemoteConnection, err := gremlingo.NewDriverRemoteConnection(connString,
		func(settings *gremlingo.DriverRemoteConnectionSettings) {
			settings.TraversalSource = "g"
			settings.AuthInfo = gremlingo.HeaderAuthInfo(req.Header)
			// settings.TlsConfig = &tls.Config{InsecureSkipVerify: true} // Use this only if you're on a Mac running Go 1.18+ doing local dev. See https://github.com/golang/go/issues/51991
		})
	if err != nil {
		fmt.Println(err)
		return
	}

	// Cleanup
	defer driverRemoteConnection.Close()

	// Creating graph traversal
	g := gremlingo.Traversal_().WithRemote(driverRemoteConnection)

	// Query execution
	count, err := g.V().Limit(5).Count().Next()
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println("Vertex count:", *count)
}
```

## Aggiornamento dinamico delle credenziali Gremlin Go
<a name="gremlin-go-iam-auth-go-credential-refresh"></a>

 Gremlin Go consente l'iniezione di un puntatore di funzione per recuperare le credenziali e generare l'intestazione, il DynamicAuth che impedisce la scadenza dell'intestazione in caso di connessioni di lunga durata. 

```
package main

import (
	"context"
	"crypto/tls"
	"fmt"
	"github.com/aws/aws-sdk-go-v2/config"
	"net/http"
	"strings"
	"time"

	gremlingo "github.com/apache/tinkerpop/gremlin-go/v3/driver"
	v4 "github.com/aws/aws-sdk-go-v2/aws/signer/v4"
)

const emptyStringSHA256 = `e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855`

func main() {
	neptuneEndpoint := "you.cluster.endpoint.neptune.amazonaws.com"
	connString := "wss://" + neptuneEndpoint + ":8182/gremlin"
	service := "neptune-db"
	defaultRegion := "us-east-1"

	//Create the request to sign
	req, err := http.NewRequest(http.MethodGet, connString, strings.NewReader(""))
	if err != nil {
		fmt.Println(err)
		return
	}

	// Loads the default config with default credentials provider
	// See https://github.com/aws/aws-sdk-go-v2 for additional docs on API usage
	cfg, err := config.LoadDefaultConfig(context.TODO())
	if err != nil {
		fmt.Println(err)
		return
	}

	region := defaultRegion
	if cfg.Region != "" {
		// region set inside config profile, or via AWS_REGION or AWS_DEFAULT_REGION environment variable will be loaded
		region = cfg.Region
	}
	
	signer := v4.NewSigner()

	// This is the function that will be used for dynamic refreseh of credentials and signed headers
	gen := func() gremlingo.AuthInfoProvider {
		// Retrieve loaded credentials 
		cr, err := cfg.Credentials.Retrieve(context.TODO())
		fmt.Println("AWS Credentials: ", cr)
		if err != nil {
			fmt.Println(err)
			return
		}
		// Sign request
		err = signer.SignHTTP(context.TODO(), cr, req, emptyStringSHA256, service, region, time.Now())
		if err != nil {
			fmt.Println(err)
			return
		}
		fmt.Println(req.Header)
		return gremlingo.HeaderAuthInfo(req.Header)
	}

	// Pass the function into gremlingo.NewDynamicAuth(), which will generate the AuthInfoProvider to pass into gremlingo.DriverRemoteConnectionSettings below
	auth := gremlingo.NewDynamicAuth(gen)

	driverRemoteConnection, err := gremlingo.NewDriverRemoteConnection(connString,
		func(settings *gremlingo.DriverRemoteConnectionSettings) {
			settings.TraversalSource = "g"
			settings.AuthInfo = auth
			// settings.TlsConfig = &tls.Config{InsecureSkipVerify: true} // Use this only if you're on a Mac running Go 1.18+ doing local dev. See https://github.com/golang/go/issues/51991

		})
	if err != nil {
		fmt.Println(err)
		return
	}

	// Cleanup
	defer driverRemoteConnection.Close()

	// Creating graph traversal
	g := gremlingo.Traversal_().WithRemote(driverRemoteConnection)

	// Query execution
	count, err := g.V().Limit(5).Count().Next()
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println("Vertex count:", *count)
}
```

# Connessione ai database Amazon Neptune utilizzando l'autenticazione IAM con Gremlin.NET
<a name="gremlin-dotnet-iam-auth"></a>

## Panoramica di
<a name="gremlin-dotnet-iam-auth-overview"></a>

 Questa guida dimostra come connettersi a un database Amazon Neptune con l'autenticazione IAM abilitata utilizzando il driver Gremlin .NET, con l'autenticazione Signature Version 4 e l'SDK AWS for .NET v3. 

## Crea una connessione di base
<a name="gremlin-dotnet-iam-auth-basic-connection"></a>

 [Per connetterti con Gremlin .NET, usa il file `SigV4RequestSigner` sorgente dalla libreria https://github.com/aws/ amazon-neptune-gremlin-dotnet personalizzata -sigv4.](https://github.com/aws/amazon-neptune-gremlin-dotnet-sigv4) [Un esempio di configurazione del progetto si trova in -sigv4/ ed è riportato di seguito. https://github.com/aws/ amazon-neptune-gremlin-dotnet tree/main/example](https://github.com/aws/amazon-neptune-gremlin-dotnet-sigv4/tree/main/example) 

File di progetto:

```
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp8.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Compile Include="../src/SigV4RequestSigner.cs" Link="SigV4RequestSigner.cs" />
    <PackageReference Include="AWSSDK.Core" Version="3.7.402.24" />
    <PackageReference Include="gremlin.net" Version="3.7.3" />
  </ItemGroup>

</Project>
```

Programma di esempio:

```
using System;
using System.Collections.Generic;
using System.Net.WebSockets;
using System.Linq;
using System.Net.Http;
using System.Security.Cryptography;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Web;
using Gremlin.Net;
using Gremlin.Net.Driver;
using Gremlin.Net.Driver.Remote;
using Gremlin.Net.Process;
using Gremlin.Net.Process.Traversal;
using Gremlin.Net.Structure;
using static Gremlin.Net.Process.Traversal.AnonymousTraversalSource;
using static Gremlin.Net.Process.Traversal.__;
using static Gremlin.Net.Process.Traversal.P;
using static Gremlin.Net.Process.Traversal.Order;
using static Gremlin.Net.Process.Traversal.Operator;
using static Gremlin.Net.Process.Traversal.Pop;
using static Gremlin.Net.Process.Traversal.Scope;
using static Gremlin.Net.Process.Traversal.TextP;
using static Gremlin.Net.Process.Traversal.Column;
using static Gremlin.Net.Process.Traversal.Direction;
using static Gremlin.Net.Process.Traversal.T;
using Amazon.Runtime.CredentialManagement;
using Amazon.Runtime;
using Amazon;
using Amazon.Util;
using Amazon.Neptune.Gremlin.Driver;

namespace NeptuneExample
{
    class Program
    {
        static void Main(string[] args)
        {
            /*
                Include your Neptune endpoint and port below.
            */
            var neptune_host = "neptune-endpoint"; // ex: mycluster.cluster.us-east-1.neptune.amazonaws.com
            var neptune_port = 8182;

            var gremlinServer = new GremlinServer(neptune_host, neptune_port);
            var gremlinClient = new GremlinClient(gremlinServer, webSocketConfiguration: new SigV4RequestSigner().signRequest(neptune_host, neptune_port));
            var remoteConnection = new DriverRemoteConnection(gremlinClient);
            var g = Traversal().WithRemote(remoteConnection);

            /* Example code to pull the first 5 vertices in a graph. */
            Console.WriteLine("Get List of Node Labels:");
            Int32 limitValue = 5;
            var output = g.V().Limit<Vertex>(limitValue).ToList();
            foreach(var item in output) {
                Console.WriteLine(item);
            }
        }
    }
}
```

# Gestione dell'accesso ai database Amazon Neptune utilizzando le policy IAM
<a name="security-iam-access-manage"></a>

Le [policy IAM](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html) sono oggetti JSON che definiscono le autorizzazioni per utilizzare azioni e risorse.

Puoi controllare l'accesso AWS creando policy e collegandole a identità o risorse. AWS Una policy definisce le autorizzazioni quando è associata a un'identità o a una risorsa. AWS valuta queste politiche quando un preside effettua una richiesta. La maggior parte delle politiche viene archiviata AWS come documenti JSON. Per maggiori informazioni sui documenti delle policy JSON, consulta [Panoramica delle policy JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json) nella *Guida per l’utente IAM*.

Utilizzando le policy, gli amministratori specificano chi ha accesso a cosa definendo quale **principale** può eseguire **azioni** su quali **risorse** e in quali **condizioni**.

Per impostazione predefinita, utenti e ruoli non dispongono di autorizzazioni. Un amministratore IAM crea le policy IAM e le aggiunge ai ruoli, che gli utenti possono quindi assumere. Le policy IAM definiscono le autorizzazioni indipendentemente dal metodo utilizzato per eseguirle.

## Policy basate sulle identità
<a name="security_iam_access-manage-id-based-policies"></a>

Le policy basate su identità sono documenti di policy di autorizzazione JSON che è possibile collegare a un’identità (utente, gruppo o ruolo). Tali policy controllano le operazioni autorizzate per l’identità, nonché le risorse e le condizioni in cui possono essere eseguite. Per informazioni su come creare una policy basata su identità, consultare [Definizione di autorizzazioni personalizzate IAM con policy gestite dal cliente](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) nella *Guida per l’utente IAM*.

Le policy basate su identità possono essere *policy in linea* (con embedding direttamente in una singola identità) o *policy gestite* (policy autonome collegate a più identità). Per informazioni su come scegliere tra una policy gestita o una policy inline, consulta [Scegliere tra policy gestite e policy in linea](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-choosing-managed-or-inline.html) nella *Guida per l’utente di IAM*.

## Utilizzo delle politiche di controllo dei servizi (SCP) con le organizzazioni AWS
<a name="security_iam_access-manage-scp"></a>

Le politiche di controllo del servizio (SCPs) sono politiche JSON che specificano le autorizzazioni massime per un'organizzazione o un'unità organizzativa (OU) in. [AWS Organizations](https://aws.amazon.com/organizations/) AWS Organizations è un servizio per il raggruppamento e la gestione centralizzata di più AWS account di proprietà dell'azienda. Se abiliti tutte le funzionalità di un'organizzazione, puoi applicare le politiche di controllo del servizio (SCPs) a uno o tutti i tuoi account. L'SCP limita le autorizzazioni per le entità negli account dei membri, incluso ogni AWS utente root dell'account. Per ulteriori informazioni su Organizations and SCPs, consulta [How SCPs work](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_about-scps.html) nella AWS Organizations User Guide.

I clienti che implementano Amazon Neptune AWS in un account AWS all'interno di un'organizzazione SCPs possono sfruttare per controllare quali account possono utilizzare Neptune. Per garantire l'accesso a Neptune all'interno di un account membro, assicurati di:
+  Consenti l'accesso a `rds:*` e `neptune-db:*` per le operazioni del database Neptune. Consulta [Perché sono necessarie le autorizzazioni e le risorse di Amazon RDS per utilizzare il database Neptune](https://aws.amazon.com/neptune/faqs/)? per informazioni dettagliate sul motivo per cui sono necessarie le autorizzazioni Amazon RDS per il database Neptune. 
+  Consenti l'accesso alle `neptune-graph:*` operazioni di Neptune Analytics. 

## Autorizzazioni necessarie per utilizzare la console Amazon Neptune
<a name="security-iam-access-manage-console"></a>

Affinché un utente possa utilizzare la console Amazon Neptune, è necessario che disponga di un set minimo di autorizzazioni. Queste autorizzazioni permettono all'utente di descrivere le risorse Neptune per il proprio account AWS e di fornire altre informazioni correlate, tra cui informazioni sulla sicurezza e sulla rete di Amazon EC2.

Se decidi di creare una policy IAM più restrittiva delle autorizzazioni minime richieste, la console non funzionerà come previsto per gli utenti con tale policy IAM. Per garantire che gli utenti possano continuare a utilizzare la console Neptune, collega anche la policy gestita `NeptuneReadOnlyAccess` all'utente, come descritto in [Utilizzo di policy AWS gestite per accedere ai database Amazon Neptune](security-iam-access-managed-policies.md).

Non è necessario consentire autorizzazioni minime per la console per gli utenti che effettuano chiamate solo verso l' AWS CLI API Amazon Neptune.

## Collegamento di una policy IAM a un utente IAM
<a name="iam-auth-policy-attaching"></a>

Per applicare una policy gestita o personalizzata, collegarla a un utente IAM. Per un tutorial su questo argomento, consulta [ Creare e collegare la tua prima policy gestita dal cliente](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html) nella *Guida per l'utente IAM*.

Durante il tutorial, puoi utilizzare uno degli esempi di policy indicati in questa sezione come punto di partenza e personalizzarli in base alle tue esigenze. Al termine del tutorial, avrai un utente IAM con una policy collegata che potrà utilizzare l'operazione `neptune-db:*`.

**Importante**  
Le modifiche apportate a una policy IAM richiedono fino a 10 minuti per essere applicate alle risorse Neptune specificate.
Le policy IAM applicate a un cluster database Neptune si applicano a tutte le istanze del cluster.

## Utilizzo di diversi tipi di policy IAM per controllare l'accesso a Neptune
<a name="iam-auth-policy"></a>

Per fornire l'accesso alle azioni amministrative di Neptune o ai dati in un cluster database Neptune, collegare le policy a un utente o un ruolo IAM. Per informazioni sul collegamento di una policy IAM a un utente, consulta [Collegamento di una policy IAM a un utente IAM](#iam-auth-policy-attaching). Per informazioni su come collegare una policy a un ruolo, consulta [Aggiunta e rimozione delle policy IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) nella *Guida per l'utente di IAM*.

Per l'accesso generale a Neptune, puoi utilizzare una delle [policy gestite](security-iam-access-managed-policies.md) di Neptune. Per un accesso più limitato, puoi creare la tua policy personalizzata utilizzando le [azioni e le [risorse](iam-admin-resources.md) amministrative](neptune-iam-admin-actions.md) supportate da Neptune.

In una policy IAM personalizzata, puoi utilizzare due diversi tipi di dichiarazioni di policy che controllano diverse modalità di accesso a un cluster database Neptune:
+ [Dichiarazioni sui criteri amministrativi](iam-admin-policies.md): le dichiarazioni dei criteri amministrativi forniscono l'accesso alla APIs gestione di [Neptune](api.md) utilizzata per creare, configurare e gestire un cluster DB e le relative istanze.

  Poiché Neptune condivide funzionalità con Amazon RDS, le azioni amministrative, le risorse e le chiavi di condizione nelle policy Neptune utilizzano un prefisso `rds:` per impostazione predefinita.
+ [Dichiarazioni di policy di accesso ai dati](iam-data-access-policies.md): le dichiarazioni di policy di accesso ai dati utilizzano [azioni di accesso ai dati](iam-dp-actions.md), [risorse](iam-data-resources.md) e [chiavi di condizione](iam-data-condition-keys.md#iam-neptune-condition-keys) per controllare l'accesso ai dati contenuti in un cluster database.

  Le azioni di accesso ai dati, le risorse e le chiavi di condizione di Neptune utilizzano un prefisso `neptune-db:`.

## Utilizzo delle chiavi di contesto delle condizioni IAM in Amazon Neptune
<a name="iam-using-condition-keys"></a>

È possibile specificare le condizioni in una dichiarazione di policy IAM che controlla l'accesso a Neptune. La dichiarazione di policy diventa effettiva solo quando le condizioni sono true.

Ad esempio, potresti volere che una dichiarazione di policy diventi effettiva solo dopo una data specifica o che consenta l'accesso solo quando nella richiesta è presente un valore specifico.

Per specificare le condizioni, è possibile utilizzare le chiavi di condizione predefinite nell'elemento [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) di una dichiarazione di policy insieme agli [operatori della policy della condizione IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html) come uguale a o minore di.

Se specifichi più elementi `Condition` in un'istruzione o più chiavi in un singolo elemento `Condition`, questi vengono valutati da AWS utilizzando un'operazione `AND` logica. Se si specificano più valori per una singola chiave di condizione, AWS valuta la condizione utilizzando un'operazione logica. `OR` Tutte le condizioni devono essere soddisfatte prima che le autorizzazioni dell’istruzione vengano concesse.

 È possibile anche utilizzare variabili segnaposto quando specifichi le condizioni. Ad esempio, è possibile autorizzare un utente IAM ad accedere a una risorsa solo se è stata taggata con il relativo nome utente IAM. Per ulteriori informazioni, consulta [Elementi delle policy IAM: variabili e tag](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html) nella *Guida per l'utente di IAM*.

Il tipo di dati di una chiave di condizione determina quali operatori di condizione è possibile utilizzare per confrontare i valori nella richiesta con i valori della dichiarazione di policy. Se si utilizza un operatore di condizione che non è compatibile con tale tipo di dati, la corrispondenza ha sempre esito negativo e la dichiarazione di policy non viene mai applicata.

Neptune supporta diversi set di chiavi di condizione per le dichiarazioni di policy amministrative rispetto alle dichiarazioni di policy di accesso ai dati:
+ [Chiavi di condizione per le dichiarazioni di policy amministrative](iam-admin-condition-keys.md)
+ [Chiavi di condizione per le dichiarazioni di policy di accesso ai dati](iam-data-condition-keys.md#iam-neptune-condition-keys)

## Supporto delle funzionalità delle policy IAM e di controllo degli accessi in Amazon Neptune
<a name="neptune-iam-policy-support"></a>

La tabella seguente mostra le funzionalità IAM supportate da Neptune per le dichiarazioni di policy amministrative e le dichiarazioni di policy di accesso ai dati:


**Funzionalità IAM che è possibile utilizzare con Neptune**  

| Funzionalità IAM | Amministrativa | Accesso ai dati | 
| --- | --- | --- | 
| [Policy basate sull’identità](#security_iam_access-manage-id-based-policies) | Sì  | Sì | 
| [Policy basate su risorse](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html) | No | No | 
| [Operazioni di policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_action.html) | Sì  | Sì | 
| [Risorse relative alle policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_resource.html) | Sì  | Sì | 
| [Chiavi della condizione globale](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) | Sì | (un sottoinsieme) | 
| [Chiavi di condizione basate su tag](iam-admin-condition-keys.md#iam-rds-tag-based-condition-keys) | Sì | No | 
| [Liste di controllo degli accessi () ACLs](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acls.html) | No | No | 
| [Politiche di controllo del servizio (SCPs)](#security_iam_access-manage-scp) | Sì  | Sì | 
| [Ruoli collegati ai servizi](security-iam-service-linked-roles.md) | Sì | No | 

## Limitazioni della policy IAM
<a name="iam-policy-limits"></a>

Le modifiche apportate a una policy IAM richiedono fino a 10 minuti per essere applicate alle risorse Neptune specificate.

Le policy IAM applicate a un cluster database Neptune si applicano a tutte le istanze del cluster.

Neptune attualmente non supporta il controllo degli accessi tra account a livello di piano dati. Il controllo degli accessi tra account è supportato solo in caso di caricamento in blocco e utilizzando il concatenamento dei ruoli. [Per ulteriori informazioni, consulta il tutorial sul caricamento in blocco.](https://docs.aws.amazon.com//neptune/latest/userguide/bulk-load-tutorial-chain-roles.html#bulk-load-tutorial-chain-cross-account)

# Utilizzo di policy AWS gestite per accedere ai database Amazon Neptune
<a name="security-iam-access-managed-policies"></a>

AWS affronta molti casi d'uso comuni fornendo policy IAM autonome create e amministrate da. AWS Le policy gestite concedono le autorizzazioni necessarie per i casi di utilizzo comune in modo da non dover cercare quali sono le autorizzazioni richieste. Per ulteriori informazioni, consulta [Policy gestite da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) nella *Guida per l'utente di IAM*.

Le seguenti policy AWS gestite, che puoi allegare agli utenti del tuo account, sono destinate all'utilizzo della gestione di Amazon APIs Neptune:
+ **[NeptuneReadOnlyAccess](read-only-access-iam-managed-policy.md)**— Garantisce l'accesso in sola lettura a tutte le risorse di Neptune per scopi amministrativi e di accesso ai dati nell'account root. AWS 
+ **[NeptuneFullAccess](full-access-iam-managed-policy.md)**— Garantisce l'accesso completo a tutte le risorse di Neptune per scopi amministrativi e di accesso ai dati nell'account root. AWS Questa opzione è consigliata se è necessario l'accesso completo a Neptune dall'SDK o, ma non per AWS CLI l'accesso. Console di gestione AWS 
+ **[NeptuneConsoleFullAccess](console-full-access-iam-managed-policy.md)**— Concede l'accesso completo nell' AWS account root a tutte le azioni e risorse amministrative di Neptune, ma non a tutte le azioni o risorse di accesso ai dati. Include inoltre autorizzazioni aggiuntive per semplificare l'accesso a Neptune dalla console, comprese autorizzazioni IAM e Amazon EC2 (VPC) limitate.
+ **[NeptuneGraphReadOnlyAccess ](graph-read-only-access-iam-managed-policy.md)**— Fornisce accesso in sola lettura a tutte le risorse di Amazon Neptune Analytics insieme a autorizzazioni di sola lettura per i servizi dipendenti
+ **[AWSServiceRoleForNeptuneGraphPolicy](aws-service-role-for-neptune-graph-policy.md)**— Consente ai grafici di Neptune Analytics di CloudWatch pubblicare metriche e registri operativi e di utilizzo.

Le policy e i ruoli IAM Neptune concedono l'accesso alle risorse Amazon RDS, perché Neptune condivide tecnologia operativa con Amazon RDS per determinate funzionalità di gestione. Ciò include le autorizzazioni API amministrative, motivo per cui le azioni amministrative di Neptune hanno un prefisso `rds:`.

## Aggiornamenti alle politiche gestite da AWS Neptune
<a name="neptune-managed-policy-updates"></a>

La tabella seguente tiene traccia degli aggiornamenti alle policy gestite da Neptune a partire dal momento in cui Neptune ha iniziato a tenere traccia di queste modifiche:


| Policy | Description | Data | 
| --- | --- | --- | 
| AWS politiche gestite per Amazon Neptune: aggiornamento delle politiche esistenti | Le `NeptuneReadOnlyAcess` politiche `NeptuneFullAccess` gestite ora includono `Sid` (statement ID) come identificatore nella dichiarazione politica. | 22/01/2024 | 
| [NeptuneGraphReadOnlyAccess](read-only-access-iam-managed-policy.md)(rilasciato) | Rilasciato per fornire accesso in sola lettura ai grafici e alle risorse di Analisi Neptune. | 29/11/23 | 
| [AWSServiceRoleForNeptuneGraphPolicy](aws-service-role-for-neptune-graph-policy.md)(rilasciato) | Rilasciato per consentire ai grafici di Neptune Analytics di accedere CloudWatch alla pubblicazione di metriche e registri operativi e di utilizzo. Vedi [Utilizzo dei ruoli collegati ai servizi (SLRs) in Neptune Analytics](https://docs.aws.amazon.com/neptune-analytics/latest/userguide/nan-service-linked-roles.html). | 2023-11-29 | 
| [NeptuneConsoleFullAccess](console-full-access-iam-managed-policy.md)(autorizzazioni aggiunte) | Le autorizzazioni aggiunte forniscono l'accesso necessario per interagire con i grafici di Analisi Neptune. | 29/11/2023 | 
| [NeptuneFullAccess](full-access-iam-managed-policy.md)(autorizzazioni aggiunte) | Sono state aggiunte le autorizzazioni di accesso ai dati e le autorizzazioni per il nuovo database globale. APIs | 28/07/2022 | 
| [NeptuneConsoleFullAccess](console-full-access-iam-managed-policy.md)(autorizzazioni aggiunte) | Sono state aggiunte le autorizzazioni per il nuovo database globale. APIs | 21/07/2022 | 
| Neptune ha iniziato a tenere traccia delle modifiche | Neptune ha iniziato a tenere traccia delle modifiche alle AWS sue politiche gestite. | 2022-07-21 | 

# Concessione `NeptuneReadOnlyAccess` ai database Amazon Neptune tramite policy AWS gestite
<a name="read-only-access-iam-managed-policy"></a>

La politica [NeptuneReadOnlyAccess](https://console.aws.amazon.com/iam/home#policies/NeptuneReadOnlyAccess)gestita di seguito garantisce l'accesso in sola lettura a tutte le azioni e le risorse di Neptune per scopi amministrativi e di accesso ai dati.

**Nota**  
Questa policy è stata aggiornata il 21 luglio 2022 per includere le autorizzazioni di accesso ai dati di sola lettura e le autorizzazioni amministrative di sola lettura e per includere le autorizzazioni per le azioni del database globale.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowReadOnlyPermissionsForRDS",
            "Effect": "Allow",
            "Action": [
                "rds:DescribeAccountAttributes",
                "rds:DescribeCertificates",
                "rds:DescribeDBClusterParameterGroups",
                "rds:DescribeDBClusterParameters",
                "rds:DescribeDBClusterSnapshotAttributes",
                "rds:DescribeDBClusterSnapshots",
                "rds:DescribeDBClusters",
                "rds:DescribeDBEngineVersions",
                "rds:DescribeDBInstances",
                "rds:DescribeDBLogFiles",
                "rds:DescribeDBParameterGroups",
                "rds:DescribeDBParameters",
                "rds:DescribeDBSubnetGroups",
                "rds:DescribeEventCategories",
                "rds:DescribeEventSubscriptions",
                "rds:DescribeEvents",
                "rds:DescribeGlobalClusters",
                "rds:DescribeOrderableDBInstanceOptions",
                "rds:DescribePendingMaintenanceActions",
                "rds:DownloadDBLogFilePortion",
                "rds:ListTagsForResource"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowReadOnlyPermissionsForCloudwatch",
            "Effect": "Allow",
            "Action": [
                "cloudwatch:GetMetricStatistics",
                "cloudwatch:ListMetrics"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowReadOnlyPermissionsForEC2",
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeAccountAttributes",
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeInternetGateways",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeVpcAttribute",
                "ec2:DescribeVpcs"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowReadOnlyPermissionsForKMS",
            "Effect": "Allow",
            "Action": [
                "kms:ListKeys",
                "kms:ListRetirableGrants",
                "kms:ListAliases",
                "kms:ListKeyPolicies"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowReadOnlyPermissionsForLogs",
            "Effect": "Allow",
            "Action": [
                "logs:DescribeLogStreams",
                "logs:GetLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:*:*:log-group:/aws/rds/*:log-stream:*",
                "arn:aws:logs:*:*:log-group:/aws/neptune/*:log-stream:*"
            ]
        },
        {
            "Sid": "AllowReadOnlyPermissionsForNeptuneDB",
            "Effect": "Allow",
            "Action": [
                "neptune-db:Read*",
                "neptune-db:Get*",
                "neptune-db:List*"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

# Concessione `NeptuneFullAccess` ai database Amazon Neptune tramite policy AWS gestite
<a name="full-access-iam-managed-policy"></a>

La politica [NeptuneFullAccess](https://console.aws.amazon.com/iam/home#policies/NeptuneFullAccess)gestita di seguito garantisce l'accesso completo a tutte le azioni e le risorse di Neptune per scopi amministrativi e di accesso ai dati. È consigliato se è necessario l'accesso completo da AWS CLI o da un SDK, ma non da. Console di gestione AWS

**Nota**  
Questa policy è stata aggiornata il 21 luglio 2022 per includere le autorizzazioni di accesso ai dati complete e le autorizzazioni amministrative complete e per includere le autorizzazioni per le azioni del database globale.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowNeptuneCreate",
            "Effect": "Allow",
            "Action": [
                "rds:CreateDBCluster",
                "rds:CreateDBInstance"
            ],
            "Resource": [
                "arn:aws:rds:*:*:*"
            ],
            "Condition": {
                "StringEquals": {
                    "rds:DatabaseEngine": [
                        "graphdb",
                        "neptune"
                    ]
                }
            }
        },
        {
            "Sid": "AllowManagementPermissionsForRDS",
            "Effect": "Allow",
            "Action": [
                "rds:AddRoleToDBCluster",
                "rds:AddSourceIdentifierToSubscription",
                "rds:AddTagsToResource",
                "rds:ApplyPendingMaintenanceAction",
                "rds:CopyDBClusterParameterGroup",
                "rds:CopyDBClusterSnapshot",
                "rds:CopyDBParameterGroup",
                "rds:CreateDBClusterEndpoint",
                "rds:CreateDBClusterParameterGroup",
                "rds:CreateDBClusterSnapshot",
                "rds:CreateDBParameterGroup",
                "rds:CreateDBSubnetGroup",
                "rds:CreateEventSubscription",
                "rds:CreateGlobalCluster",
                "rds:DeleteDBCluster",
                "rds:DeleteDBClusterEndpoint",
                "rds:DeleteDBClusterParameterGroup",
                "rds:DeleteDBClusterSnapshot",
                "rds:DeleteDBInstance",
                "rds:DeleteDBParameterGroup",
                "rds:DeleteDBSubnetGroup",
                "rds:DeleteEventSubscription",
                "rds:DeleteGlobalCluster",
                "rds:DescribeDBClusterEndpoints",
                "rds:DescribeAccountAttributes",
                "rds:DescribeCertificates",
                "rds:DescribeDBClusterParameterGroups",
                "rds:DescribeDBClusterParameters",
                "rds:DescribeDBClusterSnapshotAttributes",
                "rds:DescribeDBClusterSnapshots",
                "rds:DescribeDBClusters",
                "rds:DescribeDBEngineVersions",
                "rds:DescribeDBInstances",
                "rds:DescribeDBLogFiles",
                "rds:DescribeDBParameterGroups",
                "rds:DescribeDBParameters",
                "rds:DescribeDBSecurityGroups",
                "rds:DescribeDBSubnetGroups",
                "rds:DescribeEngineDefaultClusterParameters",
                "rds:DescribeEngineDefaultParameters",
                "rds:DescribeEventCategories",
                "rds:DescribeEventSubscriptions",
                "rds:DescribeEvents",
                "rds:DescribeGlobalClusters",
                "rds:DescribeOptionGroups",
                "rds:DescribeOrderableDBInstanceOptions",
                "rds:DescribePendingMaintenanceActions",
                "rds:DescribeValidDBInstanceModifications",
                "rds:DownloadDBLogFilePortion",
                "rds:FailoverDBCluster",
                "rds:FailoverGlobalCluster",
                "rds:ListTagsForResource",
                "rds:ModifyDBCluster",
                "rds:ModifyDBClusterEndpoint",
                "rds:ModifyDBClusterParameterGroup",
                "rds:ModifyDBClusterSnapshotAttribute",
                "rds:ModifyDBInstance",
                "rds:ModifyDBParameterGroup",
                "rds:ModifyDBSubnetGroup",
                "rds:ModifyEventSubscription",
                "rds:ModifyGlobalCluster",
                "rds:PromoteReadReplicaDBCluster",
                "rds:RebootDBInstance",
                "rds:RemoveFromGlobalCluster",
                "rds:RemoveRoleFromDBCluster",
                "rds:RemoveSourceIdentifierFromSubscription",
                "rds:RemoveTagsFromResource",
                "rds:ResetDBClusterParameterGroup",
                "rds:ResetDBParameterGroup",
                "rds:RestoreDBClusterFromSnapshot",
                "rds:RestoreDBClusterToPointInTime",
                "rds:StartDBCluster",
                "rds:StopDBCluster"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "AllowOtherDepedentPermissions",
            "Effect": "Allow",
            "Action": [
                "cloudwatch:GetMetricStatistics",
                "cloudwatch:ListMetrics",
                "ec2:DescribeAccountAttributes",
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeVpcAttribute",
                "ec2:DescribeVpcs",
                "kms:ListAliases",
                "kms:ListKeyPolicies",
                "kms:ListKeys",
                "kms:ListRetirableGrants",
                "logs:DescribeLogStreams",
                "logs:GetLogEvents",
                "sns:ListSubscriptions",
                "sns:ListTopics",
                "sns:Publish"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "AllowPassRoleForNeptune",
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:passedToService": "rds.amazonaws.com"
                }
            }
        },
        {
            "Sid": "AllowCreateSLRForNeptune",
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "arn:aws:iam::*:role/aws-service-role/rds.amazonaws.com/AWSServiceRoleForRDS",
            "Condition": {
                "StringLike": {
                    "iam:AWSServiceName": "rds.amazonaws.com"
                }
            }
        },
        {
            "Sid": "AllowDataAccessForNeptune",
            "Effect": "Allow",
            "Action": [
                "neptune-db:*"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

# Concessione `NeptuneConsoleFullAccess` tramite policy AWS gestita
<a name="console-full-access-iam-managed-policy"></a>

La politica [NeptuneConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/NeptuneConsoleFullAccess)gestita di seguito garantisce l'accesso completo a tutte le azioni e le risorse di Neptune per scopi amministrativi, ma non per scopi di accesso ai dati. Include inoltre autorizzazioni aggiuntive per semplificare l'accesso a Neptune dalla console, comprese autorizzazioni IAM e Amazon EC2 (VPC) limitate.

**Nota**  
Questa policy è stata aggiornata il 29 novembre 2023 per includere le autorizzazioni necessarie per interagire con i grafici di Analisi Neptune.  
È stata aggiornata il 21 luglio 2022 per includere le autorizzazioni per le azioni del database globale.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowNeptuneCreate",
      "Effect": "Allow",
      "Action": [
        "rds:CreateDBCluster",
        "rds:CreateDBInstance"
      ],
      "Resource": [
        "arn:aws:rds:*:*:*"
      ],
      "Condition": {
        "StringEquals": {
          "rds:DatabaseEngine": [
            "graphdb",
            "neptune"
          ]
        }
      }
    },
    {
      "Sid": "AllowManagementPermissionsForRDS",
      "Action": [
        "rds:AddRoleToDBCluster",
        "rds:AddSourceIdentifierToSubscription",
        "rds:AddTagsToResource",
        "rds:ApplyPendingMaintenanceAction",
        "rds:CopyDBClusterParameterGroup",
        "rds:CopyDBClusterSnapshot",
        "rds:CopyDBParameterGroup",
        "rds:CreateDBClusterParameterGroup",
        "rds:CreateDBClusterSnapshot",
        "rds:CreateDBParameterGroup",
        "rds:CreateDBSubnetGroup",
        "rds:CreateEventSubscription",
        "rds:DeleteDBCluster",
        "rds:DeleteDBClusterParameterGroup",
        "rds:DeleteDBClusterSnapshot",
        "rds:DeleteDBInstance",
        "rds:DeleteDBParameterGroup",
        "rds:DeleteDBSubnetGroup",
        "rds:DeleteEventSubscription",
        "rds:DescribeAccountAttributes",
        "rds:DescribeCertificates",
        "rds:DescribeDBClusterParameterGroups",
        "rds:DescribeDBClusterParameters",
        "rds:DescribeDBClusterSnapshotAttributes",
        "rds:DescribeDBClusterSnapshots",
        "rds:DescribeDBClusters",
        "rds:DescribeDBEngineVersions",
        "rds:DescribeDBInstances",
        "rds:DescribeDBLogFiles",
        "rds:DescribeDBParameterGroups",
        "rds:DescribeDBParameters",
        "rds:DescribeDBSecurityGroups",
        "rds:DescribeDBSubnetGroups",
        "rds:DescribeEngineDefaultClusterParameters",
        "rds:DescribeEngineDefaultParameters",
        "rds:DescribeEventCategories",
        "rds:DescribeEventSubscriptions",
        "rds:DescribeEvents",
        "rds:DescribeOptionGroups",
        "rds:DescribeOrderableDBInstanceOptions",
        "rds:DescribePendingMaintenanceActions",
        "rds:DescribeValidDBInstanceModifications",
        "rds:DownloadDBLogFilePortion",
        "rds:FailoverDBCluster",
        "rds:ListTagsForResource",
        "rds:ModifyDBCluster",
        "rds:ModifyDBClusterParameterGroup",
        "rds:ModifyDBClusterSnapshotAttribute",
        "rds:ModifyDBInstance",
        "rds:ModifyDBParameterGroup",
        "rds:ModifyDBSubnetGroup",
        "rds:ModifyEventSubscription",
        "rds:PromoteReadReplicaDBCluster",
        "rds:RebootDBInstance",
        "rds:RemoveRoleFromDBCluster",
        "rds:RemoveSourceIdentifierFromSubscription",
        "rds:RemoveTagsFromResource",
        "rds:ResetDBClusterParameterGroup",
        "rds:ResetDBParameterGroup",
        "rds:RestoreDBClusterFromSnapshot",
        "rds:RestoreDBClusterToPointInTime"
      ],
      "Effect": "Allow",
      "Resource": [
        "*"
      ]
    },
    {
      "Sid": "AllowOtherDepedentPermissions",
      "Action": [
        "cloudwatch:GetMetricStatistics",
        "cloudwatch:ListMetrics",
        "ec2:AllocateAddress",
        "ec2:AssignIpv6Addresses",
        "ec2:AssignPrivateIpAddresses",
        "ec2:AssociateAddress",
        "ec2:AssociateRouteTable",
        "ec2:AssociateSubnetCidrBlock",
        "ec2:AssociateVpcCidrBlock",
        "ec2:AttachInternetGateway",
        "ec2:AttachNetworkInterface",
        "ec2:CreateCustomerGateway",
        "ec2:CreateDefaultSubnet",
        "ec2:CreateDefaultVpc",
        "ec2:CreateInternetGateway",
        "ec2:CreateNatGateway",
        "ec2:CreateNetworkInterface",
        "ec2:CreateRoute",
        "ec2:CreateRouteTable",
        "ec2:CreateSecurityGroup",
        "ec2:CreateSubnet",
        "ec2:CreateVpc",
        "ec2:CreateVpcEndpoint",
        "ec2:CreateVpcEndpoint",
        "ec2:DescribeAccountAttributes",
        "ec2:DescribeAccountAttributes",
        "ec2:DescribeAddresses",
        "ec2:DescribeAvailabilityZones",
        "ec2:DescribeAvailabilityZones",
        "ec2:DescribeCustomerGateways",
        "ec2:DescribeInstances",
        "ec2:DescribeNatGateways",
        "ec2:DescribeNetworkInterfaces",
        "ec2:DescribePrefixLists",
        "ec2:DescribeRouteTables",
        "ec2:DescribeSecurityGroupReferences",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeSubnets",
        "ec2:DescribeSubnets",
        "ec2:DescribeVpcAttribute",
        "ec2:DescribeVpcAttribute",
        "ec2:DescribeVpcEndpoints",
        "ec2:DescribeVpcs",
        "ec2:DescribeVpcs",
        "ec2:ModifyNetworkInterfaceAttribute",
        "ec2:ModifySubnetAttribute",
        "ec2:ModifyVpcAttribute",
        "ec2:ModifyVpcEndpoint",
        "iam:ListRoles",
        "kms:ListAliases",
        "kms:ListKeyPolicies",
        "kms:ListKeys",
        "kms:ListRetirableGrants",
        "logs:DescribeLogStreams",
        "logs:GetLogEvents",
        "sns:ListSubscriptions",
        "sns:ListTopics",
        "sns:Publish"
      ],
      "Effect": "Allow",
      "Resource": [
        "*"
      ]
    },
    {
      "Sid": "AllowPassRoleForNeptune",
      "Action": "iam:PassRole",
      "Effect": "Allow",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "iam:passedToService": "rds.amazonaws.com"
        }
      }
    },
    {
      "Sid": "AllowCreateSLRForNeptune",
      "Action": "iam:CreateServiceLinkedRole",
      "Effect": "Allow",
      "Resource": "arn:aws:iam::*:role/aws-service-role/rds.amazonaws.com/AWSServiceRoleForRDS",
      "Condition": {
        "StringLike": {
          "iam:AWSServiceName": "rds.amazonaws.com"
        }
      }
    },
    {
      "Sid": "AllowManagementPermissionsForNeptuneAnalytics",
      "Effect": "Allow",
      "Action": [
        "neptune-graph:CreateGraph",
        "neptune-graph:DeleteGraph",
        "neptune-graph:GetGraph",
        "neptune-graph:ListGraphs",
        "neptune-graph:UpdateGraph",
        "neptune-graph:ResetGraph",
        "neptune-graph:CreateGraphSnapshot",
        "neptune-graph:DeleteGraphSnapshot",
        "neptune-graph:GetGraphSnapshot",
        "neptune-graph:ListGraphSnapshots",
        "neptune-graph:RestoreGraphFromSnapshot",
        "neptune-graph:CreatePrivateGraphEndpoint",
        "neptune-graph:GetPrivateGraphEndpoint",
        "neptune-graph:ListPrivateGraphEndpoints",
        "neptune-graph:DeletePrivateGraphEndpoint",
        "neptune-graph:CreateGraphUsingImportTask",
        "neptune-graph:GetImportTask",
        "neptune-graph:ListImportTasks",
        "neptune-graph:CancelImportTask"
      ],
      "Resource": [
        "arn:aws:neptune-graph:*:*:*"
      ]
    },
    {
      "Sid": "AllowPassRoleForNeptuneAnalytics",
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "iam:passedToService": "neptune-graph.amazonaws.com"
        }
      }
    },
    {
      "Sid": "AllowCreateSLRForNeptuneAnalytics",
      "Effect": "Allow",
      "Action": "iam:CreateServiceLinkedRole",
      "Resource": "arn:aws:iam::*:role/aws-service-role/neptune-graph.amazonaws.com/AWSServiceRoleForNeptuneGraph",
      "Condition": {
        "StringLike": {
          "iam:AWSServiceName": "neptune-graph.amazonaws.com"
        }
      }
    }
  ]
}
```

------

# Concessione mediante AWS policy `NeptuneGraphReadOnlyAccess` gestite
<a name="graph-read-only-access-iam-managed-policy"></a>

La politica [NeptuneGraphReadOnlyAccess](https://console.aws.amazon.com/iam/home#policies/NeptuneGraphReadOnlyAccess)gestita riportata di seguito fornisce l'accesso in sola lettura a tutte le risorse di Amazon Neptune Analytics insieme alle autorizzazioni di sola lettura per i servizi dipendenti.

Questa policy include le autorizzazioni per eseguire le seguenti operazioni:
+ **Per Amazon EC2**: recupera informazioni su sottoreti VPCs, gruppi di sicurezza e zone di disponibilità.
+ **Per AWS KMS**: recupera informazioni su chiavi e alias KMS.
+ **Per CloudWatch**: recupera informazioni sulle metriche. CloudWatch 
+ **Per CloudWatch i log**: recupera informazioni sui flussi di CloudWatch log e sugli eventi.

**Nota**  
Questa policy è stata rilasciata il 29 novembre 2023.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowReadOnlyPermissionsForNeptuneGraph",
      "Effect": "Allow",
      "Action": [
        "neptune-graph:Get*",
        "neptune-graph:List*",
        "neptune-graph:Read*"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AllowReadOnlyPermissionsForEC2",
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeVpcEndpoints",
        "ec2:DescribeVpcAttribute",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeSubnets",
        "ec2:DescribeVpcs",
        "ec2:DescribeAvailabilityZones"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AllowReadOnlyPermissionsForKMS",
      "Effect": "Allow",
      "Action": [
        "kms:ListKeys",
        "kms:ListAliases"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AllowReadOnlyPermissionsForCloudwatch",
      "Effect": "Allow",
      "Action": [
        "cloudwatch:GetMetricData",
        "cloudwatch:ListMetrics",
        "cloudwatch:GetMetricStatistics"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AllowReadOnlyPermissionsForLogs",
      "Effect": "Allow",
      "Action": [
        "logs:DescribeLogStreams",
        "logs:GetLogEvents"
      ],
      "Resource": [
        "arn:aws:logs:*:*:log-group:/aws/neptune/*:log-stream:*"
      ]
    }
  ]
}
```

------

# Concessione dell'accesso al grafico di Neptune utilizzando `AWSServiceRoleForNeptuneGraphPolicy`
<a name="aws-service-role-for-neptune-graph-policy"></a>

La politica [AWSServiceRoleForNeptuneGraphPolicy](https://console.aws.amazon.com/iam/home#policies/AWSServiceRoleForNeptuneGraphPolicy)gestita riportata di seguito fornisce ai grafici l'accesso alla pubblicazione di metriche e log operativi e CloudWatch di utilizzo. Per informazioni, consulta [nan-service-linked-roles](https://docs.aws.amazon.com/neptune-analytics/latest/userguide/nan-service-linked-roles.html).

**Nota**  
Questa policy è stata rilasciata il 29 novembre 2023.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "GraphMetrics",
      "Effect": "Allow",
      "Action": [
        "cloudwatch:PutMetricData"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "cloudwatch:namespace": [
            "AWS/Neptune",
            "AWS/Usage"
          ]
        }
      }
    },
    {
      "Sid": "GraphLogGroup",
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup"
      ],
      "Resource": [
        "arn:aws:logs:*:*:log-group:/aws/neptune/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "GraphLogEvents",
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogStreams"
      ],
      "Resource": [
        "arn:aws:logs:*:*:log-group:/aws/neptune/*:log-stream:*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    }
  ]
}
```

------



# Personalizzazione dell'accesso alle risorse di Amazon Neptune utilizzando le chiavi contestuali delle condizioni IAM
<a name="iam-condition-keys"></a>

Puoi specificare le condizioni nelle policy IAM che controllano l'accesso alle azioni e alle risorse di gestione di Neptune. La dichiarazione di policy diventa effettiva solo quando le condizioni sono true.

Ad esempio, potresti volere che una dichiarazione di policy diventi effettiva solo dopo una data specifica o che consenta l'accesso solo quando nella richiesta API è presente un valore specifico.

Per specificare le condizioni, è possibile utilizzare le chiavi di condizione predefinite nell'elemento [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) di una dichiarazione di policy insieme agli [operatori della policy della condizione IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html) come uguale a o minore di.

Se specifichi più elementi `Condition` in un'istruzione o più chiavi in un singolo elemento `Condition`, questi vengono valutati da AWS utilizzando un'operazione `AND` logica. Se specifichi più valori per una singola chiave di condizione, AWS valuta la condizione utilizzando un'operazione logica. `OR` Tutte le condizioni devono essere soddisfatte prima che le autorizzazioni dell’istruzione vengano concesse.

 È possibile anche utilizzare variabili segnaposto quando specifichi le condizioni. Ad esempio, è possibile autorizzare un utente IAM ad accedere a una risorsa solo se è stata taggata con il relativo nome utente IAM. Per ulteriori informazioni, consulta [Elementi delle policy IAM: variabili e tag](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html) nella *Guida per l'utente di IAM*.

Il tipo di dati di una chiave di condizione determina quali operatori di condizione è possibile utilizzare per confrontare i valori nella richiesta con i valori della dichiarazione di policy. Se si utilizza un operatore di condizione che non è compatibile con tale tipo di dati, la corrispondenza ha sempre esito negativo e la dichiarazione di policy non viene mai applicata. 

**Chiavi di condizione IAM per le dichiarazioni di policy amministrative di Neptune**
+ [Chiavi di condizione globali](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html): è possibile utilizzare la maggior parte delle chiavi di condizione AWS globali nelle dichiarazioni delle politiche amministrative di Neptune.
+ [Chiavi di condizione specifiche del servizio](iam-admin-condition-keys.md): si tratta di chiavi definite per servizi specifici. AWS Quelle supportate da Neptune per le dichiarazioni di policy amministrative sono elencate in [Chiavi delle condizioni IAM per l'amministrazione di Amazon Neptune](iam-admin-condition-keys.md).

**Chiavi di condizione IAM per le dichiarazioni di policy di accesso ai dati**
+ [Chiavi di condizione globali](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html): il sottoinsieme di queste chiavi supportate da Neptune nelle dichiarazioni di policy di accesso ai dati è elencato in [AWS chiavi di contesto delle condizioni globali supportate da Neptune nelle dichiarazioni sulle politiche di accesso ai dati](iam-data-condition-keys.md#iam-data-global-condition-keys).
+ Le chiavi di condizione specifiche del servizio che Neptune definisce per le dichiarazioni di policy di accesso ai dati sono elencate in [Chiavi di condizione](iam-data-condition-keys.md).

# Creazione di dichiarazioni di policy IAM personalizzate per amministrare Amazon Neptune
<a name="iam-admin-policies"></a>

Le dichiarazioni di policy amministrative consentono di controllare cosa può fare un utente IAM per gestire un database Neptune.

Una dichiarazione di policy amministrativa di Neptune garantisce l'accesso a una o più [azioni amministrative](neptune-iam-admin-actions.md) e [risorse amministrative](iam-admin-resources.md) supportate da Neptune. È inoltre possibile utilizzare le [Chiavi di condizione](iam-admin-condition-keys.md) per rendere più specifiche le autorizzazioni amministrative.

**Nota**  
Poiché Neptune condivide funzionalità con Amazon RDS, le azioni amministrative, le risorse e le chiavi di condizione specifiche del servizio nelle dichiarazioni di policy amministrative utilizzano un prefisso `rds:` per impostazione predefinita.

**Topics**
+ [Azioni IAM per l'amministrazione di Amazon Neptune](neptune-iam-admin-actions.md)
+ [Tipi di risorse IAM per l'amministrazione di Amazon Neptune](iam-admin-resources.md)
+ [Chiavi delle condizioni IAM per l'amministrazione di Amazon Neptune](iam-admin-condition-keys.md)
+ [Creazione di dichiarazioni di policy amministrative IAM per Amazon Neptune](iam-admin-policy-examples.md)

# Azioni IAM per l'amministrazione di Amazon Neptune
<a name="neptune-iam-admin-actions"></a>

È possibile utilizzare le azioni amministrative elencate di seguito nell'`Action`elemento di una dichiarazione di policy IAM per controllare l'accesso alla gestione di [ APIsNeptune](api.md). Quando utilizzi un'operazione in una policy, in genere consenti o rifiuti l'accesso all'operazione API o al comando CLI con lo stesso nome. Tuttavia, in alcuni casi, una singola operazione controlla l'accesso a più di una operazione. In alternativa, alcune operazioni richiedono operazioni differenti.

Il campo `Resource type` nell'elenco seguente indica se ogni azione supporta le autorizzazioni a livello di risorsa. Se questo campo non contiene alcun valore, è necessario specificare tutte le risorse ("\$1") nell'elemento `Resource` della dichiarazione di policy. Se la colonna include un tipo di risorsa, è possibile specificare un ARN della risorsa di quel tipo in una dichiarazione con tale azione. I tipi di risorse amministrative di Neptune sono elencati in [questa pagina](iam-admin-resources.md).

Le risorse necessarie sono indicate nell'elenco sottostante con un asterisco (\$1). Se specifichi un ARN di autorizzazione a livello di risorsa in una dichiarazione utilizzando questa operazione, allora deve essere di questo tipo. Alcune operazioni supportano più tipi di risorse. Se un tipo di risorsa è facoltativo (in altre parole, non è contrassegnato da un asterisco), non è necessario includerlo.

Per ulteriori informazioni sui campi elencati qui, consulta la [tabella delle azioni](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_actions-resources-contextkeys.html#actions_table) nella [Guida per l'utente di IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/).

## rds: AddRoleTo DBCluster
<a name="neptune-iam-admin-actions-AddRoleToDBCluster"></a>

`AddRoleToDBCluster` associa un ruolo IAM a un cluster database Neptune.

*Livello di accesso:* `Write`.

*Azioni dipendenti:* `iam:PassRole`.

*Tipo di risorsa:* [cluster](iam-admin-resources.md#neptune-cluster-resource) (obbligatorio).

## rds: AddSourceIdentifierToSubscription
<a name="neptune-iam-admin-actions-AddSourceIdentifierToSubscription"></a>

`AddSourceIdentifierToSubscription` aggiunge un identificatore di origine a una sottoscrizione alle notifiche di eventi Neptune esistente.

*Livello di accesso:* `Write`.

*Tipo di risorsa:* [es](iam-admin-resources.md#neptune-es-resource) (obbligatorio)

## rds: AddTagsToResource
<a name="neptune-iam-admin-actions-AddTagsToResource"></a>

`AddTagsToResource` associa un ruolo IAM a un cluster database Neptune.

*Livello di accesso:* `Write`.

*Tipi di risorsa:*
+ [db](iam-admin-resources.md#neptune-db-resource)
+ [es](iam-admin-resources.md#neptune-es-resource)
+ [pg](iam-admin-resources.md#neptune-pg-resource)
+ [cluster-snapshot](iam-admin-resources.md#neptune-cluster-snapshot-resource)
+ [subgrp](iam-admin-resources.md#neptune-subgrp-resource)

*Chiavi di condizione:*
+ [leggi:/RequestTag*tag-key*](iam-admin-condition-keys.md#admin-aws_RequestTag)
+ [seghe: TagKeys](iam-admin-condition-keys.md#admin-aws_TagKeys)

## rds: ApplyPendingMaintenanceAction
<a name="neptune-iam-admin-actions-ApplyPendingMaintenanceAction"></a>

`ApplyPendingMaintenanceAction` applica un'azione di manutenzione in sospeso a una risorsa.

*Livello di accesso:* `Write`.

*Tipo di risorsa:* [db](iam-admin-resources.md#neptune-db-resource) (obbligatorio).

## RDS: copia DBCluster ParameterGroup
<a name="neptune-iam-admin-actions-CopyDBClusterParameterGroup"></a>

`Copia DBCluster ParameterGroup` copia il gruppo di parametri del cluster database specificato.

*Livello di accesso:* `Write`.

*Tipo di risorsa:* [cluster-pg](iam-admin-resources.md#neptune-cluster-pg-resource) (obbligatorio).

## RDS: copia istantanea DBCluster
<a name="neptune-iam-admin-actions-CopyDBClusterSnapshot"></a>

`Copia istantanea DBCluster` copia uno snapshot di un cluster database.

*Livello di accesso:* `Write`.

*Tipo di risorsa:* [cluster-snapshot](iam-admin-resources.md#neptune-cluster-snapshot-resource) (obbligatorio).

## RDS: Copy DBParameter Group
<a name="neptune-iam-admin-actions-CopyDBParameterGroup"></a>

`Copia DBParameter gruppo` copia il gruppo di parametri database specificato.

*Livello di accesso:* `Write`.

*Tipo di risorsa:* [pg](iam-admin-resources.md#neptune-pg-resource) (obbligatorio).

## RDS: Crea DBCluster
<a name="neptune-iam-admin-actions-CreateDBCluster"></a>

`Crea DBCluster` crea un nuovo cluster database Neptune.

*Livello di accesso:* `Tagging`.

*Azioni dipendenti:* `iam:PassRole`.

*Tipi di risorsa:*
+ [cluster](iam-admin-resources.md#neptune-cluster-resource) (obbligatorio).
+ [cluster-pg](iam-admin-resources.md#neptune-cluster-pg-resource) (obbligatorio).
+ [subgrp](iam-admin-resources.md#neptune-subgrp-resource) (obbligatorio).

*Chiavi di condizione:*
+ [leggi:/RequestTag*tag-key*](iam-admin-condition-keys.md#admin-aws_RequestTag)
+ [seghe: TagKeys](iam-admin-condition-keys.md#admin-aws_TagKeys)
+ [nettuno-rds\$1 DatabaseEngine](iam-admin-condition-keys.md#admin-rds_DatabaseEngine)

## RDS: crea DBCluster ParameterGroup
<a name="neptune-iam-admin-actions-CreateDBClusterParameterGroup"></a>

`Crea DBCluster ParameterGroup` crea un nuovo gruppo di parametri del cluster database.

*Livello di accesso:* `Tagging`.

*Tipo di risorsa:* [cluster-pg](iam-admin-resources.md#neptune-cluster-pg-resource) (obbligatorio).

*Chiavi di condizione:*
+ [leggi:/RequestTag*tag-key*](iam-admin-condition-keys.md#admin-aws_RequestTag)
+ [seghe: TagKeys](iam-admin-condition-keys.md#admin-aws_TagKeys)

## RDS: crea DBCluster un'istantanea
<a name="neptune-iam-admin-actions-CreateDBClusterSnapshot"></a>

`Crea istantanea DBCluster` crea uno snapshot di un cluster database.

*Livello di accesso:* `Tagging`.

*Tipi di risorsa:*
+ [cluster](iam-admin-resources.md#neptune-cluster-resource) (obbligatorio).
+ [cluster-snapshot](iam-admin-resources.md#neptune-cluster-snapshot-resource) (obbligatorio).

*Chiavi di condizione:*
+ [aws:/RequestTag*tag-key*](iam-admin-condition-keys.md#admin-aws_RequestTag)
+ [seghe: TagKeys](iam-admin-condition-keys.md#admin-aws_TagKeys)

## RDS: crea DBInstance
<a name="neptune-iam-admin-actions-CreateDBInstance"></a>

`Crea DBInstance`: crea una nuova istanza database.

*Livello di accesso:* `Tagging`.

*Azioni dipendenti:* `iam:PassRole`.

*Tipi di risorsa:*
+ [db](iam-admin-resources.md#neptune-db-resource) (obbligatorio).
+ [pg](iam-admin-resources.md#neptune-pg-resource) (obbligatorio).
+ [subgrp](iam-admin-resources.md#neptune-subgrp-resource) (obbligatorio).

*Chiavi di condizione:*
+ [leggi:/RequestTag*tag-key*](iam-admin-condition-keys.md#admin-aws_RequestTag)
+ [seghe: TagKeys](iam-admin-condition-keys.md#admin-aws_TagKeys)

## RDS: Crea gruppo DBParameter
<a name="neptune-iam-admin-actions-CreateDBParameterGroup"></a>

`Crea DBParameter gruppo` crea un nuovo gruppo di parametri database.

*Livello di accesso:* `Tagging`.

*Tipo di risorsa:* [pg](iam-admin-resources.md#neptune-pg-resource) (obbligatorio).

*Chiavi di condizione:*
+ [leggi:/RequestTag*tag-key*](iam-admin-condition-keys.md#admin-aws_RequestTag)
+ [seghe: TagKeys](iam-admin-condition-keys.md#admin-aws_TagKeys)

## RDS: Crea gruppo DBSubnet
<a name="neptune-iam-admin-actions-CreateDBSubnetGroup"></a>

`Crea DBSubnet gruppo` crea un nuovo gruppo di sottoreti del database.

*Livello di accesso:* `Tagging`.

*Tipo di risorsa:* [subgrp](iam-admin-resources.md#neptune-subgrp-resource) (obbligatorio).

*Chiavi di condizione:*
+ [leggi:/RequestTag*tag-key*](iam-admin-condition-keys.md#admin-aws_RequestTag)
+ [seghe: TagKeys](iam-admin-condition-keys.md#admin-aws_TagKeys)

## rds: CreateEventSubscription
<a name="neptune-iam-admin-actions-CreateEventSubscription"></a>

`CreateEventSubscription` crea una sottoscrizione alle notifiche di eventi Neptune.

*Livello di accesso:* `Tagging`.

*Tipo di risorsa:* [es](iam-admin-resources.md#neptune-es-resource) (obbligatorio)

*Chiavi di condizione:*
+ [leggi:/RequestTag*tag-key*](iam-admin-condition-keys.md#admin-aws_RequestTag)
+ [seghe: TagKeys](iam-admin-condition-keys.md#admin-aws_TagKeys)

## RDS: elimina DBCluster
<a name="neptune-iam-admin-actions-DeleteDBCluster"></a>

`Elimina DBCluster` elimina un cluster database Neptune esistente.

*Livello di accesso:* `Write`.

*Tipi di risorsa:*
+ [cluster](iam-admin-resources.md#neptune-cluster-resource) (obbligatorio).
+ [cluster-snapshot](iam-admin-resources.md#neptune-cluster-snapshot-resource) (obbligatorio).

## RDS: elimina DBCluster ParameterGroup
<a name="neptune-iam-admin-actions-DeleteDBClusterParameterGroup"></a>

`Elimina DBCluster ParameterGroup` elimina un gruppo di parametri del cluster database specificato.

*Livello di accesso:* `Write`.

*Tipo di risorsa:* [cluster-pg](iam-admin-resources.md#neptune-cluster-pg-resource) (obbligatorio).

## RDS: elimina istantanea DBCluster
<a name="neptune-iam-admin-actions-DeleteDBClusterSnapshot"></a>

`Elimina istantanea DBCluster` elimina uno snapshot del cluster database.

*Livello di accesso:* `Write`.

*Tipo di risorsa:* [cluster-snapshot](iam-admin-resources.md#neptune-cluster-snapshot-resource) (obbligatorio).

## RDS: elimina DBInstance
<a name="neptune-iam-admin-actions-DeleteDBInstance"></a>

`Elimina DBInstance` elimina un'istanza database specificata.

*Livello di accesso:* `Write`.

*Tipo di risorsa:* [db](iam-admin-resources.md#neptune-db-resource) (obbligatorio).

## RDS: Elimina gruppo DBParameter
<a name="neptune-iam-admin-actions-DeleteDBParameterGroup"></a>

`Elimina DBParameter gruppo`elimina un gruppo specificato. DBParameter

*Livello di accesso:* `Write`.

*Tipo di risorsa:* [pg](iam-admin-resources.md#neptune-pg-resource) (obbligatorio).

## DBSubnetRDS: Elimina gruppo
<a name="neptune-iam-admin-actions-DeleteDBSubnetGroup"></a>

`Elimina DBSubnet gruppo` elimina un gruppo di sottoreti del database.

*Livello di accesso:* `Write`.

*Tipo di risorsa:* [subgrp](iam-admin-resources.md#neptune-subgrp-resource) (obbligatorio).

## rds: DeleteEventSubscription
<a name="neptune-iam-admin-actions-DeleteEventSubscription"></a>

`DeleteEventSubscription` elimina una sottoscrizione alle notifiche di eventi.

*Livello di accesso:* `Write`.

*Tipo di risorsa:* [es](iam-admin-resources.md#neptune-es-resource) (obbligatorio)

## RDS: descrivi DBCluster ParameterGroups
<a name="neptune-iam-admin-actions-DescribeDBClusterParameterGroups"></a>

`Descriva DBCluster ParameterGroups`restituisce un elenco di descrizioni. DBCluster ParameterGroup 

*Livello di accesso:* `List`.

*Tipo di risorsa:* [cluster-pg](iam-admin-resources.md#neptune-cluster-pg-resource) (obbligatorio).

## RDS: DBCluster Descrivi i parametri
<a name="neptune-iam-admin-actions-DescribeDBClusterParameters"></a>

`DBClusterDescrivi parametri` restituisce l'elenco dettagliato di parametri per un determinato gruppo di parametri del cluster database.

*Livello di accesso:* `List`.

*Tipo di risorsa:* [cluster-pg](iam-admin-resources.md#neptune-cluster-pg-resource) (obbligatorio).

## RDS: Descrivi DBCluster SnapshotAttributes
<a name="neptune-iam-admin-actions-DescribeDBClusterSnapshotAttributes"></a>

`Descriva DBCluster SnapshotAttributes` restituisce un elenco di nomi e valori degli attributi dello snapshot del cluster database per uno snapshot del cluster database manuale.

*Livello di accesso:* `List`.

*Tipo di risorsa:* [cluster-snapshot](iam-admin-resources.md#neptune-cluster-snapshot-resource) (obbligatorio).

## RDS: Descrivi DBCluster le istantanee
<a name="neptune-iam-admin-actions-DescribeDBClusterSnapshots"></a>

`Descrivi le istantanee DBCluster` restituisce informazioni sugli snapshot del cluster database.

*Livello di accesso:* `Read`.

## RDS: Descrivi DBClusters
<a name="neptune-iam-admin-actions-DescribeDBClusters"></a>

`Descriva DBClusters` restituisce informazioni su un cluster database Neptune di cui è stato effettuato il provisioning.

*Livello di accesso:* `List`.

*Tipo di risorsa:* [cluster](iam-admin-resources.md#neptune-cluster-resource) (obbligatorio).

## RDS: descrizione DBEngine delle versioni
<a name="neptune-iam-admin-actions-DescribeDBEngineVersions"></a>

`Descrivi DBEngine versioni` restituisce un elenco dei motori di database disponibili.

*Livello di accesso:* `List`.

*Tipo di risorsa:* [pg](iam-admin-resources.md#neptune-pg-resource) (obbligatorio).

## RDS: Descrivi DBInstances
<a name="neptune-iam-admin-actions-DescribeDBInstances"></a>

`Descriva DBInstances` restituisce informazioni sulle istanze database.

*Livello di accesso:* `List`.

*Tipo di risorsa:* [es](iam-admin-resources.md#neptune-es-resource) (obbligatorio)

## RDS: Descrivi i gruppi DBParameter
<a name="neptune-iam-admin-actions-DescribeDBParameterGroups"></a>

`DBParameterDescrivi gruppi`restituisce un elenco di descrizioni dei gruppi DBParameter.

*Livello di accesso:* `List`.

*Tipo di risorsa:* [pg](iam-admin-resources.md#neptune-pg-resource) (obbligatorio).

## RDS: Descrivi DBParameters
<a name="neptune-iam-admin-actions-DescribeDBParameters"></a>

`Descriva DBParameters` restituisce un elenco dettagliato di parametri per un determinato gruppo di parametri database.

*Livello di accesso:* `List`.

*Tipo di risorsa:* [pg](iam-admin-resources.md#neptune-pg-resource) (obbligatorio).

## RDS: Descrivi i gruppi DBSubnet
<a name="neptune-iam-admin-actions-DescribeDBSubnetGroups"></a>

`DBSubnetDescrivi gruppi`restituisce un elenco di descrizioni dei gruppi DBSubnet.

*Livello di accesso:* `List`.

*Tipo di risorsa:* [subgrp](iam-admin-resources.md#neptune-subgrp-resource) (obbligatorio).

## rds: DescribeEventCategories
<a name="neptune-iam-admin-actions-DescribeEventCategories"></a>

`DescribeEventCategories` restituisce un elenco di categorie per tutti i tipi di origine eventi oppure, se specificato, per un determinato tipo di origine.

*Livello di accesso:* `List`.

## rds: DescribeEventSubscriptions
<a name="neptune-iam-admin-actions-DescribeEventSubscriptions"></a>

`DescribeEventSubscriptions` elenca tutte le descrizioni di sottoscrizioni per un account cliente.

*Livello di accesso:* `List`.

*Tipo di risorsa:* [es](iam-admin-resources.md#neptune-es-resource) (obbligatorio)

## rds: DescribeEvents
<a name="neptune-iam-admin-actions-DescribeEvents"></a>

`DescribeEvents` restituisce eventi relativi a istanze database, gruppi di sicurezza del database e gruppi di parametri database degli ultimi 14 giorni.

*Livello di accesso:* `List`.

*Tipo di risorsa:* [es](iam-admin-resources.md#neptune-es-resource) (obbligatorio)

## rds: Opzioni DescribeOrderable DBInstance
<a name="neptune-iam-admin-actions-DescribeOrderableDBInstanceOptions"></a>

`DescribeOrderableDBInstanceOpzioni` restituisce un elenco delle opzioni delle istanze database ordinabili per il motore specificato.

*Livello di accesso:* `List`.

## rds: DescribePendingMaintenanceActions
<a name="neptune-iam-admin-actions-DescribePendingMaintenanceActions"></a>

`DescribePendingMaintenanceActions` restituisce un elenco di risorse (ad esempio, istanze database) che hanno almeno un'operazione di manutenzione in sospeso.

*Livello di accesso:* `List`.

*Tipo di risorsa:* [db](iam-admin-resources.md#neptune-db-resource) (obbligatorio).

## rds: Modifiche DescribeValid DBInstance
<a name="neptune-iam-admin-actions-DescribeValidDBInstanceModifications"></a>

`DescribeValidDBInstanceModifiche` elenca le modifiche disponibili che è possibile apportare all'istanza database.

*Livello di accesso:* `List`.

*Tipo di risorsa:* [db](iam-admin-resources.md#neptune-db-resource) (obbligatorio).

## RDS: failover DBCluster
<a name="neptune-iam-admin-actions-FailoverDBCluster"></a>

`Failover DBCluster` forza un failover per un cluster database.

*Livello di accesso:* `Write`.

*Tipo di risorsa:* [cluster](iam-admin-resources.md#neptune-cluster-resource) (obbligatorio).

## rds: ListTagsForResource
<a name="neptune-iam-admin-actions-ListTagsForResource"></a>

`ListTagsForResource` elenca tutti i tag su una risorsa Neptune.

*Livello di accesso:* `Read`.

*Tipi di risorsa:*
+ [cluster-snapshot](iam-admin-resources.md#neptune-cluster-snapshot-resource)
+ [db](iam-admin-resources.md#neptune-db-resource)
+ [es](iam-admin-resources.md#neptune-es-resource)
+ [pg](iam-admin-resources.md#neptune-pg-resource)
+ [subgrp](iam-admin-resources.md#neptune-subgrp-resource)

## RDS: modifica DBCluster
<a name="neptune-iam-admin-actions-ModifyDBCluster"></a>

`Modificare DBCluster`

Modifica un'impostazione per un cluster database Neptune.

*Livello di accesso:* `Write`.

*Azioni dipendenti:* `iam:PassRole`.

*Tipi di risorsa:*
+ [cluster](iam-admin-resources.md#neptune-cluster-resource) (obbligatorio).
+ [cluster-pg](iam-admin-resources.md#neptune-cluster-pg-resource) (obbligatorio).

## RDS: modifica DBCluster ParameterGroup
<a name="neptune-iam-admin-actions-ModifyDBClusterParameterGroup"></a>

`Modificare DBCluster ParameterGroup` modifica i parametri di un gruppo di parametri del cluster database.

*Livello di accesso:* `Write`.

*Tipo di risorsa:* [cluster-pg](iam-admin-resources.md#neptune-cluster-pg-resource) (obbligatorio).

## RDS: modifica DBCluster SnapshotAttribute
<a name="neptune-iam-admin-actions-ModifyDBClusterSnapshotAttribute"></a>

`Modifica DBCluster SnapshotAttribute` aggiunge un attributo e i valori a uno snapshot del cluster database manuale o li rimuove dallo stesso.

*Livello di accesso:* `Write`.

*Tipo di risorsa:* [cluster-snapshot](iam-admin-resources.md#neptune-cluster-snapshot-resource) (obbligatorio).

## RDS: modifica DBInstance
<a name="neptune-iam-admin-actions-ModifyDBInstance"></a>

`Modificare DBInstance` modifica le impostazioni di un'istanza database.

*Livello di accesso:* `Write`.

*Azioni dipendenti:* `iam:PassRole`.

*Tipi di risorsa:*
+ [db](iam-admin-resources.md#neptune-db-resource) (obbligatorio).
+ [pg](iam-admin-resources.md#neptune-pg-resource) (obbligatorio).

## RDS: Modifica gruppo DBParameter
<a name="neptune-iam-admin-actions-ModifyDBParameterGroup"></a>

`Modifica DBParameter gruppo` modifica i parametri di un gruppo di parametri database.

*Livello di accesso:* `Write`.

*Tipo di risorsa:* [pg](iam-admin-resources.md#neptune-pg-resource) (obbligatorio).

## RDS: Modifica DBSubnet gruppo
<a name="neptune-iam-admin-actions-ModifyDBSubnetGroup"></a>

`Modifica DBSubnet gruppo` modifica un gruppo di sottoreti del database esistente.

*Livello di accesso:* `Write`.

*Tipo di risorsa:* [subgrp](iam-admin-resources.md#neptune-subgrp-resource) (obbligatorio).

## rds: ModifyEventSubscription
<a name="neptune-iam-admin-actions-ModifyEventSubscription"></a>

`ModifyEventSubscription` modifica una sottoscrizione alle notifiche di eventi Neptune esistente.

*Livello di accesso:* `Write`.

*Tipo di risorsa:* [es](iam-admin-resources.md#neptune-es-resource) (obbligatorio)

## RDS: riavvio DBInstance
<a name="neptune-iam-admin-actions-RebootDBInstance"></a>

`Riavviare DBInstance` riavvia il servizio del motore di database per l'istanza.

*Livello di accesso:* `Write`.

*Tipo di risorsa:* [db](iam-admin-resources.md#neptune-db-resource) (obbligatorio).

## rds: RemoveRoleFrom DBCluster
<a name="neptune-iam-admin-actions-RemoveRoleFromDBCluster"></a>

`RemoveRoleFromDBCluster`dissocia un ruolo AWS Identity and Access Management (IAM) da un cluster Amazon Neptune DB.

*Livello di accesso:* `Write`.

*Azioni dipendenti:* `iam:PassRole`.

*Tipo di risorsa:* [cluster](iam-admin-resources.md#neptune-cluster-resource) (obbligatorio).

## aggiunge: RemoveSourceIdentifierFromSubscription
<a name="neptune-iam-admin-actions-RemoveSourceIdentifierFromSubscription"></a>

`RemoveSourceIdentifierFromSubscription` rimuove un identificatore di origine da una sottoscrizione alle notifiche di eventi Neptune esistente.

*Livello di accesso:* `Write`.

*Tipo di risorsa:* [es](iam-admin-resources.md#neptune-es-resource) (obbligatorio)

## rds: RemoveTagsFromResource
<a name="neptune-iam-admin-actions-RemoveTagsFromResource"></a>

`RemoveTagsFromResource` rimuove tag di metadati da una risorsa Neptune.

*Livello di accesso:* `Tagging`.

*Tipi di risorsa:*
+ [cluster-snapshot](iam-admin-resources.md#neptune-cluster-snapshot-resource)
+ [db](iam-admin-resources.md#neptune-db-resource)
+ [es](iam-admin-resources.md#neptune-es-resource)
+ [pg](iam-admin-resources.md#neptune-pg-resource)
+ [subgrp](iam-admin-resources.md#neptune-subgrp-resource)

*Chiavi di condizione:*
+ [leggi:/RequestTag*tag-key*](iam-admin-condition-keys.md#admin-aws_RequestTag)
+ [seghe: TagKeys](iam-admin-condition-keys.md#admin-aws_TagKeys)

## RDS: reset DBCluster ParameterGroup
<a name="neptune-iam-admin-actions-ResetDBClusterParameterGroup"></a>

`Ripristina DBCluster ParameterGroup` modifica i parametri di un gruppo di parametri del cluster database con il valore predefinito.

*Livello di accesso:* `Write`.

*Tipo di risorsa:* [cluster-pg](iam-admin-resources.md#neptune-cluster-pg-resource) (obbligatorio).

## RDS: Reset Group DBParameter
<a name="neptune-iam-admin-actions-ResetDBParameterGroup"></a>

`Reimposta DBParameter gruppo`modifica i parametri di un gruppo di parametri DB portandoli al valore predefinito. engine/system 

*Livello di accesso:* `Write`.

*Tipo di risorsa:* [pg](iam-admin-resources.md#neptune-pg-resource) (obbligatorio).

## RDS: ripristino DBCluster FromSnapshot
<a name="neptune-iam-admin-actions-RestoreDBClusterFromSnapshot"></a>

`Ripristina DBCluster FromSnapshot` crea un nuovo cluster database da uno snapshot del cluster database.

*Livello di accesso:* `Write`.

*Azioni dipendenti:* `iam:PassRole`.

*Tipi di risorsa:*
+ [cluster](iam-admin-resources.md#neptune-cluster-resource) (obbligatorio).
+ [cluster-snapshot](iam-admin-resources.md#neptune-cluster-snapshot-resource) (obbligatorio).

*Chiavi di condizione:*
+ [leggi:/RequestTag*tag-key*](iam-admin-condition-keys.md#admin-aws_RequestTag)
+ [seghe: TagKeys](iam-admin-condition-keys.md#admin-aws_TagKeys)

## RDS: ripristino DBCluster ToPointInTime
<a name="neptune-iam-admin-actions-RestoreDBClusterToPointInTime"></a>

`Ripristina DBCluster ToPointInTime` ripristina un cluster database a un point-in-time arbitrario.

*Livello di accesso:* `Write`.

*Azioni dipendenti:* `iam:PassRole`.

*Tipi di risorsa:*
+ [cluster](iam-admin-resources.md#neptune-cluster-resource) (obbligatorio).
+ [subgrp](iam-admin-resources.md#neptune-subgrp-resource) (obbligatorio).

*Chiavi di condizione:*
+ [leggi:/RequestTag*tag-key*](iam-admin-condition-keys.md#admin-aws_RequestTag)
+ [seghe: TagKeys](iam-admin-condition-keys.md#admin-aws_TagKeys)

## RDS: Avvio DBCluster
<a name="neptune-iam-admin-actions-StartDBCluster"></a>

`Inizio DBCluster` avvia il cluster database specificato.

*Livello di accesso:* `Write`.

*Tipo di risorsa:* [cluster](iam-admin-resources.md#neptune-cluster-resource) (obbligatorio).

## RDS: Stop DBCluster
<a name="neptune-iam-admin-actions-StopDBCluster"></a>

`Fermare DBCluster` arresta il cluster database specificato.

*Livello di accesso:* `Write`.

*Tipo di risorsa:* [cluster](iam-admin-resources.md#neptune-cluster-resource) (obbligatorio).

# Tipi di risorse IAM per l'amministrazione di Amazon Neptune
<a name="iam-admin-resources"></a>

Neptune supporta i tipi di risorse riportati nella tabella seguente da utilizzare nell'elemento `Resource` delle dichiarazioni di policy di amministrazione IAM. Per ulteriori informazioni sull'elemento `Resource`, consulta [Elementi JSON della policy IAM: Risorsa](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_resource.html).

L'[elenco delle azioni di amministrazione di Neptune](neptune-iam-admin-actions.md) identifica i tipi di risorse che è possibile specificare con ogni azione. Un tipo di risorsa determina anche quali chiavi di condizione è possibile includere in una policy, come specificato nell'ultima colonna della tabella seguente.

La colonna `ARN` della tabella seguente specifica il formato del nome della risorsa Amazon (ARN) che è necessario utilizzare per fare riferimento alle risorse di questo tipo. Le porzioni precedute da un ` $ ` devono essere sostituite con i valori effettivi per il proprio scenario. Ad esempio, se è presente `$user-name` in un ARN, è necessario sostituire tale stringa con l'effettivo nome dell'utente IAM o con una variabile della policy che contiene il nome di un utente IAM. [Per ulteriori informazioni su, consulta IAM e. ARNs ARNs](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns) [Lavorare con gli amministratori ARNs in Amazon Neptune](tagging-arns.md)

La colonna ` Condition Keys ` specifica le chiavi di contesto delle condizioni che è possibile includere in una dichiarazione di policy IAM solo quando sia questa risorsa che un'azione di supporto compatibile sono incluse nella dichiarazione.


****  

| Tipi di risorsa | ARN | Chiavi di condizione | 
| --- | --- | --- | 
|  `cluster` (cluster database)  | arn:partition:rds:region:account-id:cluster:instance-name |  [aws:ResourceTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_ResourceTag) [rds: cluster-tag/*tag-key*](iam-admin-condition-keys.md#admin-rds_cluster-tag)  | 
|  `cluster-pg` (gruppo di parametri del cluster database)  | arn:partition:rds:region:account-id:cluster-pg:neptune-DBClusterParameterGroupName |  [leggi:/ResourceTag*tag-key*](iam-admin-condition-keys.md#admin-aws_ResourceTag)  | 
|  `cluster-snapshot` (snapshot del cluster database)  | arn:partition:rds:region:account-id:cluster-snapshot:neptune-DBClusterSnapshotName |  [leggi:ResourceTag/*tag-key*](iam-admin-condition-keys.md#admin-aws_ResourceTag) [rds:/cluster-snapshot-tag*tag-key*](iam-admin-condition-keys.md#admin-rds_cluster-snapshot-tag)  | 
|  `db` (istanza database)  | arn:partition:rds:region:account-id:db:neptune-DbInstanceName |  [leggi:/ResourceTag*tag-key*](iam-admin-condition-keys.md#admin-aws_ResourceTag) [rds: DatabaseClass](iam-admin-condition-keys.md#admin-rds_DatabaseClass) [rds: DatabaseEngine](iam-admin-condition-keys.md#admin-rds_DatabaseEngine) [rds: db-tag/*tag-key*](iam-admin-condition-keys.md#admin-rds_db-tag)  | 
|  `es` (sottoscrizione a eventi)  | arn:partition:rds:region:account-id:es:neptune-CustSubscriptionId  |  [leggi:/ResourceTag*tag-key*](iam-admin-condition-keys.md#admin-aws_ResourceTag) [rds: es-tag/ *tag-key*](iam-admin-condition-keys.md#admin-rds_es-tag)  | 
|  `pg` (gruppo di parametri database)  | arn:partition:rds:region:account-id:pg:neptune-ParameterGroupName |  [leggi:/ResourceTag*tag-key*](iam-admin-condition-keys.md#admin-aws_ResourceTag) [rds: pg-tag/*tag-key*](iam-admin-condition-keys.md#admin-rds_pg-tag)  | 
|  `subgrp` (gruppo di sottoreti del database)  | arn:partition:rds:region:account-id:subgrp:neptune-DBSubnetGroupName\$1 |  [leggi:/ResourceTag*tag-key*](iam-admin-condition-keys.md#admin-aws_ResourceTag) [rds: subgrp-tag/ *tag-key*](iam-admin-condition-keys.md#admin-rds_subgrp-tag)  | 

# Chiavi delle condizioni IAM per l'amministrazione di Amazon Neptune
<a name="iam-admin-condition-keys"></a>

[Utilizzando chiavi di condizione](security-iam-access-manage.md#iam-using-condition-keys), è possibile specificare le condizioni in una dichiarazione di policy IAM in modo che la dichiarazione diventi effettiva solo quando le condizioni sono vere. Le chiavi di condizione che è possibile utilizzare nelle dichiarazioni di policy amministrative di Neptune rientrano nelle seguenti categorie:
+ [Chiavi di condizione globali](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html): sono definite da AWS per l'uso generale con i servizi. AWS La maggior parte può essere utilizzata nelle dichiarazioni di policy amministrative di Neptune.
+ [Chiavi di condizione delle proprietà delle risorse amministrative](#iam-rds-property-condition-keys): queste chiavi, elencate [di seguito](#iam-rds-property-condition-keys), si basano sulle proprietà delle risorse amministrative.
+ [Chiavi di condizione di accesso basate su tag](#iam-rds-tag-based-condition-keys): queste chiavi, elencate [di seguito](#iam-rds-tag-based-condition-keys), si basano sui [tag](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html)AWS collegati alle risorse amministrative.

## Chiavi di condizione delle proprietà delle risorse amministrative di Neptune
<a name="iam-rds-property-condition-keys"></a>


| Chiavi di condizione | Descrizione | Tipo | 
| --- | --- | --- | 
| rds:DatabaseClass | Filtra l'accesso in base al tipo di classe di istanza database. | Stringa | 
| rds:DatabaseEngine | Filtra l'accesso in base al motore di database. Per i valori possibili, fate riferimento al parametro engine in Create DBInstance API | Stringa | 
| rds:DatabaseName | Filtra l'accesso in base al nome definito dall'utente del database nell'istanza database | Stringa | 
| rds:EndpointType | Filtra l'accesso in base al tipo di endpoint. Uno di: di LETTURA, di SCRITTURA e PERSONALIZZATO. | Stringa | 
| rds:Vpc | Filtra l'accesso in base al valore che specifica se l'istanza database viene eseguita in un Amazon Virtual Private Cloud (Amazon VPC). Per indicare che l'istanza database viene eseguita in Amazon VPC, specifica true. | Booleano | 

## Chiavi di condizione amministrative basate su tag
<a name="iam-rds-tag-based-condition-keys"></a>

Amazon Neptune permette di specificare le condizioni in una policy IAM utilizzando tag personalizzati per controllare l'accesso a Neptune tramite [Documentazione di riferimento delle API di gestione](api.md).

Ad esempio, se aggiungi un tag denominato `environment` alle tue istanze database, con valori come `beta`, `staging` e `production`, puoi quindi creare una policy che limiti l'accesso alle istanze in base al valore di quel tag.

**Importante**  
Se gestisci l'accesso alle risorse Neptune utilizzando i tag, assicurati di proteggere l'accesso ai tag. Puoi limitare l'accesso ai tag creando policy per le azioni `AddTagsToResource` e `RemoveTagsFromResource`.  
Ad esempio, potresti usare la policy seguente per negare agli utenti la possibilità di aggiungere o rimuovere tag per tutte le risorse. Potresti quindi creare policy per permettere a utenti specifici di aggiungere o rimuovere tag.  

****  

```
{ "Version":"2012-10-17",		 	 	 
  "Statement":[
    { "Sid": "DenyTagUpdates",
      "Effect": "Deny",
      "Action": [
        "rds:AddTagsToResource",
        "rds:RemoveTagsFromResource"
      ],
      "Resource":"*"
    }
  ]
}
```

Le seguenti chiavi di condizione basate su tag funzionano solo con le risorse amministrative contenute nelle dichiarazioni di policy amministrative.


**Chiavi di condizione amministrative basate su tag**  

| Chiavi di condizione | Descrizione | Tipo | 
| --- | --- | --- | 
|   [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag)  | Filtra l'accesso in base alla presenza di coppie chiave-valore di tag nella richiesta. | Stringa | 
|   [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag)  | Filtra l'accesso in base a coppie chiave/valore di tag collegate alla risorsa. | Stringa | 
|   [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keyss](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keyss)  | Filtra l'accesso in base alla presenza di chiavi di tag nella richiesta. | Stringa | 
| rds:cluster-pg-tag/\$1\$1TagKey\$1 | Filtra l'accesso in base al tag collegato a un gruppo di parametri del cluster database. | Stringa | 
| rds:cluster-snapshot-tag/\$1\$1TagKey\$1 | Filtra l'accesso in base al tag collegato a uno snapshot del cluster database. | Stringa | 
| rds:cluster-tag/\$1\$1TagKey\$1 | Filtra l'accesso in base al tag collegato a un cluster database. | Stringa | 
| rds:db-tag/\$1\$1TagKey\$1 | Filtra l'accesso in base al tag collegato a un'istanza database. | Stringa | 
| rds:es-tag/\$1\$1TagKey\$1 | Filtra l'accesso in base al tag collegato a una sottoscrizione di eventi. | Stringa | 
| rds:pg-tag/\$1\$1TagKey\$1 | Filtra l'accesso in base al tag collegato a un gruppo di parametri database. | Stringa | 
| rds:req-tag/\$1\$1TagKey\$1 | Filtra l'accesso in base al set di chiavi e valori di tag che possono essere utilizzati per aggiungere tag a una risorsa. | Stringa | 
| rds:secgrp-tag/\$1\$1TagKey\$1 | Filtra l'accesso in base al tag collegato a un gruppo di sicurezza database. | Stringa | 
| rds:snapshot-tag/\$1\$1TagKey\$1 | Filtra l'accesso in base al tag collegato a uno snapshot del database. | Stringa | 
| rds:subgrp-tag/\$1\$1TagKey\$1 | Filtra l'accesso in base al tag collegato a un gruppo di sottoreti DB | Stringa | 

# Creazione di dichiarazioni di policy amministrative IAM per Amazon Neptune
<a name="iam-admin-policy-examples"></a>

## Esempi di policy amministrative generali
<a name="iam-admin-policy-general-examples"></a>

Gli esempi seguenti mostrano come creare policy amministrative di Neptune che concedono le autorizzazioni per eseguire varie azioni di gestione su un cluster database.

### Policy che impedisce a un utente IAM di eliminare un'istanza database specificata
<a name="iam-admin-policy-not-delete-instance"></a>

Di seguito è riportato un esempio di policy che impedisce a un utente IAM di eliminare un'istanza database Neptune specificata:

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyDeleteOneInstance",
      "Effect": "Deny",
      "Action": "rds:DeleteDBInstance",
      "Resource": "arn:aws:rds:us-west-2:123456789012:db:my-instance-name"
    }
  ]
}
```

------

### Policy che concede l'autorizzazione per creare nuove istanze database
<a name="iam-admin-policy-to-create-instances"></a>

Di seguito è riportato un esempio di policy che consente a un utente IAM di creare istanze database in un cluster database Neptune specificato:

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowCreateInstance",
      "Effect": "Allow",
      "Action": "rds:CreateDBInstance",
      "Resource": "arn:aws:rds:us-west-2:123456789012:cluster:my-cluster"
    }
  ]
}
```

------

### Policy che concede l'autorizzazione per creare nuove istanze database che utilizzano un gruppo di parametri database specifico
<a name="iam-admin-policy-to-create-instances-with-pg"></a>

Di seguito è riportato un esempio di policy che consente a un utente IAM di creare istanze database in un cluster database specificato (`us-west-2` in questo esempio) utilizzando solo un gruppo di parametri database specificato.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowCreateInstanceWithPG",
      "Effect": "Allow",
      "Action": "rds:CreateDBInstance",
      "Resource": [
        "arn:aws:rds:us-west-2:123456789012:cluster:my-cluster",
        "arn:aws:rds:us-west-2:123456789012:pg:my-instance-pg"
      ]
    }
  ]
}
```

------

### Policy che concede l'autorizzazione per descrivere una risorsa
<a name="iam-admin-policy-to-describe"></a>

Di seguito è riportato un esempio di policy che consente a un utente IAM di descrivere qualsiasi risorsa Neptune.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowDescribe",
            "Effect": "Allow",
            "Action": "rds:Describe*",
            "Resource": "*"
        }
    ]
}
```

------

## Esempi di policy amministrative basate su tag
<a name="iam-admin-policy-tagging-examples"></a>

Gli esempi seguenti mostrano come creare policy amministrative di Neptune che utilizzano tag per filtrare le autorizzazioni per varie azioni di gestione su un cluster database.

### Esempio 1: Concedere l'autorizzazione per le azioni su una risorsa tramite un tag personalizzato che può assumere più valori
<a name="security-iam-tag-examples-1"></a>

La policy seguente consente l'uso dell'API`ModifyDBInstance`, `CreateDBInstance` o `DeleteDBInstance` su qualsiasi istanza database con il tag `env` impostato su un `dev` o `test`:

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

****  

```
{ "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowDevTestAccess",
      "Effect": "Allow",
      "Action": [
        "rds:ModifyDBInstance",
        "rds:CreateDBInstance",
        "rds:DeleteDBInstance"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "rds:db-tag/env": [
              "dev",
              "test"
          ],
          "rds:DatabaseEngine": "neptune"
        }
      }
    }
  ]
}
```

------

### Esempio 2: Limitare il set di chiavi e valori di tag che possono essere utilizzati per aggiungere tag a una risorsa
<a name="security-iam-tag-examples-2"></a>

Questa policy utilizza una chiave `Condition` per consentire a un tag con la chiave `env` e il valore `test`, `qa` o `dev` di essere aggiunto a una risorsa:

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

****  

```
{ "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowTagAccessForDevResources",
      "Effect": "Allow",
      "Action": [
        "rds:AddTagsToResource",
        "rds:RemoveTagsFromResource"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "rds:req-tag/env": [
            "test",
            "qa",
            "dev"
          ],
          "rds:DatabaseEngine": "neptune"
        }
      }
    }
  ]
}
```

------

### Esempio 3: Consentire l'accesso completo alle risorse Neptune in base a `aws:ResourceTag`
<a name="security-iam-tag-examples-3"></a>

La policy seguente è simile al primo esempio, ma utilizza `aws:ResourceTag`:

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

****  

```
{ "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowFullAccessToDev",
      "Effect": "Allow",
      "Action": [
        "rds:*"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/env": "dev",
          "rds:DatabaseEngine": "neptune"
        }
      }
    }
  ]
}
```

------

# Creazione di istruzioni di policy IAM personalizzate per accedere ai dati in Amazon Neptune
<a name="iam-data-access-policies"></a>

Le dichiarazioni di policy di accesso ai dati di Neptune utilizzano [azioni di accesso ai dati](iam-dp-actions.md), [risorse](iam-data-resources.md) e [chiavi di condizione](iam-data-condition-keys.md#iam-neptune-condition-keys), tutte precedute dal prefisso `neptune-db:`.

**Topics**
+ [Utilizzo delle azioni di query nelle dichiarazioni di policy di accesso ai dati di Neptune](#iam-data-query-actions)
+ [Azioni IAM per l'accesso ai dati in Amazon Neptune](iam-dp-actions.md)
+ [Tipi di risorse IAM per l'accesso ai dati in Amazon Neptune](iam-data-resources.md)
+ [Chiavi di condizione IAM per l'accesso ai dati in Amazon Neptune](iam-data-condition-keys.md)
+ [Creazione di policy di accesso ai dati IAM in Amazon Neptune](iam-data-access-examples.md)

## Utilizzo delle azioni di query nelle dichiarazioni di policy di accesso ai dati di Neptune
<a name="iam-data-query-actions"></a>

Esistono tre azioni di query di Neptune che possono essere utilizzate nelle dichiarazioni di policy di accesso ai dati, vale a dire `ReadDataViaQuery`, `WriteDataViaQuery` e `DeleteDataViaQuery`. Una particolare query può richiedere le autorizzazioni per eseguire più di una di queste azioni e potrebbe non essere sempre ovvio quale combinazione di queste azioni debba essere consentita per eseguire una query.

Prima di eseguire una query, Neptune determina le autorizzazioni necessarie per eseguire ogni passaggio della query e le combina nel set completo di autorizzazioni richieste dalla query. Nota che questo set completo di autorizzazioni include tutte le azioni che la query *potrebbe* eseguire, il che non è necessariamente il set di azioni che la query effettivamente eseguirà quando verrà eseguita sui dati.

Ciò significa che per consentire l'esecuzione di una determinata query, è necessario fornire le autorizzazioni per ogni azione che la query potrebbe eseguire, indipendentemente dal fatto che le esegua effettivamente o meno.

Ecco alcuni esempi di query Gremlin in cui ciò viene spiegato più dettagliatamente:
+ 

  ```
  g.V().count()
  ```

  `g.V()` e `count()` richiedono solo l'accesso in lettura, quindi la query nel suo complesso richiede solo l'accesso `ReadDataViaQuery`.
+ 

  ```
  g.addV()
  ```

  `addV()` deve verificare se esiste o meno un vertice con un determinato ID prima di inserirne uno nuovo. Ciò significa che richiede sia l'accesso `ReadDataViaQuery` che `WriteDataViaQuery`.
+ 

  ```
  g.V('1').as('a').out('created').addE('createdBy').to('a')
  ```

  `g.V('1').as('a')` e `out('created')` richiedono solo l'accesso in lettura, ma `addE().from('a')` richiede sia l'accesso in lettura che in scrittura perché `addE()` deve leggere i vertici `from` e `to` e verificare se esiste già un arco con lo stesso ID prima di aggiungerne uno nuovo. La query nel suo complesso necessita quindi sia dell'accesso `ReadDataViaQuery` che `WriteDataViaQuery`.
+ 

  ```
  g.V().drop()
  ```

  `g.V()` richiede solo l'accesso in lettura. `drop()` necessita sia dell'accesso in lettura che di quello di eliminazione perché deve leggere un vertice o uno arco prima di eliminarlo, quindi la query nel suo complesso richiede sia l'accesso `ReadDataViaQuery` che `DeleteDataViaQuery`.
+ 

  ```
  g.V('1').property(single, 'key1', 'value1')
  ```

  `g.V('1')` richiede solo l'accesso in lettura, ma `property(single, 'key1', 'value1')` richiede l'accesso in lettura, scrittura ed eliminazione. In questo caso, il passaggio `property()` inserisce la chiave e il valore se non esistono già nel vertice, ma se esistono già, elimina il valore della proprietà esistente e inserisce un nuovo valore al suo posto. Pertanto, la query nel suo complesso richiede l'accesso `ReadDataViaQuery`, `WriteDataViaQuery` e `DeleteDataViaQuery`.

  Qualsiasi query che contenga un passaggio `property()` avrà bisogno delle autorizzazioni `ReadDataViaQuery`, `WriteDataViaQuery` e `DeleteDataViaQuery`.

Ecco alcuni esempi di openCypher:
+ 

  ```
  MATCH (n)
  RETURN n
  ```

  Questa query legge tutti i nodi del database e li restituisce, il che richiede solo l'accesso `ReadDataViaQuery`.
+ 

  ```
  MATCH (n:Person)
  SET n.dept = 'AWS'
  ```

  Questa query richiede l'accesso `ReadDataViaQuery`, `WriteDataViaQuery` e `DeleteDataViaQuery`. Legge tutti i nodi con l'etichetta 'Person' e vi aggiunge una nuova proprietà con la chiave `dept` e il valore `AWS` oppure, se la proprietà `dept` esiste già, elimina il vecchio valore e inserisce `AWS` al suo posto. Inoltre, se il valore da impostare è `null`, `SET` elimina completamente la proprietà.

   Poiché in alcuni casi può essere necessario eliminare un valore esistente, la clausola `SET` necessita **sempre** delle autorizzazioni `DeleteDataViaQuery` nonché delle autorizzazioni `ReadDataViaQuery` e `WriteDataViaQuery`.
+ 

  ```
  MATCH (n:Person)
  DETACH DELETE n
  ```

  Questa query richiede le autorizzazioni `ReadDataViaQuery` e `DeleteDataViaQuery`. Trova tutti i nodi con l'etichetta `Person` e li elimina insieme agli archi collegati a tali nodi e alle etichette e proprietà associate.
+ 

  ```
  MERGE (n:Person {name: 'John'})-[:knows]->(:Person {name: 'Peter'})
  RETURN n
  ```

  Questa query richiede le autorizzazioni `ReadDataViaQuery` e `WriteDataViaQuery`. La clausola `MERGE` cerca la corrispondenza con un modello specificato o lo crea. Poiché può verificarsi un'operazione di scrittura se non viene trovata una corrispondenza con il modello, sono necessarie le autorizzazioni di scrittura oltre a quelle di lettura.

# Azioni IAM per l'accesso ai dati in Amazon Neptune
<a name="iam-dp-actions"></a>

Nota che le azioni di accesso ai dati di Neptune hanno il prefisso `neptune-db:`, mentre le azioni amministrative in Neptune hanno il prefisso `rds:`.

Il nome della risorsa Amazon (ARN) per una risorsa dati in IAM non è lo stesso ARN assegnato a un cluster in fase di creazione. È necessario creare l'ARN come mostrato in [Specificare le risorse dati](iam-data-resources.md). Tale risorsa di dati ARNs può utilizzare caratteri jolly per includere più risorse.

Le dichiarazioni sulla politica di accesso ai dati possono includere anche la chiave di QueryLanguage condizione [neptune-db:](iam-data-condition-keys.md#iam-neptune-condition-keys) per limitare l'accesso tramite il linguaggio di interrogazione.

A partire dal [Rilascio: 1.2.0.0 (21/07/2022)](engine-releases-1.2.0.0.md), Neptune supporta la limitazione delle autorizzazioni a una o più [azioni specifiche di Neptune](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonneptune.html). Ciò fornisce un controllo degli accessi più granulare di quanto fosse possibile in precedenza.

**Importante**  
Le modifiche apportate a una policy IAM richiedono fino a 10 minuti per essere applicate alle risorse Neptune specificate.
Le policy IAM applicate a un cluster database Neptune si applicano a tutte le istanze del cluster.

## *Azioni di accesso ai dati basate su query*
<a name="iam-dp-actions-queries"></a>

**Nota**  
Non è sempre ovvio quali autorizzazioni siano necessarie per eseguire una determinata query, poiché le query possono potenzialmente eseguire più di un'azione a seconda dei dati che elaborano. Per ulteriori informazioni, consulta [Utilizzo delle azioni di query](iam-data-access-policies.md#iam-data-query-actions).

## `neptune-db:ReadDataViaQuery`
<a name="readdataviaquery"></a>

`ReadDataViaQuery` consente all'utente di leggere i dati dal database Neptune inviando query.

*Gruppi di azioni:* sola lettura, lettura-scrittura.

*Chiavi di contesto dell'azione:* `neptune-db:QueryLanguage`.

*Risorse necessarie:* database.

## `neptune-db:WriteDataViaQuery`
<a name="writedataviaquery"></a>

`WriteDataViaQuery` consente all'utente di scrivere i dati nel database Neptune inviando query.

*Gruppi di azione:* lettura-scrittura.

*Chiavi di contesto dell'azione:* `neptune-db:QueryLanguage`.

*Risorse necessarie:* database.

## `neptune-db:DeleteDataViaQuery`
<a name="deletedataviaquery"></a>

`DeleteDataViaQuery` consente all'utente di eliminare i dati dal database Neptune inviando query.

*Gruppi di azione:* lettura-scrittura.

*Chiavi di contesto dell'azione:* `neptune-db:QueryLanguage`.

*Risorse necessarie:* database.

## `neptune-db:GetQueryStatus`
<a name="getquerystatus"></a>

`GetQueryStatus` consente all'utente di controllare lo stato di tutte le query attive.

*Gruppi di azioni:* sola lettura, lettura-scrittura.

*Chiavi di contesto dell'azione:* `neptune-db:QueryLanguage`.

*Risorse necessarie:* database.

## `neptune-db:GetStreamRecords`
<a name="getstreamrecords"></a>

`GetStreamRecords` consente all'utente di recuperare i record di flusso da Neptune.

*Gruppi di azione:* lettura-scrittura.

*Chiavi di contesto dell'azione:* `neptune-db:QueryLanguage`.

*Risorse necessarie:* database.

## `neptune-db:CancelQuery`
<a name="cancelquery"></a>

`CancelQuery` consente all'utente di annullare una query.

*Gruppi di azione:* lettura-scrittura.

*Risorse necessarie:* database.

## *Azioni generali di accesso ai dati*
<a name="iam-dp-actions-general"></a>

## `neptune-db:GetEngineStatus`
<a name="getenginestatus"></a>

`GetEngineStatus` consente all'utente di controllare lo stato del motore Neptune.

*Gruppi di azioni:* sola lettura, lettura-scrittura.

*Risorse necessarie:* database.

## `neptune-db:GetStatisticsStatus`
<a name="getstatisticsstatus"></a>

`GetStatisticsStatus` consente all'utente di controllare lo stato delle statistiche raccolte per il database.

*Gruppi di azioni:* sola lettura, lettura-scrittura.

*Risorse necessarie:* database.

## `neptune-db:GetGraphSummary`
<a name="getgraphsummary"></a>

`GetGraphSummary` L'API di riepilogo del grafo consente di recuperare un riepilogo di sola lettura del grafo.

*Gruppi di azioni:* sola lettura, lettura-scrittura.

*Risorse necessarie:* database.

## `neptune-db:ManageStatistics`
<a name="managestatistics"></a>

`ManageStatistics` consente all'utente di gestire la raccolta di statistiche per il database.

*Gruppi di azione:* lettura-scrittura.

*Risorse necessarie:* database.

## `neptune-db:DeleteStatistics`
<a name="deletestatistics"></a>

`DeleteStatistics` consente all'utente di eliminare tutte le statistiche del database.

*Gruppi di azione:* lettura-scrittura.

*Risorse necessarie:* database.

## `neptune-db:ResetDatabase`
<a name="resetdatabase"></a>

`ResetDatabase` consente all'utente di ottenere il token necessario per una reimpostazione e di reimpostare il database Neptune.

*Gruppi di azione:* lettura-scrittura.

*Risorse necessarie:* database.

## *Azioni di accesso ai dati dello strumento di caricamento in blocco*
<a name="iam-dp-actions-loader"></a>

## `neptune-db:StartLoaderJob`
<a name="startloaderjob"></a>

`StartLoaderJob` consente all'utente di avviare un processo dello strumento di caricamento in blocco.

*Gruppi di azione:* lettura-scrittura.

*Risorse necessarie:* database.

## `neptune-db:GetLoaderJobStatus`
<a name="getloaderjobstatus"></a>

`GetLoaderJobStatus` consente all'utente di controllare lo stato di un processo dello strumento di caricamento in blocco

*Gruppi di azioni:* sola lettura, lettura-scrittura.

*Risorse necessarie:* database.

## `neptune-db:ListLoaderJobs`
<a name="listloaderjobs"></a>

`ListLoaderJobs` consente all'utente di elencare tutti i processi dello strumento di caricamento in blocco.

*Gruppi di azioni:* solo elenco, sola lettura, lettura-scrittura.

*Risorse necessarie:* database.

## `neptune-db:CancelLoaderJob`
<a name="cancelloaderjob"></a>

`CancelLoaderJob` consente all'utente di annullare un processo del loader.

*Gruppi di azione:* lettura-scrittura.

*Risorse necessarie:* database.

## *Azioni di accesso ai dati di machine learning*
<a name="iam-dp-actions-ml"></a>

## `neptune-db:StartMLDataProcessingJob`
<a name="startmldataprocessingjob"></a>

`StartMLDataProcessingJob` consente a un utente di avviare un processo di elaborazione dati Neptune ML.

*Gruppi di azione:* lettura-scrittura.

*Risorse necessarie:* database.

## `neptune-db:StartMLModelTrainingJob`
<a name="startmlmodeltrainingjob"></a>

`StartMLModelTrainingJob` consente a un utente di avviare un processo di addestramento dei modelli ML.

*Gruppi di azione:* lettura-scrittura.

*Risorse necessarie:* database.

## `neptune-db:StartMLModelTransformJob`
<a name="startmlmodeltransformjob"></a>

`StartMLModelTransformJob` consente a un utente di avviare un processo di trasformazione dei modelli ML.

*Gruppi di azione:* lettura-scrittura.

*Risorse necessarie:* database.

## `neptune-db:CreateMLEndpoint`
<a name="createmlendpoint"></a>

`CreateMLEndpoint` consente a un utente di creare un endpoint Neptune ML.

*Gruppi di azione:* lettura-scrittura.

*Risorse necessarie:* database.

## `neptune-db:GetMLDataProcessingJobStatus`
<a name="getmldataprocessingjobstatus"></a>

`GetMLDataProcessingJobStatus` consente a un utente di controllare lo stato di un processo di elaborazione dati Neptune ML.

*Gruppi di azioni:* sola lettura, lettura-scrittura.

*Risorse necessarie:* database.

## `neptune-db:GetMLModelTrainingJobStatus`
<a name="getmlmodeltrainingjobstatus"></a>

`GetMLModelTrainingJobStatus` consente a un utente di controllare lo stato di un processo di addestramento dei modelli Neptune ML.

*Gruppi di azioni:* sola lettura, lettura-scrittura.

*Risorse necessarie:* database.

## `neptune-db:GetMLModelTransformJobStatus`
<a name="getmlmodeltransformjobstatus"></a>

`GetMLModelTransformJobStatus` consente a un utente di controllare lo stato di un processo di trasformazione dei modelli Neptune ML.

*Gruppi di azioni:* sola lettura, lettura-scrittura.

*Risorse necessarie:* database.

## `neptune-db:GetMLEndpointStatus`
<a name="getmlendpointstatus"></a>

`GetMLEndpointStatus` consente a un utente di controllare lo stato di un endpoint Neptune ML.

*Gruppi di azioni:* sola lettura, lettura-scrittura.

*Risorse necessarie:* database.

## `neptune-db:ListMLDataProcessingJobs`
<a name="listmldataprocessingjobs"></a>

`ListMLDataProcessingJobs` consente a un utente di elencare tutti i processi di elaborazione dati Neptune ML.

*Gruppi di azioni:* solo elenco, sola lettura, lettura-scrittura.

*Risorse necessarie:* database.

## `neptune-db:ListMLModelTrainingJobs`
<a name="listmlmodeltrainingjobs"></a>

`ListMLModelTrainingJobs` consente a un utente di elencare tutti i processi di addestramento dei modelli Neptune ML.

*Gruppi di azioni:* solo elenco, sola lettura, lettura-scrittura.

*Risorse necessarie:* database.

## `neptune-db:ListMLModelTransformJobs`
<a name="listmlmodeltransformjobs"></a>

`ListMLModelTransformJobs` consente a un utente di elencare tutti i processi di trasformazione dei modelli ML.

*Gruppi di azioni:* solo elenco, sola lettura, lettura-scrittura.

*Risorse necessarie:* database.

## `neptune-db:ListMLEndpoints`
<a name="listmlendpoints"></a>

`ListMLEndpoints` consente a un utente di elencare tutti gli endpoint Neptune ML.

*Gruppi di azioni:* solo elenco, sola lettura, lettura-scrittura.

*Risorse necessarie:* database.

## `neptune-db:CancelMLDataProcessingJob`
<a name="cancelmldataprocessingjob"></a>

`CancelMLDataProcessingJob` consente a un utente di annullare un processo di elaborazione dati Neptune ML.

*Gruppi di azione:* lettura-scrittura.

*Risorse necessarie:* database.

## `neptune-db:CancelMLModelTrainingJob`
<a name="cancelmlmodeltrainingjob"></a>

`CancelMLModelTrainingJob` consente a un utente di annullare un processo di addestramento dei modelli Neptune ML.

*Gruppi di azione:* lettura-scrittura.

*Risorse necessarie:* database.

## `neptune-db:CancelMLModelTransformJob`
<a name="cancelmlmodeltransformjob"></a>

`CancelMLModelTransformJob` consente a un utente di annullare un processo di trasformazione dei modelli Neptune ML.

*Gruppi di azione:* lettura-scrittura.

*Risorse necessarie:* database.

## `neptune-db:DeleteMLEndpoint`
<a name="deletemlendpoint"></a>

`DeleteMLEndpoint` consente a un utente di eliminare un endpoint Neptune ML.

*Gruppi di azione:* lettura-scrittura.

*Risorse necessarie:* database.

# Tipi di risorse IAM per l'accesso ai dati in Amazon Neptune
<a name="iam-data-resources"></a>

Le risorse dati, come le azioni dati, hanno il prefisso `neptune-db:`.

In una policy di accesso ai dati di Neptune, è possibile specificare il cluster database a cui si concede l'accesso in un ARN con il seguente formato:

```
arn:aws:neptune-db:region:account-id:cluster-resource-id/*
```

Tale ARN della risorsa contiene le seguenti parti:
+ `region`è la AWS regione per il cluster Amazon Neptune DB.
+ `account-id` è il numero dell'account AWS per il cluster database.
+ `cluster-resource-id` è l'ID risorsa per il cluster database.
**Importante**  
`cluster-resource-id` è diverso dall'identificatore del cluster. Per trovare un ID di risorsa del cluster in Console di gestione AWS Neptune, cerca nella sezione Configurazione **il** cluster DB in questione.

# Chiavi di condizione IAM per l'accesso ai dati in Amazon Neptune
<a name="iam-data-condition-keys"></a>

[Utilizzando chiavi di condizione](security-iam-access-manage.md#iam-using-condition-keys), è possibile specificare le condizioni in una dichiarazione di policy IAM in modo che la dichiarazione diventi effettiva solo quando le condizioni sono vere.

Le chiavi di condizione che è possibile utilizzare nelle dichiarazioni di policy di accesso ai dati di Neptune rientrano nelle seguenti categorie:
+ [Chiavi di [condizione globali: il sottoinsieme di chiavi](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) di condizione AWS globali supportate da Neptune nelle dichiarazioni sulle politiche di accesso ai dati è elencato di seguito.](#iam-data-global-condition-keys)
+ [Chiavi di condizione specifiche del servizio](#iam-neptune-condition-keys): si tratta di chiavi definite da Neptune specificamente per l'uso nelle dichiarazioni di policy di accesso ai dati. Al momento ce n'è solo una, [neptune-db: QueryLanguage](#neptune-db-query-language), che concede l'accesso solo se viene utilizzato un linguaggio di interrogazione specifico.

## AWS chiavi di contesto delle condizioni globali supportate da Neptune nelle dichiarazioni sulle politiche di accesso ai dati
<a name="iam-data-global-condition-keys"></a>

La tabella seguente elenca il sottoinsieme di [chiavi di contesto di condizione globali AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) supportate da Amazon Neptune per l'uso nelle dichiarazioni di policy di accesso ai dati:


**Chiavi di condizione globali che è possibile utilizzare nelle dichiarazioni di policy di accesso ai dati**  

| Chiavi di condizione | Descrizione | Tipo | 
| --- | --- | --- | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-currenttime](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-currenttime) | Filtra l'accesso in base alla data e all'ora correnti della richiesta. | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-epochtime](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-epochtime) | Filtra l'accesso in base alla data e all'ora della richiesta espresse come valore Unix epoch. | Numeric | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalaccount) | Filtra l'accesso in base all'account a cui appartiene il principale che effettua la richiesta. | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalarn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalarn) | Filtra l'accesso in base all'ARN del principale che ha effettuato la richiesta. | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalisawsservice](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalisawsservice) | Consente l'accesso solo se la chiamata viene effettuata direttamente da un responsabile del servizio. AWS  | Boolean | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgid](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgid) | Filtra l'accesso in base all'identificatore dell'organizzazione in AWS Organizations a cui appartiene il principale richiedente. | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgpaths](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgpaths) | Filtra l'accesso in base al percorso AWS Organizations per il principale che effettua la richiesta. | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principaltag](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principaltag) | Filtra l'accesso in base a un tag collegato al principale che effettua la richiesta. | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principaltype](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principaltype) | Filtra l'accesso in base al tipo di principale che effettua la richiesta. | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requestedregion](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requestedregion) | Filtra l'accesso in base alla AWS regione chiamata nella richiesta. | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-securetransport](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-securetransport) | Consente l'accesso solo se la richiesta è stata inviata tramite SSL. | Boolean | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceip](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceip) | Filtra l'accesso in base all'indirizzo IP del richiedente. | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tokenissuetime](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tokenissuetime) | Filtra l'accesso in base alla data e all'ora in cui sono state generate le credenziali di sicurezza provvisorie. | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-useragent](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-useragent) | Filtra l'accesso dall'applicazione client del richiedente. | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-userid](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-userid) | Filtra l'accesso in base all'identificatore del principale del richiedente. | String | 
| [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-viaawsservice](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-viaawsservice) | Consente l'accesso solo se un AWS servizio ha effettuato la richiesta per tuo conto. | Boolean | 

## Chiavi di condizione specifiche del servizio Neptune
<a name="iam-neptune-condition-keys"></a>

Neptune supporta la seguente chiave di condizione specifica del servizio per le policy IAM:


**Chiavi di condizione specifiche del servizio Neptune**  

| Chiavi di condizione | Descrizione | Tipo | 
| --- | --- | --- | 
| neptune-db:QueryLanguage |  Filtra l'accesso ai dati in base al linguaggio di query utilizzato. I valori validi sono`Gremlin`, `OpenCypher` e `Sparql`. Le azioni supportate sono `ReadDataViaQuery`, `WriteDataViaQuery`, `DeleteDataViaQuery`, `GetQueryStatus` e `CancelQuery`.  | String | 

# Creazione di policy di accesso ai dati IAM in Amazon Neptune
<a name="iam-data-access-examples"></a>

[Gli esempi seguenti mostrano come creare policy IAM personalizzate che utilizzano il controllo granulare degli accessi del piano dati APIs e delle azioni, introdotto nella versione 1.2.0.0 del motore Neptune.](engine-releases-1.2.0.0.md) 

## Esempio di policy che consente l'accesso illimitato ai dati in un cluster database Neptune
<a name="iam-auth-data-policy-example-general"></a>

La policy contenuta nell'esempio seguente consente a un utente IAM di connettersi al cluster database Neptune utilizzando l'autenticazione database IAM e utilizza il carattere "`*`" per trovare una corrispondenza con tutte le azioni disponibili.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "neptune-db:*",
      "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-ABCD1234EFGH5678IJKL90MNOP/*"
    }
  ]
}
```

------

L'esempio precedente include un ARN della risorsa in un formato particolare per l'autenticazione IAM di Neptune. Per creare l'ARN, consulta [Specificare le risorse dati](iam-data-resources.md). Nota che l'ARN utilizzato per un'autorizzazione IAM `Resource` non è lo stesso ARN assegnato al cluster in fase di creazione.

## Esempio di policy che consente l'accesso in sola lettura a un cluster database Neptune
<a name="iam-auth-data-policy-example-read-only"></a>

La seguente policy concede l'autorizzazione per l'accesso completo in sola lettura ai dati in un cluster database Neptune: 

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Effect": "Allow",
      "Action": [
        "neptune-db:Read*",
        "neptune-db:Get*",
        "neptune-db:List*"
      ],
      "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-ABCD1234EFGH5678IJKL90MNOP/*"
    }
  ]
}
```

------

## Esempio di policy che nega l'accesso a un cluster database Neptune
<a name="iam-auth-data-policy-example-deny"></a>

L'azione IAM predefinita è negare l'accesso a un cluster database a meno che non venga concesso un *effetto* `Allow`. Tuttavia, la seguente politica nega qualsiasi accesso a un cluster DB per un AWS account e una regione particolari, il che ha quindi la precedenza su qualsiasi effetto. `Allow`

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "neptune-db:*",
      "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-ABCD1234EFGH5678IJKL90MNOP/*"
    }
  ]
}
```

------

## Esempio di policy che concede l'accesso in lettura tramite query
<a name="iam-auth-data-policy-example-read-query"></a>

La seguente policy concede l'autorizzazione per leggere da un cluster database Neptune solo tramite una query: 

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "neptune-db:ReadDataViaQuery",
      "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-ABCD1234EFGH5678IJKL90MNOP/*"
    }
  ]
}
```

------

## Esempio di policy che consente solo query Gremlin
<a name="iam-auth-data-policy-example-gremlin-only"></a>

La seguente policy utilizza la chiave di condizione `neptune-db:QueryLanguage` per concedere l'autorizzazione a eseguire query su Neptune solo utilizzando il linguaggio di query Gremlin: 

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "neptune-db:ReadDataViaQuery",
        "neptune-db:WriteDataViaQuery",
        "neptune-db:DeleteDataViaQuery"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "neptune-db:QueryLanguage": "Gremlin"
        }
      }
    }
  ]
}
```

------

## Esempio di policy che consente l'accesso completo ad eccezione della gestione dei modelli Neptune ML
<a name="iam-auth-data-policy-example-all-but-ml"></a>

La seguente policy concede l'accesso completo alle operazioni del grafo Neptune, ad eccezione delle funzionalità di gestione dei modelli Neptune ML:

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Effect": "Allow",
      "Action": [
        "neptune-db:CancelLoaderJob",
        "neptune-db:CancelQuery",
        "neptune-db:DeleteDataViaQuery",
        "neptune-db:DeleteStatistics",
        "neptune-db:GetEngineStatus",
        "neptune-db:GetLoaderJobStatus",
        "neptune-db:GetQueryStatus",
        "neptune-db:GetStatisticsStatus",
        "neptune-db:GetStreamRecords",
        "neptune-db:ListLoaderJobs",
        "neptune-db:ManageStatistics",
        "neptune-db:ReadDataViaQuery",
        "neptune-db:ResetDatabase",
        "neptune-db:StartLoaderJob",
        "neptune-db:WriteDataViaQuery"
      ],
      "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-ABCD1234EFGH5678IJKL90MNOP/*"
    }
  ]
}
```

------

## Esempio di policy che consente l'accesso alla gestione dei modelli Neptune ML
<a name="iam-auth-data-policy-example-ml"></a>

Questa policy garantisce l'accesso alle funzionalità di gestione dei modelli Neptune ML:

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Effect": "Allow",
      "Action": [
        "neptune-db:CancelMLDataProcessingJob",
        "neptune-db:CancelMLModelTrainingJob",
        "neptune-db:CancelMLModelTransformJob",
        "neptune-db:CreateMLEndpoint",
        "neptune-db:DeleteMLEndpoint",
        "neptune-db:GetMLDataProcessingJobStatus",
        "neptune-db:GetMLEndpointStatus",
        "neptune-db:GetMLModelTrainingJobStatus",
        "neptune-db:GetMLModelTransformJobStatus",
        "neptune-db:ListMLDataProcessingJobs",
        "neptune-db:ListMLEndpoints",
        "neptune-db:ListMLModelTrainingJobs",
        "neptune-db:ListMLModelTransformJobs",
        "neptune-db:StartMLDataProcessingJob",
        "neptune-db:StartMLModelTrainingJob",
        "neptune-db:StartMLModelTransformJob"
      ],
      "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-ABCD1234EFGH5678IJKL90MNOP/*"
    }
  ]
}
```

------

## Esempio di policy che concede l'accesso completo alle query
<a name="iam-auth-data-policy-example-full-query"></a>

La seguente policy concede l'accesso completo alle operazioni di query del grafo Neptune, ma non a funzionalità come il ripristino rapido, i flussi, lo strumento di caricamento in blocco, la gestione dei modelli Neptune ML e così via:

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Effect": "Allow",
      "Action": [
        "neptune-db:ReadDataViaQuery",
        "neptune-db:WriteDataViaQuery",
        "neptune-db:DeleteDataViaQuery",
        "neptune-db:GetEngineStatus",
        "neptune-db:GetQueryStatus",
        "neptune-db:CancelQuery"
      ],
      "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-ABCD1234EFGH5678IJKL90MNOP/*"
    }
  ]
}
```

------

## Esempio di policy che concede l'accesso completo solo alle query Gremlin
<a name="iam-auth-data-policy-example-full-gremlin-access"></a>

La seguente policy concede l'accesso completo alle operazioni di query del grafo Neptune utilizzando il linguaggio di query Gremlin, ma non alle query in altri linguaggi e non a funzionalità come il ripristino rapido, i flussi, lo strumento di caricamento in blocco, la gestione dei modelli Neptune ML e così via:

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Effect": "Allow",
      "Action": [
        "neptune-db:ReadDataViaQuery",
        "neptune-db:WriteDataViaQuery",
        "neptune-db:DeleteDataViaQuery",
        "neptune-db:GetEngineStatus",
        "neptune-db:GetQueryStatus",
        "neptune-db:CancelQuery"
      ],
      "Resource": [
        "arn:aws:neptune-db:us-east-1:123456789012:cluster-ABCD1234EFGH5678IJKL90MNOP/*"
      ],
      "Condition": {
        "StringEquals": {
           "neptune-db:QueryLanguage":"Gremlin"
        }
      }
    }
  ]
}
```

------

## Esempio di policy che concede l'accesso completo ad eccezione del ripristino rapido
<a name="iam-auth-data-policy-example-all-but-fast-reset"></a>

La seguente policy concede l'accesso completo a un cluster database Neptune ad eccezione dell'utilizzo del ripristino rapido:

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "neptune-db:*",
      "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-ABCD1234EFGH5678IJKL90MNOP/*"
    },
    {
      "Effect": "Deny",
      "Action": "neptune-db:ResetDatabase",
      "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-ABCD1234EFGH5678IJKL90MNOP/*"
    }
  ]
}
```

------

# Utilizzo di ruoli collegati ai servizi per Amazon Neptune
<a name="security-iam-service-linked-roles"></a>

[Amazon Neptune AWS Identity and Access Management utilizza ruoli collegati ai servizi (IAM).](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role) Un ruolo collegato ai servizi è un tipo di ruolo IAM univoco collegato direttamente a Neptune. I ruoli collegati ai servizi sono predefiniti da Neptune e includono tutte le autorizzazioni richieste dal servizio per chiamare altri servizi per tuo conto. AWS 

**Importante**  
Per alcune funzionalità di gestione, Amazon Neptune utilizza la tecnologia operativa condivisa con Amazon RDS. Questo include il *ruolo collegato ai servizi* e le autorizzazioni API di gestione.

Un ruolo collegato ai servizi semplifica l'uso di Neptune perché non sarà più necessario aggiungere manualmente le autorizzazioni necessarie. Neptune definisce le autorizzazioni dei relativi ruoli collegati ai servizi e, salvo diversamente definito, solo Neptune potrà assumere i propri ruoli. Le autorizzazioni definite includono la policy di trust e la policy delle autorizzazioni. Una policy delle autorizzazioni specifica non può essere collegata a un’altra entità IAM.

È possibile eliminare i ruoli solo dopo aver eliminato le risorse correlate. Questa procedura protegge le risorse di Neptune perché impedisce la rimozione involontaria delle autorizzazioni di accesso alle risorse.

****Per informazioni su altri servizi che supportano i ruoli collegati ai servizi, consulta [AWS Servizi che funzionano con IAM e cerca i servizi con Sì](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) nella colonna Service-Linked Role.**** Scegliere **Sì** in corrispondenza di un link per visualizzare la documentazione relativa al ruolo collegato al servizio per tale servizio.

## Autorizzazioni del ruolo collegato ai servizi per Neptune
<a name="service-linked-role-permissions"></a>

Neptune utilizza `AWSServiceRoleForRDS` il ruolo collegato ai servizi per consentire a Neptune e Amazon AWS RDS di chiamare i servizi per conto delle tue istanze di database. Ai fini dell'assunzione del ruolo `AWSServiceRoleForRDS`, il ruolo collegato ai servizi `rds.amazonaws.com`considera attendibile il servizio.

La policy delle autorizzazioni del ruolo consente a Neptune di completare le seguenti azioni sulle risorse specificate:
+ Operazioni su `ec2`:
  + `AssignPrivateIpAddresses`
  + `AuthorizeSecurityGroupIngress`
  + `CreateNetworkInterface`
  + `CreateSecurityGroup`
  + `DeleteNetworkInterface`
  + `DeleteSecurityGroup`
  + `DescribeAvailabilityZones`
  + `DescribeInternetGateways`
  + `DescribeSecurityGroups`
  + `DescribeSubnets`
  + `DescribeVpcAttribute`
  + `DescribeVpcs`
  + `ModifyNetworkInterfaceAttribute`
  + `RevokeSecurityGroupIngress`
  + `UnassignPrivateIpAddresses`
+ Operazioni su `sns`:
  + `ListTopic`
  + `Publish`
+ Operazioni su `cloudwatch`:
  + `PutMetricData`
  + `GetMetricData`
  + `CreateLogStream`
  + `PullLogEvents`
  + `DescribeLogStreams`
  + `CreateLogGroup`

**Nota**  
Per consentire a un'entità IAM (come un utente, un gruppo o un ruolo) di creare, modificare o eliminare un ruolo collegato al servizio è necessario configurare le relative autorizzazioni. Potrebbe essere visualizzato il messaggio di errore seguente:  
Unable to create the resource. (Impossibile creare la risorsa. Verify that you have permission to create service linked role. (Verifica di possedere le autorizzazioni necessarie per creare un ruolo collegato ai servizi.) Otherwise wait and try again later. (In caso contrario, attendi e riprova più tardi.  
Se viene visualizzato questo messaggio, assicurarsi che le autorizzazioni seguenti siano abilitate:   

```
{
    "Action": "iam:CreateServiceLinkedRole",
    "Effect": "Allow",
    "Resource": "arn:aws:iam::*:role/aws-service-role/rds.amazonaws.com/AWSServiceRoleForRDS",
    "Condition": {
        "StringLike": {
            "iam:AWSServiceName":"rds.amazonaws.com"
        }
    }
}
```
 Per ulteriori informazioni, consulta [Autorizzazioni del ruolo collegato ai servizi](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions) nella *Guida per l'utente di IAM*.

## Creazione di un ruolo collegato ai servizi per Neptune
<a name="create-service-linked-role"></a>

Non hai bisogno di creare manualmente un ruolo collegato ai servizi. Quando crei un'istanza o un cluster, Neptune crea il ruolo collegato ai servizi per te.

**Importante**  
Per ulteriori informazioni, consulta [Comparsa di un nuovo ruolo nell'account IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_roles.html#troubleshoot_roles_new-role-appeared) nella *Guida per l'utente di IAM*.

Se devi ricreare un ruolo collegato ai servizi che hai precedentemente eliminato, puoi utilizzare lo stesso processo per ricreare il ruolo nel tuo account. Quando crei un'istanza o un cluster, Neptune crea di nuovo il ruolo collegato ai servizi per te.

## Modifica di un ruolo collegato ai servizi per Neptune
<a name="edit-service-linked-role"></a>

Neptune non consente di modificare il ruolo collegato ai servizi `AWSServiceRoleForRDS`. Dopo avere creato un ruolo collegato al servizio, non sarà possibile modificarne il nome perché varie entità potrebbero farvi riferimento. È possibile tuttavia modificarne la descrizione utilizzando IAM. Per ulteriori informazioni, consulta la sezione [Modifica di un ruolo collegato ai servizi](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role) nella *Guida per l'utente di IAM*.

## Eliminazione di un ruolo collegato ai servizi per Neptune
<a name="delete-service-linked-role"></a>

Se non è più necessario utilizzare una funzionalità o un servizio che richiede un ruolo collegato al servizio, ti consigliamo di eliminare il ruolo. In questo modo non sarà più presente un'entità non utilizzata che non viene monitorata e gestita attivamente. Tuttavia, prima di poter eliminare il ruolo collegato ai servizi associato, devi eliminare tutte le istanze e tutti i cluster.

### Pulizia di un ruolo collegato ai servizi prima dell'eliminazione
<a name="delete-service-linked-role-cleanup"></a>

Prima di utilizzare IAM per eliminare un ruolo collegato ai servizi, devi innanzitutto verificare che il ruolo non abbia sessioni attive ed eliminare tutte le risorse utilizzate dal ruolo.

**Per verificare se il ruolo collegato ai servizi dispone di una sessione attiva nella console IAM**

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

1. Nel pannello di navigazione della console IAM seleziona **Ruoli**. Quindi, scegli il nome (non la casella di controllo) del ruolo `AWSServiceRoleForRDS`.

1. Nella pagina **Summary** (Riepilogo) per il ruolo selezionato, scegliere la scheda **Access Advisor (Consulente accessi)**.

1. Nella scheda **Access Advisor** (Consulente accessi), esamina l'attività recente per il ruolo collegato ai servizi.
**Nota**  
Se non si ha la certezza che Neptune stia utilizzando il ruolo `AWSServiceRoleForRDS`, è possibile provare a eliminarlo. Se il servizio sta utilizzando il ruolo, l’eliminazione non andrà a buon fine e potrai visualizzare le regioni in cui il ruolo viene utilizzato. Se il ruolo è in uso, prima di poterlo eliminare dovrai attendere il termine della sessione. Non puoi revocare la sessione per un ruolo collegato al servizio. 

Se desideri rimuovere il ruolo `AWSServiceRoleForRDS`, devi prima eliminare *tutti* i cluster e le istanze.

#### Eliminazione di tutte le istanze
<a name="delete-service-linked-role-instances"></a>

Utilizza una di queste procedure per eliminare ogni istanza.

**Per eliminare un’istanza (console)**

1. Aprire la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel riquadro di navigazione, scegliere **Instances (Istanze)**.

1. Nell'elenco **Instances (Istanze)**, scegliere l'istanza da eliminare.

1. Scegli **Instance actions** (Operazioni istanza) e quindi **Delete** (Elimina).

1. Se viene visualizzato il messaggio **Create final Snapshot? (Creare snapshot finale?)**, scegliere **Yes (Sì)** o **No**.

1. Se si sceglie **Yes (Sì)** nella fase precedente, in **Final snapshot name (Nome snapshot finale)** immettere il nome dell’ultimo snapshot.

1. Scegli **Elimina**.

**Per eliminare un'istanza AWS CLI**  
Consulta `[delete-db-instance](https://docs.aws.amazon.com/cli/latest/reference/neptune/delete-db-instance.html)` in *Riferimento ai comandi AWS CLI *.

**Per eliminare un’istanza (API)**  
Per informazioni, consulta `[DeleteDBInstance](&doc-domaiAPI_DeleteDBInstance.html)`.

#### Eliminazione di tutti i cluster
<a name="delete-service-linked-role-clusters"></a>

Utilizza una delle procedure seguenti per eliminare un singolo cluster, quindi ripeti la procedura per ogni cluster.

**Per eliminare un cluster (console)**

1. [Accedi alla console di AWS gestione e apri la console Amazon Neptune da casa. https://console.aws.amazon.com/neptune/](https://console.aws.amazon.com/neptune/home)

1. Nell'elenco **Clusters (Cluster)**, scegliere il cluster da eliminare.

1. Scegliere **Cluster Actions (Operazioni cluster)** e successivamente **Delete (Elimina)**.

1. Scegli **Elimina**.

**Per eliminare un cluster (CLI)**  
Consulta `[delete-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/neptune/delete-db-cluster.html)` in *Riferimento ai comandi AWS CLI *.

**Per eliminare un cluster (API)**  
Per informazioni, consultare `[DeleteDBCluster](API_DeleteDBCluster.html)`.

Per eliminare il ruolo collegato ai servizi `AWSServiceRoleForRDS`, puoi utilizzare la console IAM, l'interfaccia a riga di comando IAM o l'API IAM. Per ulteriori informazioni, consulta [Eliminazione del ruolo collegato al servizio](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role) nella *Guida per l’utente di IAM*.

# 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)

# Registrazione e monitoraggio dell'utilizzo e delle prestazioni in Amazon Neptune
<a name="security-monitoring"></a>

Amazon Neptune supporta vari metodi per il monitoraggio delle prestazioni e dell'utilizzo:
+ **Stato del cluster**: controlla lo stato del motore di database a grafo di un cluster Neptune. Per ulteriori informazioni, consulta [Controllo dello stato di un’istanza Neptune](access-graph-status.md).
+ **Amazon CloudWatch** — Neptune invia automaticamente le metriche e supporta anche gli CloudWatch allarmi. CloudWatch Per ulteriori informazioni, consulta [Monitoraggio di Neptune tramite Amazon CloudWatch](cloudwatch.md).
+ **File di log di audit**: puoi visualizzare, scaricare o controllare i file di log del database tramite la console. Per ulteriori informazioni, consulta [Utilizzo dei log di audit con i cluster Amazon Neptune](auditing.md).
+ **Pubblicazione dei log su Amazon CloudWatch Logs**: puoi configurare un cluster Neptune DB per pubblicare i dati dei log di controllo in un gruppo di log in Amazon Logs. CloudWatch Con CloudWatch Logs, puoi eseguire analisi in tempo reale dei dati di log, utilizzarli CloudWatch per creare allarmi e visualizzare metriche e utilizzare CloudWatch Logs per archiviare i record di log in uno storage altamente durevole. Per ulteriori informazioni, consulta [Tronchi di Nettuno CloudWatch ](cloudwatch-logs.md).
+ **AWS CloudTrail**— Neptune supporta la registrazione delle API utilizzando. CloudTrail Per ulteriori informazioni, consulta [Registrazione delle chiamate API Amazon Neptune con AWS CloudTrail](cloudtrail.md).
+ **Tagging**: usa i tag per aggiungere metadati alle risorse Neptune e monitorare l'utilizzo in base a tag. Per ulteriori informazioni, consulta [Etichettare le risorse di Amazon Neptune](tagging.md).

# Amazon Neptune e endpoint VPC di interfaccia ()AWS PrivateLink
<a name="vpc-interface-endpoints"></a>

Puoi utilizzarlo [AWS PrivateLink](https://aws.amazon.com/privatelink/)per creare una connessione privata tra il tuo VPC e gli endpoint dell'API Amazon Neptune. Puoi accedere alle operazioni API di Amazon Neptune come se fossero nel tuo VPC, senza l'uso di un gateway Internet, un dispositivo NAT, una connessione VPN o una connessione. Il traffico tra il tuo VPC e Amazon Neptune rimane all'interno della rete Amazon.

Amazon Neptune condivide l'infrastruttura API con Amazon Relational Database Service. *Per configurare gli endpoint VPC di interfaccia per Amazon Neptune, segui le istruzioni nell'[API Amazon RDS e interfacci gli endpoint VPC](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/vpc-interface-endpoints.html) () nella Guida per l'utente di Amazon Aurora.AWS PrivateLink*

# Considerazioni sulla conformità per Amazon Neptune
<a name="neptune-compliance"></a>

Per sapere se un Servizio AWS programma rientra nell'ambito di specifici programmi di conformità, consulta la sezione Scope by Compliance Program [Servizi AWS in Scope by Compliance Program](https://aws.amazon.com/compliance/services-in-scope/)Servizi AWS e scegli che ti interessa. Per informazioni generali, consulta Programmi di [AWS conformità Programmi](https://aws.amazon.com/compliance/programs/) di di .

È possibile scaricare report di audit di terze parti utilizzando AWS Artifact. Per ulteriori informazioni, consulta [Scaricamento dei report in AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html) .

La vostra responsabilità di conformità durante l'utilizzo Servizi AWS è determinata dalla sensibilità dei dati, dagli obiettivi di conformità dell'azienda e dalle leggi e dai regolamenti applicabili. Per ulteriori informazioni sulla responsabilità di conformità durante l'utilizzo Servizi AWS, consulta la [Documentazione AWS sulla sicurezza](https://docs.aws.amazon.com/security/).

# Creazione di implementazioni Amazon Neptune resilienti e resistenti ai disastri
<a name="disaster-recovery-resiliency"></a>

 AWS L' AWS infrastruttura globale è costruita attorno a regioni e zone di disponibilità. AWS Le regioni forniscono più zone di disponibilità fisicamente separate e isolate, collegate con reti a bassa latenza, ad alto throughput e altamente ridondanti. Con le zone di disponibilità, è possibile progettare e gestire applicazioni e database che eseguono il failover automatico tra zone di disponibilità senza interruzioni. Le zone di disponibilità sono più disponibili, tolleranti ai guasti e scalabili rispetto alle infrastrutture tradizionali a data center singolo o multiplo. 

Un cluster database Amazon Neptune può essere creato solo in un Amazon VPC dotato di almeno due sottoreti in almeno due zone di disponibilità. Distribuendo le istanze cluster su almeno due zone di disponibilità, Neptune contribuisce a garantire che siano disponibili istanze nel cluster database nell'improbabile caso di errore in una zona. Il volume del cluster database Neptune si estende sempre su tre zone di disponibilità per fornire spazio di archiviazione durevole con minori possibilità di perdita di dati.

[Per ulteriori informazioni su AWS regioni e zone di disponibilità, consulta Global Infrastructure.AWS](https://aws.amazon.com/about-aws/global-infrastructure/)