

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 i segreti delle password al cluster Amazon DocumentDB quando utilizzano IAM. roles/users Invece, le connessioni dei client vengono autenticate AWS STS utilizzando token di sicurezza temporanei. Non-administrative gli utenti e le applicazioni possono ora utilizzare lo stesso ARN di identità IAM quando si connettono 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 Amazon DocumentDB. L'autenticazione IAM tramite gli ARN di identità IAM non è supportata per l'utente primario 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 AWS tipi di calcolo per l'autenticazione su Amazon DocumentDB utilizzando AWS IAM](#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 `$external` database. 

**Creazione di un utente **

Connettiti 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 ruolo IAM **

Modificare 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" } ]
);
```

**Eliminazione di un utente o 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, istanza Amazon EC2). Non è necessario passare specificamente alcuna credenziale per l'autenticazione utilizzando il meccanismo. `MONGODB-AWS` Se utilizzi driver MongoDB che supportano il meccanismo di `MONGODB-AWS` autenticazione, i driver hanno anche la capacità di recuperare le credenziali del ruolo IAM dall'istanza di calcolo (ad esempio, Amazon EC2, Lambda function e altri). 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 su 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 con 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 un `MONGODB-AWS` meccanismo passando manualmente una chiave di accesso e una chiave segreta (di un utente IAM) per dimostrare l'autenticazione con 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 il ruolo IAM collegato all'ambiente) per dimostrare l'autenticazione con Amazon DocumentDB.

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

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

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

Amazon EC2 utilizza le seguenti variabili di ambiente. Se hai un ruolo IAM collegato all'istanza EC2 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 [ Utilizzo delle variabili di ambiente Lambda nella Developer Guide. ](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html) *AWS Lambda *

**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 dal tuo codice utilizzando la chiamata SDK per: AWS `AssumeRoleWithWebIdentity`
+ Ometti 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 nell'auditing, consulta. [Verifica degli eventi di Amazon DocumentDB](event-auditing.md)

**Utilizzo delle metriche di Amazon CloudWatch **

**`StsGetCallerIdentityCalls`**: questa metrica mostra quante `GetCallerIdentity` chiamate sta effettuando un'istanza Amazon DocumentDB all'endpoint Servizio di token di sicurezza AWS regionalized ().AWS STS Fai riferimento alle specifiche di `MONGODB-AWS` autenticazione per spiegare 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 Amazon DocumentDB.

L'autenticazione IAM dipende da (). Servizio di token di sicurezza AWS AWS STS Se ricevi un'eccezione di AWS STS limitazione quando usi l'autenticazione IAM, riduci la velocità di connessione.

Per le quote IAM, consulta [ IAM e le 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 Node.js i driver precedenti alla versione 6.13.1, che attualmente non sono supportati dall'autenticazione dell'identità IAM per Amazon DocumentDB. Node.js i driver e gli strumenti che utilizzano Node.js driver (ad esempio, mongosh) devono essere aggiornati per utilizzare la versione 6.13.1 o successiva. Node.js 

## 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 gli utenti IAM e i ruoli IAM ](https://github.com/aws-samples/amazon-documentdb-samples/tree/master/samples/iam_user_sample_code)
+ [Password-less autenticazione ad Amazon DocumentDB utilizzando i ruoli IAM ](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 pymongo-auth-aws».AWS Come posso risolvere questo problema? **

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

`pip install 'pymongo[aws]'`

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

**La mia connessione si interromperà quando scadono le 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 in presenza di credenziali IAM rotate/expire, la connessione non si interromperà né diventerà obsoleta.