

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

# Configurazione delle policy di accesso per Performance Insights
<a name="USER_PerfInsights.access-control"></a>

Per accedere a Performance Insights, un principale deve disporre delle autorizzazioni appropriate di AWS Identity and Access Management (IAM).

**Nota**  
Per utilizzare Performance Insights con una chiave gestita dal cliente, concedi agli utenti le `kms:GenerateDataKey` autorizzazioni `kms:Decrypt` e per la tua chiave. AWS AWS KMS 

Accedi a Performance Insights utilizzando questi metodi:
+ [Allega la policy `AmazonRDSPerformanceInsightsReadOnly` gestita per l'accesso in sola lettura](USER_PerfInsights.access-control.managed-policy.md)
+ [Allega la policy `AmazonRDSPerformanceInsightsFullAccess` gestita per l'accesso a tutte le operazioni dell'API Performance Insights](USER_PerfInsights.access-control.FullAccess-managed-policy.md)
+ [Crea una policy IAM personalizzata con autorizzazioni specifiche](USER_PerfInsights.access-control.custom-policy.md)
+ [Configurare le AWS KMS autorizzazioni per i dati crittografati di Performance Insights](USER_PerfInsights.access-control.cmk-policy.md)
+ [Configura un accesso granulare utilizzando autorizzazioni a livello di risorsa](USER_PerfInsights.access-control.dimensionAccess-policy.md)
+ [Utilizza il controllo degli accessi basato su tag per gestire le autorizzazioni tramite tag di risorse](USER_PerfInsights.access-control.tag-based-policy.md)

# Collegamento della policy AmazonRDSPerformanceInsightsReadOnly a un principale IAM
<a name="USER_PerfInsights.access-control.managed-policy"></a>

`AmazonRDSPerformanceInsightsReadOnly`è una policy AWS gestita che garantisce l'accesso a tutte le operazioni di sola lettura dell'API Amazon RDS Performance Insights. 

Se ti colleghi `AmazonRDSPerformanceInsightsReadOnly` a un set di autorizzazioni o a un ruolo, devi allegare anche le seguenti autorizzazioni: CloudWatch
+ `GetMetricStatistics`
+ `ListMetrics`
+ `GetMetricData`

Con queste autorizzazioni, il destinatario può utilizzare Performance Insights con altre funzionalità della console.

 Per ulteriori informazioni sulle CloudWatch autorizzazioni, consulta [Amazon CloudWatch permissions reference](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/permissions-reference-cw.html).

Per ulteriori informazioni su `AmazonRDSPerformanceInsightsReadOnly`, consultare [AWS politica gestita: Amazon RDSPerformance InsightsReadOnly](rds-security-iam-awsmanpol.md#rds-security-iam-awsmanpol-AmazonRDSPerformanceInsightsReadOnly).

# Collegamento della policy AmazonRDSPerformanceInsightsFullAccess a un principale IAM
<a name="USER_PerfInsights.access-control.FullAccess-managed-policy"></a>

`AmazonRDSPerformanceInsightsFullAccess`è una policy AWS gestita che garantisce l'accesso a tutte le operazioni dell'API Amazon RDS Performance Insights.

Se ti colleghi `AmazonRDSPerformanceInsightsFullAccess` a un set di autorizzazioni o a un ruolo, devi allegare anche le seguenti CloudWatch autorizzazioni:
+ `GetMetricStatistics`
+ `ListMetrics`
+ `GetMetricData`

Con queste autorizzazioni, il destinatario può utilizzare Performance Insights con altre funzionalità della console.

 Per ulteriori informazioni sulle CloudWatch autorizzazioni, consulta [Amazon CloudWatch permissions reference](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/permissions-reference-cw.html).

Per ulteriori informazioni su `AmazonRDSPerformanceInsightsFullAccess`, consultare [AWS politica gestita: Amazon RDSPerformance InsightsFullAccess](rds-security-iam-awsmanpol.md#rds-security-iam-awsmanpol-AmazonRDSPerformanceInsightsFullAccess).

# Creazione di una policy IAM personalizzata per Approfondimenti sulle prestazioni
<a name="USER_PerfInsights.access-control.custom-policy"></a>

Per gli utenti che non dispongono della policy `AmazonRDSPerformanceInsightsReadOnly` o `AmazonRDSPerformanceInsightsFullAccess`, è possibile fornire l’accesso a Approfondimenti sulle prestazioni creando o modificando una policy IAM gestita dall’utente. Quando si collega la policy a un set di autorizzazioni o un ruolo, il destinatario può utilizzare Performance Insights.

**Per creare una policy personalizzata**

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel riquadro di navigazione, scegli **Policy**.

1. Scegli **Create Policy** (Crea policy).

1. Nella pagina **Crea policy**, seleziona l’opzione **JSON**.

1. Copiare e incollare il testo fornito nella sezione del *documento di policy JSON* nella *Guida di riferimento sulle policy gestite da AWS * per la policy [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSPerformanceInsightsReadOnly.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSPerformanceInsightsReadOnly.html) o [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSPerformanceInsightsFullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSPerformanceInsightsFullAccess.html).

1. Scegliere **Esamina policy**.

1. Specifica un nome per la policy e, facoltativamente, una descrizione e quindi scegli **Crea policy**.

Ora è possibile collegare la policy a un set di autorizzazioni o un ruolo. La seguente procedura presuppone che si disponga già di un utente disponibile allo scopo.

**Per collegare la policy a un utente**

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione, seleziona **Utenti**.

1. Seleziona un utente esistente dall'elenco.
**Importante**  
Per utilizzare Performance Insights, l'utente deve avere accesso a Amazon RDS nonché alla policy personalizzata. Ad esempio, la policy predefinita `AmazonRDSPerformanceInsightsReadOnly` concede l'accesso in sola lettura ad Amazon RDS. Per ulteriori informazioni, consulta [Gestione dell’accesso tramite policy](UsingWithRDS.IAM.md#security_iam_access-manage).

1. Nella pagina **Summary (Riepilogo)**, scegli **Add permissions (Aggiungi autorizzazioni)**.

1. Scegli **Attach existing policies directly (Collega direttamente le policy esistenti)**. In **Cerca** digita i primi caratteri del nome della policy, come mostrato nella seguente immagine.   
![\[Scelta di una policy\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/images/perf_insights_attach_iam_policy.png)

1. Scegli la policy e quindi seleziona **Next: Review (Successivo: Rivedi)**.

1. Scegli **Add Permissions (Aggiungi autorizzazioni)**.

# Modifica di una AWS KMS politica per Performance Insights
<a name="USER_PerfInsights.access-control.cmk-policy"></a>

Performance Insights utilizza an AWS KMS key per crittografare i dati sensibili. Quando abiliti Performance Insights mediante l'API o la console, sono disponibili le seguenti opzioni:
+ Scegli l'impostazione predefinita Chiave gestita da AWS.

  Amazon RDS lo utilizza Chiave gestita da AWS per la tua nuova istanza DB. Amazon RDS crea una Chiave gestita da AWS per il tuo Account AWS. Il tuo Account AWS ha un Amazon RDS diverso Chiave gestita da AWS per ognuno Regione AWS.
+ Scegli una chiave gestita dal cliente.

  Se si specifica una chiave gestita dal cliente, gli utenti dell'account che chiamano l'API Performance Insights necessitano delle autorizzazioni `kms:Decrypt` e `kms:GenerateDataKey` per la chiave KMS. È possibile configurare queste autorizzazioni mediante le policy IAM. Tuttavia, è consigliabile gestire queste autorizzazioni mediante la policy della chiave KMS. Per ulteriori informazioni, consulta [Policy delle chiavi in AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) nella *Guida per gli sviluppatori di AWS Key Management Service *. 

**Example**  
Il seguente esempio mostra come aggiungere istruzioni alla policy della chiave KMS. Queste istruzioni consentono l'accesso a Performance Insights. A seconda della modalità di utilizzare la chiave KMS, potrebbe essere necessario modificare alcune restrizioni. Prima di aggiungere istruzioni alle policy, ai criteri, rimuovi tutti i commenti.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id" : "your-policy",
    "Statement" : [ 
        {
            "Sid" : "AllowViewingRDSPerformanceInsights",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::444455556666:role/Role1"
                ]
                },
             "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey"
                ],
            "Resource": "*",
            "Condition" : {
            "StringEquals" : {
                "kms:ViaService" : "rds.us-east-1.amazonaws.com"
                },
            "ForAnyValue:StringEquals": {
                "kms:EncryptionContext:aws:pi:service": "rds",
                "kms:EncryptionContext:service": "pi",
                "kms:EncryptionContext:aws:rds:db-id": "db-AAAAABBBBBCCCCDDDDDEEEEE"
                }
            }
        }
    ]
}
```

## In che modo Performance Insights utilizza la chiave gestita dal AWS KMS cliente
<a name="USER_PerfInsights.access-control.PI-using-KMS-cmk-policy"></a>

La funzionalità Performance Insights utilizza una chiave gestita dal cliente per crittografare i dati sensibili. Quando attivi la funzionalità Performance Insights, puoi specificare una chiave AWS KMS tramite l'API. Performance Insights crea AWS KMS autorizzazioni su questa chiave. Utilizza la chiave ed esegue le operazioni necessarie per elaborare i dati sensibili. I dati sensibili includono campi come utente, database, applicazione e testo di query SQL. La funzionalità Performance Insights garantisce che i dati rimangano crittografati mentre sono sia in transito che inattivi.

## Come funziona Performance Insights con IAM AWS KMS
<a name="USER_PerfInsights.access-control.PI-work-with-kms"></a>

IAM concede autorizzazioni a persone specifiche APIs. Performance Insights ha il seguente pubblico APIs, che puoi limitare utilizzando le policy IAM:
+ `DescribeDimensionKeys`
+ `GetDimensionKeyDetails`
+ `GetResourceMetadata`
+ `GetResourceMetrics`
+ `ListAvailableResourceDimensions`
+ `ListAvailableResourceMetrics`

Puoi utilizzare le seguenti richieste API per recuperare i dati sensibili.
+ `DescribeDimensionKeys`
+ `GetDimensionKeyDetails`
+ `GetResourceMetrics`

Quando utilizzi l'API per recuperare i dati sensibili, la funzionalità Approfondimenti sulle prestazioni usa le credenziali del chiamante. Questo controllo garantisce che l'accesso ai dati sensibili sia limitato a coloro che hanno accesso alla chiave KMS.

Quando le chiami APIs, hai bisogno delle autorizzazioni per chiamare l'API tramite la policy IAM e delle autorizzazioni per richiamare l'`kms:decrypt`azione tramite la AWS KMS policy chiave.

L'API `GetResourceMetrics` può restituire dati sensibili e non sensibili. I parametri della richiesta determinano se la risposta deve includere dati sensibili. L'API restituisce dati sensibili quando la richiesta include una dimensione sensibile nei parametri del filtro o nei parametri di raggruppamento. 

Per ulteriori informazioni sulle dimensioni che puoi utilizzare con l'`GetResourceMetrics`API, consulta. [DimensionGroup](https://docs.aws.amazon.com/performance-insights/latest/APIReference/API_DimensionGroup.html)

**Example Esempi**  
L'esempio seguente richiede i dati sensibili per il gruppo `db.user`:  

```
POST / HTTP/1.1
Host: <Hostname>
Accept-Encoding: identity
X-Amz-Target: PerformanceInsightsv20180227.GetResourceMetrics
Content-Type: application/x-amz-json-1.1
User-Agent: <UserAgentString>
X-Amz-Date: <Date> 
Authorization: AWS4-HMAC-SHA256 Credential=<Credential>, SignedHeaders=<Headers>, Signature=<Signature>
Content-Length: <PayloadSizeBytes>
{
  "ServiceType": "RDS",
  "Identifier": "db-ABC1DEFGHIJKL2MNOPQRSTUV3W",
  "MetricQueries": [
    {
      "Metric": "db.load.avg",
      "GroupBy": {
        "Group": "db.user",
        "Limit": 2
      }
    }
  ],
  "StartTime": 1693872000,
  "EndTime": 1694044800,
  "PeriodInSeconds": 86400
}
```

**Example**  
L'esempio seguente richiede i dati non sensibili per la metrica `db.load.avg`:  

```
POST / HTTP/1.1
Host: <Hostname>
Accept-Encoding: identity
X-Amz-Target: PerformanceInsightsv20180227.GetResourceMetrics
Content-Type: application/x-amz-json-1.1
User-Agent: <UserAgentString>
X-Amz-Date: <Date> 
Authorization: AWS4-HMAC-SHA256 Credential=<Credential>, SignedHeaders=<Headers>, Signature=<Signature>
Content-Length: <PayloadSizeBytes>
{
    "ServiceType": "RDS",
    "Identifier": "db-ABC1DEFGHIJKL2MNOPQRSTUV3W",
    "MetricQueries": [
        {
            "Metric": "db.load.avg"
        }
    ],
    "StartTime": 1693872000,
    "EndTime": 1694044800,
    "PeriodInSeconds": 86400
}
```

# Concessione dell’accesso granulare per Approfondimenti sulle prestazioni
<a name="USER_PerfInsights.access-control.dimensionAccess-policy"></a>

Il controllo granulare dell’accesso offre ulteriori modi per controllare l’accesso a Approfondimenti sulle prestazioni. Questo controllo dell’accesso può consentire o negare l’accesso alle singole dimensioni e alle azioni `GetResourceMetrics`, `DescribeDimensionKeys` e `GetDimensionKeyDetails` di Approfondimenti sulle prestazioni. Per utilizzare l’accesso granulare, specificare le dimensioni nella policy IAM utilizzando le chiavi di condizione. La valutazione dell’accesso segue la logica di valutazione della policy IAM. Per ulteriori informazioni, consulta [Logica di valutazione delle policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html) nella *Guida per l’utente di IAM*. Se l’istruzione della policy IAM non specifica alcuna dimensione, l’istruzione controlla l’accesso a tutte le dimensioni per l’azione specificata. Per l’elenco delle dimensioni disponibili, consulta [https://docs.aws.amazon.com/performance-insights/latest/APIReference/API_DimensionGroup.html](https://docs.aws.amazon.com/performance-insights/latest/APIReference/API_DimensionGroup.html).

Per determinare a quali dimensioni le credenziali sono autorizzate ad accedere, utilizzare il parametro `AuthorizedActions` in `ListAvailableResourceDimensions` e specificare l’azione. I valori consentiti per `AuthorizedActions` sono:
+ `GetResourceMetrics`
+ `DescribeDimensionKeys`
+ `GetDimensionKeyDetails`

Ad esempio, se si specifica `GetResourceMetrics` per il parametro `AuthorizedActions`, `ListAvailableResourceDimensions` restituisce l’elenco delle dimensioni a cui l’azione `GetResourceMetrics` è autorizzata ad accedere. Se si specificano più azioni nel parametro `AuthorizedActions`, `ListAvailableResourceDimensions` restituisce un’intersezione di dimensioni a cui tali azioni sono autorizzate ad accedere.

**Example**  
L’esempio seguente fornisce l’accesso alle dimensioni specificate per le azioni `GetResourceMetrics` e `DescribeDimensionKeys`.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowToDiscoverDimensions",
            "Effect": "Allow",
            "Action": [
                "pi:ListAvailableResourceDimensions"
            ],
            "Resource": [
                "arn:aws:pi:us-east-1:123456789012:metrics/rds/db-ABC1DEFGHIJKL2MNOPQRSTUV3W"
            ]
        },
        {
            "Sid": "SingleAllow",
            "Effect": "Allow",
            "Action": [
                "pi:GetResourceMetrics",
                "pi:DescribeDimensionKeys"
            ],
            "Resource": [
                "arn:aws:pi:us-east-1:123456789012:metrics/rds/db-ABC1DEFGHIJKL2MNOPQRSTUV3W"
            ],
            "Condition": {
                "ForAllValues:StringEquals": {
                    "pi:Dimensions": [
                        "db.sql_tokenized.id",
                        "db.sql_tokenized.statement"
                    ]
                }
            }
        }
        

    ]
}
```
Di seguito è riportata la risposta per la dimensione richiesta:  

```
	// ListAvailableResourceDimensions API
// Request
{
    "ServiceType": "RDS",
    "Identifier": "db-ABC1DEFGHIJKL2MNOPQRSTUV3W",
    "Metrics": [ "db.load" ],
    "AuthorizedActions": ["DescribeDimensionKeys"]
}

// Response
{    
    "MetricDimensions": [ {
        "Metric": "db.load",
        "Groups": [
            {
                "Group": "db.sql_tokenized",
                "Dimensions": [
                    { "Identifier": "db.sql_tokenized.id" },
                  //  { "Identifier": "db.sql_tokenized.db_id" }, // not included because not allows in the IAM Policy
                    { "Identifier": "db.sql_tokenized.statement" }
                ] 
            }
            
        ] }
    ]
}
```
L’esempio seguente specifica un accesso consentito e due accessi negati per le dimensioni.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
          {
            "Sid": "AllowToDiscoverDimensions",
            "Effect": "Allow",
            "Action": [
                "pi:ListAvailableResourceDimensions"
            ],
            "Resource": [
                "arn:aws:pi:us-east-1:123456789012:metrics/rds/db-ABC1DEFGHIJKL2MNOPQRSTUV3W"
            ]
          },

          {
            "Sid": "O01AllowAllWithoutSpecifyingDimensions",
            "Effect": "Allow",
            "Action": [
                "pi:GetResourceMetrics",
                "pi:DescribeDimensionKeys"
            ],
            "Resource": [
                "arn:aws:pi:us-east-1:123456789012:metrics/rds/db-ABC1DEFGHIJKL2MNOPQRSTUV3W"
            ]
        },
        
        {
            "Sid": "O01DenyAppDimensionForAll",
            "Effect": "Deny",
            "Action": [
                "pi:GetResourceMetrics",
                "pi:DescribeDimensionKeys"
            ],
            "Resource": [
                "arn:aws:pi:us-east-1:123456789012:metrics/rds/db-ABC1DEFGHIJKL2MNOPQRSTUV3W"
            ],
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "pi:Dimensions": [
                        "db.application.name"
                    ]
                }
            }
        },
        
        {
            "Sid": "O01DenySQLForGetResourceMetrics",
            "Effect": "Deny",
            "Action": [
                "pi:GetResourceMetrics"
            ],
            "Resource": [
                "arn:aws:pi:us-east-1:123456789012:metrics/rds/db-ABC1DEFGHIJKL2MNOPQRSTUV3W"
            ],
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "pi:Dimensions": [
                        "db.sql_tokenized.statement"
                    ]
                }
            }
        }
    ]
}
```
Di seguito sono riportate le risposte per le dimensioni richieste:  

```
			// ListAvailableResourceDimensions API
