

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

# AWS Elementi della policy JSON: NotPrincipal
<a name="reference_policies_elements_notprincipal"></a>

L’elemento `NotPrincipal` utilizza `"Effect":"Deny"` per negare l’accesso a tutti i principali ***tranne*** il principale specificato nell’elemento `NotPrincipal`. Un principale può essere un utente IAM, un utente AWS STS federato, un ruolo IAM, una sessione di ruolo presunta Account AWS, un AWS servizio o un altro tipo principale. Per ulteriori informazioni sui principali, consulta [AWS Elementi della policy JSON: Principal](reference_policies_elements_principal.md).

`NotPrincipal` deve essere usato con `"Effect":"Deny"`. L'uso con `"Effect":"Allow"` non è supportato. 

**Importante**  
Si sconsiglia l’uso di `NotPrincipal` per nuove policy basate sulle risorse come parte della strategia di sicurezza e autorizzazione. Quando utilizzi `NotPrincipal`, la risoluzione dei problemi legati agli effetti di più tipi di policy può essere difficile. Con gli operatori di condizione ARN, si consiglia invece di utilizzare la chiave di contesto `aws:PrincipalArn`.

## Punti chiave
<a name="notprincipal-key-points"></a>
+ L’elemento `NotPrincipal` è supportato nelle policy basate sulle risorse per alcuni servizi AWS , tra cui gli endpoint VPC. Le policy basate su risorse sono policy che vengono incorporate direttamente in una risorsa. Non puoi utilizzare l'elemento `NotPrincipal` in una policy basata sull'identità IAM o in una policy di attendibilità del ruolo IAM.
+ Non utilizzare istruzioni di policy basate sulle risorse che includono un elemento di policy `NotPrincipal` con effetto `Deny` per gli utenti o i ruoli IAM ai quali è collegata una policy con limite delle autorizzazioni. L'elemento `NotPrincipal` con effetto `Deny` rifiuterà sempre qualsiasi principale IAM al quale è collegata una policy con limite delle autorizzazioni, indipendentemente dai valori specificati nell'elemento `NotPrincipal`. Ciò fa sì che alcuni utenti o ruoli IAM che altrimenti avrebbero accesso alla risorsa perdano l'accesso. Ti consigliamo di modificare le istruzioni di policy basate sulle risorse di modo che, per limitare l'accesso, utilizzino l'operatore di condizione [`ArnNotEquals`](reference_policies_elements_condition_operators.md#Conditions_ARN) con la chiave di contesto [`aws:PrincipalArn`](reference_policies_condition-keys.md#condition-keys-principalarn) anziché l'elemento `NotPrincipal`. Per ulteriori informazioni sui limiti delle autorizzazioni, consulta la pagina [Limiti delle autorizzazioni per le entità IAM](access_policies_boundaries.md).
+ Quando si utilizza `NotPrincipal`, è necessario specificare anche l’ARN dell’account del principale non rifiutato. In caso contrario, la policy potrebbe rifiutare l'accesso all'intero account contenente il principale. A seconda del servizio che si include nella policy, AWS potrebbe convalidare prima l'account e poi l'utente. Se viene valutato un utente con ruolo presunto (qualcuno che utilizza un ruolo), AWS potrebbe convalidare prima l'account, poi il ruolo e poi l'utente assunto. L'utente con ruolo assunto viene identificato tramite il nome della sessione del ruolo specificato quando l'utente ha assunto il ruolo. Pertanto, è fortemente consigliabile includere esplicitamente l'ARN di un account utente oppure includere sia l'ARN di un ruolo sia l'ARN dell'account che contiene quel ruolo.
+ L’elemento `NotPrincipal` non è supportato nelle policy di controllo dei servizi (SCP) e nelle policy di controllo delle risorse (RCP).

## Alternative all’elemento `NotPrincipal`
<a name="notprincipal-alternatives"></a>

Quando si gestisce il controllo degli accessi in AWS, può verificarsi la necessità di negare esplicitamente a tutti i responsabili l'accesso a una risorsa, ad eccezione di uno o più principali specificati dall'utente. AWS consiglia di utilizzare un'istruzione Deny con tasti contestuali delle condizioni globali per un controllo più preciso e una risoluzione dei problemi più semplice. Gli esempi seguenti mostrano approcci alternativi che utilizzano operatori di condizione come `StringNotEquals` o `ArnNotEquals` per negare l’accesso a tutti i principali, ad eccezione di quelli specificati nell’elemento Condizione.

## Scenario di esempio che utilizza un ruolo IAM
<a name="notprincipal-alternative-role"></a>

Puoi utilizzare una policy basata sulle risorse con un’istruzione Nega per impedire a tutti i ruoli IAM, ad eccezione di quelli specificati nell’elemento Condizione, di accedere alle tue risorse o di manipolarle. Questo approccio segue il principio AWS di sicurezza secondo cui un'esplicita deny ha sempre la precedenza su qualsiasi istruzione di autorizzazione e aiuta a mantenere il principio del privilegio minimo nell'infrastruttura. AWS 

Invece di usare `NotPrincipal`, consigliamo di utilizzare un’istruzione Nega con chiavi di contesto di condizione globali e l’operatore di condizione come [`ArnNotEquals`](reference_policies_elements_condition_operators.md#Conditions_ARN) per consentire esplicitamente a un ruolo IAM l’accesso alle tue risorse. L’esempio seguente impiega [aws:PrincipalArn](reference_policies_condition-keys.md#condition-keys-principalarn) per consentire esplicitamente al ruolo `read-only-role` di accedere ai bucket Amazon S3 nella cartella `Bucket_Account_Audit`.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyCrossAuditAccess",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::Bucket_Account_Audit",
        "arn:aws:s3:::Bucket_Account_Audit/*"
      ],
      "Condition": {
        "ArnNotEquals": {
          "aws:PrincipalArn": "arn:aws:iam::444455556666:role/read-only-role"
        }
      }
    }
  ]
}
```

------

## Scenario di esempio che utilizza un principale del servizio
<a name="notprincipal-alternative-service-principal"></a>

È possibile utilizzare un’istruzione Nega per impedire a tutti i principali del servizio, ad eccezione di quelli specificati nell’elemento `Condition`, di accedere alle risorse o di manipolarle. Questo approccio è particolarmente utile quando è necessario implementare controlli di accesso granulari o stabilire limiti di sicurezza tra diversi servizi e applicazioni nell’ambiente AWS .

Invece di usare `NotPrincipal`, consigliamo di utilizzare un’istruzione Nega con chiavi di contesto di condizione globali e l’operatore di condizione [`StringNotEquals`](reference_policies_elements_condition_operators.md#Conditions_String) per consentire esplicitamente a un principale del servizio l’accesso alle tue risorse. L’esempio seguente impiega `aws:PrincipalServiceName` per consentire esplicitamente al principale del servizio AWS CodeBuild di accedere ai bucket Amazon S3 nella cartella `BUCKETNAME`.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyNotCodeBuildAccess",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::BUCKETNAME",
        "arn:aws:s3:::BUCKETNAME/*"
      ],
      "Condition": {
        "StringNotEqualsIfExists": {
          "aws:PrincipalServiceName": "codebuild.amazonaws.com"
        }
      }
    }
  ]
}
```

------