

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

# Autenticazione tramite identità IAM
<a name="iam-identity-auth"></a>

Gli utenti e le applicazioni di Amazon DocumentDB possono utilizzare utenti e ruoli IAM per autenticarsi in un cluster Amazon DocumentDB. L'autenticazione IAM di Amazon DocumentDB è un metodo di autenticazione senza password. Inoltre, le applicazioni client non inviano le password segrete al cluster Amazon DocumentDB quando utilizzano ruoli/utenti IAM. Le connessioni client vengono invece autenticate utilizzando token di sicurezza temporanei AWS STS . Gli utenti e le applicazioni non amministrativi possono ora utilizzare lo stesso ARN di identità IAM per la connessione a diversi cluster Amazon DocumentDB e altri servizi. AWS 

Puoi anche scegliere di utilizzare l'autenticazione basata su password e IAM per autenticare utenti e applicazioni in un cluster Amazon DocumentDB. L'autenticazione IAM è disponibile solo nella versione 5.0 del cluster basato su istanze di Amazon DocumentDB. L'autenticazione IAM tramite identità IAM non ARNs è supportata per l'utente principale di Amazon DocumentDB.

**Nota**  
L'utente principale può essere autenticato solo utilizzando l'autenticazione basata su password esistente.

**Topics**
+ [Guida introduttiva all'autenticazione tramite utenti e ruoli IAM](#iam-identity-auth-get-started)
+ [Configurazione dei tipi di AWS elaborazione per l'autenticazione su Amazon DocumentDB tramite IAM AWS](#iam-identity-auth-compute-types)
+ [Monitoraggio delle richieste di autenticazione IAM](#iam-identity-auth-monitoring)
+ [Utilizzo dell'autenticazione IAM](#iam-identity-auth-using)
+ [Driver che supportano IAM](#iam-identity-drivers)
+ [Domande frequenti sull'autenticazione dell'identità IAM](#iam-identity-auth-faq)

## Guida introduttiva all'autenticazione tramite utenti e ruoli IAM
<a name="iam-identity-auth-get-started"></a>

Gli utenti e i ruoli di Amazon DocumentDB con identità IAM vengono creati e gestiti in un database. `$external` 

**Creazione di un utente**

Connect come utente principale, quindi crea un utente e un ruolo IAM:

```
use $external;
db.createUser(
    {
        user: "arn:aws:iam::123456789123:user/iamuser",
        mechanisms: ["MONGODB-AWS"],
        roles: [ { role: "readWrite", db: "readWriteDB" } ]
    }
);
```

In alternativa, aggiungi un utente Amazon DocumentDB utilizzando un ruolo IAM:

```
use $external;
db.createUser(
    {
        user: "arn:aws:iam::123456789123:role/iamrole",
        mechanisms: ["MONGODB-AWS"],
        roles: [ { role: "readWrite", db: "readWriteDB" } ]
    }
);
```

**Modifica di un utente o di un ruolo IAM**

Modifica un utente IAM esistente:

```
use $external;
db.updateUser(
  "arn:aws:iam::123456789123:user/iamuser",
  { 
    roles: [ { role: "read", db: "readDB" } ] 
  }
);
```

Modifica un ruolo IAM esistente:

```
use $external;
db.updateUser(
  "arn:aws:iam::123456789123:role/iamrole",
  { 
    roles: [ { role: "read", db: "readDB" } ] 
  }
);
```

Per concedere o revocare ruoli a un utente IAM:

```
use $external;
db.grantRolesToUser(
  "arn:aws:iam::123456789123:user/iamuser", 
  [ { db: "admin", role: "readWriteAnyDatabase" } ]
);
```

```
use $external;
db.revokeRolesFromUser(
  "arn:aws:iam::123456789123:user/iamuser", 
  [ { db: "admin", role: "readWriteAnyDatabase" } ]
);
```

Per concedere o revocare ruoli da un ruolo IAM:

```
use $external;
db.grantRolesToUser(
  "arn:aws:iam::123456789123:user/iamrole", 
  [ { db: "admin", role: "readWriteAnyDatabase" } ]
);
```

```
use $external;
db.revokeRolesFromUser(
  "arn:aws:iam::123456789123:user/iamrole", 
  [ { db: "admin", role: "readWriteAnyDatabase" } ]
);
```

**Eliminare un utente o un ruolo IAM**

Per eliminare un utente IAM esistente:

```
use $external;
db.dropUser("arn:aws:iam::123456789123:user/iamuser");
```

Per eliminare un ruolo IAM esistente:

```
use $external;
db.dropUser("arn:aws:iam::123456789123:role/iamrole");
```

**Configura un URI di connessione per l'autenticazione tramite AWS IAM**

Per l'autenticazione tramite AWS IAM, utilizza i seguenti parametri URI: `authSource` as `$external` e `authMechanism` as. `MONGODB-AWS` Se utilizzi un utente IAM, i campi nome utente e password vengono sostituiti rispettivamente da una chiave di accesso e una chiave segreta. Se stai assumendo un ruolo IAM, collegato all'ambiente in cui ti trovi (ad esempio, AWS Lambda funzione, EC2 istanza Amazon). Non è necessario fornire specificamente alcuna credenziale durante l'autenticazione utilizzando il meccanismo. `MONGODB-AWS` Se utilizzi driver MongoDB che supportano `MONGODB-AWS` il meccanismo di autenticazione, i driver hanno anche la possibilità di recuperare le credenziali del ruolo IAM dall'istanza di calcolo (ad esempio, Amazon EC2, la funzione Lambda e altre). L'esempio seguente utilizza una shell mongo per l'autenticazione `MONGODB-AWS` tramite il passaggio manuale di una chiave di accesso e una chiave segreta (di un utente IAM) per dimostrare l'autenticazione contro Amazon DocumentDB.

L'esempio seguente utilizza il codice Python per l'autenticazione utilizzando `MONGODB-AWS` senza passare esplicitamente alcuna credenziale (utilizzando un ruolo IAM collegato all'ambiente) per dimostrare l'autenticazione contro Amazon DocumentDB.

```
##Create a MongoDB client, open a connection to Amazon DocumentDB using an IAM role
    client = pymongo.MongoClient(‘mongodb://<DocDBEndpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false&authSource=%24external&authMechanism=MONGODB-AWS')
```

L'esempio seguente utilizza una shell mongo per l'autenticazione utilizzando il `MONGODB-AWS` meccanismo passando manualmente una chiave di accesso e una chiave segreta (di un utente IAM) per dimostrare l'autenticazione contro Amazon DocumentDB.

```
$ mongo 'mongodb://<access_key>:<secret_key>@<cluster_endpoint>:<db_port>/test?authSource=%24external&authMechanism=MONGODB-AWS'
```

L'esempio seguente utilizza una shell mongo per l'autenticazione utilizzando `MONGODB-AWS` senza passare esplicitamente alcuna credenziale (utilizzando IAM Role collegato all'ambiente) per dimostrare l'autenticazione contro Amazon DocumentDB.

```
$ mongo 'mongodb://<cluster_endpoint>:<db_port>/test?authSource=%24external&authMechanism=MONGODB-AWS'
```

## Configurazione dei tipi di AWS elaborazione per l'autenticazione su Amazon DocumentDB tramite IAM AWS
<a name="iam-identity-auth-compute-types"></a>

**Utilizzo di Amazon EC2/AWS Lambda/AWS Fargate**

Amazon EC2 utilizza le seguenti variabili di ambiente. Se hai un ruolo IAM collegato all' EC2 istanza o un ruolo IAM di esecuzione associato a una funzione Lambda o a un task Amazon ECS, queste variabili vengono compilate automaticamente e il driver può recuperare questi valori dall'ambiente:

```
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SESSION_TOKEN
```

Per ulteriori informazioni sulle variabili di ambiente, consulta [Using Lambda environment variables](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html) nella *AWS Lambda Developer* Guide.

**Utilizzo di Amazon EKS**

L'assegnazione di un ruolo ai tuoi pod Amazon Elastic Kubernetes Service (Amazon EKS) configurerà automaticamente le seguenti due variabili di ambiente:

```
AWS_WEB_IDENTITY_TOKEN_FILE - path of web identity token file
AWS_ROLE_ARN - Name of IAM role to connect with
```

Con l'aiuto di queste variabili, assumi manualmente il ruolo del codice utilizzando la chiamata SDK per: AWS `AssumeRoleWithWebIdentity`
+ Omettete il parametro. `ProviderID`
+ Trova il valore del `WebIdentityToken` parametro nel file descritto nella variabile di `AWS_WEB_IDENTITY_TOKEN_FILE` ambiente.

Per ulteriori informazioni su Amazon EKS, consulta [What is Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) nella *Amazon EKS User Guide*.

## Monitoraggio delle richieste di autenticazione IAM
<a name="iam-identity-auth-monitoring"></a>

**Utilizzo del controllo di Amazon DocumentDB**

Vai alla cartella dei log di controllo in Amazon CloudWatch e utilizza diversi modelli di ricerca per ottenere i log per l'autenticazione IAM. Ad esempio, utilizza `{ $.param.mechanism = "MONGODB-AWS" }` come modello di ricerca «Cerca in tutti i flussi di log».

Per ulteriori informazioni sugli eventi supportati nel controllo, consulta. [Controllo degli eventi di Amazon DocumentDB](event-auditing.md)

**Utilizzo dei CloudWatch parametri di Amazon**

**`StsGetCallerIdentityCalls`**: questa metrica mostra quante `GetCallerIdentity` chiamate effettua un'istanza di Amazon DocumentDB all'endpoint AWS Security Token Service AWS STS regionalized (). Fai riferimento alle specifiche di `MONGODB-AWS` autenticazione per scoprire perché le istanze di database devono effettuare chiamate STS. `GetCallerIdentity`

## Utilizzo dell'autenticazione IAM
<a name="iam-identity-auth-using"></a>

Se non desideri gestire il nome utente e la password nel tuo database, puoi utilizzare l'autenticazione IAM. L'autenticazione IAM è disponibile solo nella versione 5.0 del cluster basato su istanze di Amazon DocumentDB.

L'autenticazione IAM dipende dal servizio STS. Ti consigliamo di valutare se è possibile ridurre la velocità di connessione quando utilizzi l'autenticazione IAM per la connessione e ottieni un'eccezione di limitazione STS.

*Per le quote IAM, consulta [IAM e AWS STS quote](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) nella IAM User Guide.*

## Driver che supportano IAM
<a name="iam-identity-drivers"></a>

I driver che supportano Amazon DocumentDB 5.0 e il meccanismo di `MONGODB-AWS` autenticazione devono funzionare con l'implementazione dell'autenticazione IAM in Amazon DocumentDB. 

**Importante**  
Esiste una limitazione nota con i driver Node.js precedenti alla versione 6.13.1, che attualmente non sono supportati dall'autenticazione dell'identità IAM per Amazon DocumentDB. I driver e gli strumenti Node.js che utilizzano il driver Node.js (ad esempio, mongosh) devono essere aggiornati per utilizzare il driver Node.js versione 6.13.1 o successiva.

## Domande frequenti sull'autenticazione dell'identità IAM
<a name="iam-identity-auth-faq"></a>

**Ci sono esempi a cui posso fare riferimento?**

Consulta queste pagine per esempi di casi d'uso e configurazioni:
+ [In che modo gli utenti umani possono autenticarsi su Amazon DocumentDB utilizzando IAM Users e IAM Roles](https://github.com/aws-samples/amazon-documentdb-samples/tree/master/samples/iam_user_sample_code)
+ [Autenticazione senza password su Amazon DocumentDB utilizzando IAM Roles](https://github.com/aws-samples/amazon-documentdb-samples/tree/master/samples/iam_role_sample_code)

**Ricevo un errore durante l'utilizzo del mio driver Python: «pymongo.errors. ConfigurationError: MONGODB: l'autenticazione richiede».AWS pymongo-auth-aws Come posso risolvere questo problema?**

Assicurati di utilizzare la seguente istruzione durante l'installazione del driver Python con l'autenticazione IAM:

`pip install 'pymongo[aws]'`

Questo installerà le AWS dipendenze aggiuntive necessarie per il funzionamento dell'autenticazione IAM.

**La mia connessione si interromperà alla scadenza delle credenziali temporanee del mio ruolo IAM?**

 No, le credenziali IAM temporanee vengono utilizzate solo per stabilire la connessione e l'autenticazione. Quindi tutte le ulteriori autorizzazioni avvengono nel cluster Amazon DocumentDB. Anche se le credenziali IAM ruotano o scadono, la connessione non si interromperà né diventerà obsoleta.