// Request
{
    "ServiceType": "RDS",
    "Identifier": "db-ABC1DEFGHIJKL2MNOPQRSTUV3W",
    "Metrics": [ "db.load" ],
    "AuthorizedActions": ["GetResourceMetrics"]
}

// Response
{    
    "MetricDimensions": [ {
        "Metric": "db.load",
        "Groups": [
            {
                "Group": "db.application",
                "Dimensions": [
                
                  // removed from response because denied by the IAM Policy
                  //  { "Identifier": "db.application.name" }  
                ]
            },
            {
                "Group": "db.sql_tokenized",
                "Dimensions": [
                    { "Identifier": "db.sql_tokenized.id" },
                    { "Identifier": "db.sql_tokenized.db_id" },
                    
                  // removed from response because denied by the IAM Policy
                  //  { "Identifier": "db.sql_tokenized.statement" }
                ] 
            },
            ...
        ] }
    ]
}
```

```
// ListAvailableResourceDimensions API
// Request
{
    "ServiceType": "RDS",
    "Identifier": "db-ABC1DEFGHIJKL2MNOPQRSTUV3W",
    "Metrics": [ "db.load" ],
    "AuthorizedActions": ["DescribeDimensionKeys"]
}

// Response
{    
    "MetricDimensions": [ {
        "Metric": "db.load",
        "Groups": [
            {
                "Group": "db.application",
                "Dimensions": [
                  // removed from response because denied by the IAM Policy
                  //  { "Identifier": "db.application.name" }  
                ]
            },
            {
                "Group": "db.sql_tokenized",
                "Dimensions": [
                    { "Identifier": "db.sql_tokenized.id" },
                    { "Identifier": "db.sql_tokenized.db_id" },
                    
                  // allowed for DescribeDimensionKeys because our IAM Policy 
                  // denies it only for GetResourceMetrics
                    { "Identifier": "db.sql_tokenized.statement" }
                ] 
            },
            ...
        ] }
    ]
}
```

# Utilizzo del controllo degli accessi basato su tag per Performance Insights
<a name="USER_PerfInsights.access-control.tag-based-policy"></a>

Puoi controllare l'accesso alle metriche di Performance Insights utilizzando tag ereditati dall'istanza DB principale. Per controllare l'accesso alle operazioni di Performance Insights, utilizza le policy IAM. Queste policy possono controllare i tag sull'istanza DB per determinare le autorizzazioni.

## Come funzionano i tag con Performance Insights
<a name="USER_PerfInsights.access-control.tag-inheritance"></a>

Performance Insights applica automaticamente i tag dell'istanza DB per autorizzare le metriche di Performance Insights. Quando aggiungi tag alla tua istanza DB, puoi utilizzarli immediatamente per controllare l'accesso ai dati di Performance Insights.
+ Per aggiungere o aggiornare i tag per le metriche di Performance Insights, modifica i tag sulla tua istanza DB.
+ Per visualizzare i tag per le metriche di Performance Insights, richiama la `ListTagsForResource` risorsa metrica Performance Insights. Restituirà i tag dall'istanza DB associata alla metrica.

**Nota**  
Le `UntagResource` operazioni `TagResource` and restituiscono un errore se si tenta di utilizzarle direttamente nelle metriche di Performance Insights.

## Creazione di politiche IAM basate su tag
<a name="USER_PerfInsights.access-control.tag-based-policies"></a>

Per controllare l'accesso alle operazioni di Performance Insights, utilizza la chiave `aws:ResourceTag` condition nelle tue policy IAM. Queste politiche controllano i tag sulla tua istanza DB.

**Example**  
Questa politica impedisce l'accesso alle metriche di Performance Insights per i database di produzione. La politica nega l'`pi:GetResourceMetrics`operazione in Performance Insights per qualsiasi risorsa del database contrassegnata con`env:prod`.   

```
 {
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "pi:GetResourceMetrics",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/env": "prod"
                }
            }
        }
    ]
}
```