

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

# Modelli di policy
<a name="temporary-delegation-policy-templates"></a>

I modelli di policy sono un nuovo costrutto IAM progettato per definire le autorizzazioni temporanee richieste dai partner negli account dei clienti. Come le normali politiche IAM, definiscono le autorizzazioni utilizzando istruzioni con elementi Effect, Action, Resource e Condition. La differenza fondamentale è che i modelli di policy includono parametri (come @ {bucketName}) che vengono sostituiti con valori effettivi quando si crea una richiesta di delega.

## Come funzionano i modelli di policy
<a name="temporary-delegation-how-policy-templates-work"></a>

Come parte del processo di onboarding, registri i tuoi modelli di polizza con AWS. AWS Assegna a ciascun modello un ARN univoco a cui si fa riferimento durante la creazione delle richieste di delega.

Quando si crea una richiesta di delega, si specifica:
+ Il modello di policy ARN
+ Valori dei parametri da sostituire nel modello

AWS combina il modello con i valori dei parametri per generare una policy IAM standard. I clienti esaminano questa policy renderizzata finale quando approvano la richiesta di delega, per vedere esattamente quali autorizzazioni verranno concesse.

**Nota**  
La policy renderizzata finale ha un limite massimo di 2048 caratteri.

Ecco un semplice esempio che mostra come funziona la sostituzione dei template.

Modello di politica:

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::@{bucketName}/*"
        }
    ]
}
```

Parametri forniti nella richiesta di delega:

```
{
    "Name": "bucketName",
    "Values": ["customer-data-bucket"],
    "Type": "String"
}
```

Politica resa finale (cosa vedono i clienti):

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::customer-data-bucket/*"
        }
    ]
}
```

## Sintassi del modello
<a name="temporary-delegation-template-syntax"></a>

I modelli di policy utilizzano due funzionalità chiave per fornire flessibilità: sostituzione dei parametri e dichiarazioni condizionali. La sostituzione dei parametri consente di definire dei segnaposto nel modello che vengono sostituiti con valori effettivi durante la creazione di una richiesta di delega. Le dichiarazioni condizionali consentono di includere o escludere intere dichiarazioni politiche in base ai valori dei parametri.

### Sostituzione e tipi di parametri
<a name="temporary-delegation-parameter-substitution"></a>

Usa la sintassi @ {parameterName} per definire i parametri nel tuo modello di policy. Quando si crea una richiesta di delega, è necessario specificare il tipo per ogni parametro.

#### Stringa
<a name="temporary-delegation-string-type"></a>

Un singolo valore che viene sostituito direttamente nel modello.

Modello:

```
"Resource": "arn:aws:s3:::@{bucketName}/*"
```

Parametri:

```
{
    "Name": "bucketName",
    "Values": ["my-bucket"],
    "Type": "String"
}
```

Risultato renderizzato:

```
"Resource": "arn:aws:s3:::my-bucket/*"
```

#### StringList
<a name="temporary-delegation-stringlist-type"></a>

Valori multipli che generano più voci di risorse. Quando un StringList parametro viene utilizzato in un ARN di risorsa, si espande per creare voci di risorse separate per ciascun valore.

Modello:

```
"Resource": "arn:aws:s3:::@{bucketNames}/*"
```

Parametri:

```
{
    "Name": "bucketNames",
    "Values": ["bucket-1", "bucket-2"],
    "Type": "StringList"
}
```

Risultato renderizzato:

```
"Resource": [
    "arn:aws:s3:::bucket-1/*",
    "arn:aws:s3:::bucket-2/*"
]
```

#### Cross-Product Comportamento
<a name="temporary-delegation-cross-product-behavior"></a>

Quando vengono utilizzati più parametri nella stessa risorsa ARN, StringList i parametri creano un prodotto incrociato di tutte le combinazioni.

Modello:

```
"Resource": "arn:aws:s3:::@{bucketNames}/@{prefix}/*"
```

Parametri:

```
[
    {
        "Name": "bucketNames",
        "Values": ["bucket-1", "bucket-2"],
        "Type": "StringList"
    },
    {
        "Name": "prefix",
        "Values": ["data"],
        "Type": "String"
    }
]
```

Risultato renderizzato:

```
"Resource": [
    "arn:aws:s3:::bucket-1/data/*",
    "arn:aws:s3:::bucket-2/data/*"
]
```

### Dichiarazioni condizionali
<a name="temporary-delegation-conditional-statements"></a>

Utilizzate la direttiva @Enabled per includere o escludere condizionalmente intere istruzioni in base ai valori dei parametri.

Sintassi:
+ @Enabled: «parameterName»: include l'istruzione quando il valore del parametro è «True»
+ @Enabled: «\! parameterName»: include l'istruzione quando il valore del parametro NON è «True» (negazione)

Modello:

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": ["s3:GetObject"],
            "Resource": "*"
        },
        {
            "@Enabled": "ENABLE_S3_WRITE",
            "Effect": "Allow",
            "Action": ["s3:PutObject"],
            "Resource": "arn:aws:s3:::@{bucketName}/*"
        }
    ]
}
```

Parametri (quando ENABLE\_S3\_WRITE è «True»):

```
[
    {
        "Name": "bucketName",
        "Values": ["my-bucket"],
        "Type": "String"
    },
    {
        "Name": "ENABLE_S3_WRITE",
        "Values": ["True"],
        "Type": "String"
    }
]
```

Risultato renderizzato:

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": ["s3:GetObject"],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": ["s3:PutObject"],
            "Resource": "arn:aws:s3:::my-bucket/*"
        }
    ]
}
```

Parametri (quando ENABLE\_S3\_WRITE è «False»):

```
[
    {
        "Name": "bucketName",
        "Values": ["my-bucket"],
        "Type": "String"
    },
    {
        "Name": "ENABLE_S3_WRITE",
        "Values": ["False"],
        "Type": "String"
    }
]
```

Risultato renderizzato:

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": ["s3:GetObject"],
            "Resource": "*"
        }
    ]
}
```

Quando ENABLE\_S3\_WRITE è impostato su «True», l'istruzione condizionale è inclusa. Se è impostata su «False», l'istruzione viene esclusa dalla policy renderizzata.

## Esempi aggiuntivi
<a name="temporary-delegation-additional-examples"></a>

Gli esempi seguenti illustrano i modelli comuni per l'utilizzo dei modelli di policy nelle deleghe temporanee. Si concentrano sulla creazione di ruoli IAM con limiti di autorizzazione per l'accesso a lungo termine e mostrano diverse strategie per definire l'ambito delle autorizzazioni per risorse specifiche. Questi esempi illustrano come bilanciare flessibilità e sicurezza utilizzando tecniche come i prefissi ARN, l'etichettatura delle risorse e gli aggiornamenti dei limiti di autorizzazione.

### Esempio 1: concessione dell'accesso a risorse specifiche Long-Term
<a name="temporary-delegation-example-1"></a>

Il seguente limite di autorizzazione viene inviato come "SQSAccessorBoundary" per «partner.com»:

```
{
    "Effect": "Allow",
    "Action": [
        "sqs:DeleteMessage",
        "sqs:ReceiveMessage",
        "sqs:SendMessage"
    ],
    "Resource": "arn:aws:sqs:*:*:*",
    "Condition": {
        "StringEquals": {
            "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
    }
}
```

**Nota**  
Ciò include una condizione relativa allo stesso account per evitare di concedere l'accesso alle code in altri account con criteri relativi alle risorse aperte. Non è possibile includere un riferimento diretto all'ID dell'account del cliente perché il limite è condiviso tra tutti i clienti e non può essere utilizzato come modello.

Poiché questa è la prima versione di questa politica, il suo ARN è arn:aws:iam: :partner: -. policy/permissions boundary/partner com/SQSAccessorBoundary\_2025\_01\_15

Il seguente modello di policy viene inviato per le autorizzazioni di accesso temporanee:

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sqs:ListQueues"
            ],
            "Resource": "arn:aws:sqs:*:*:*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:CreateRole",
                "iam:PutRolePermissionsBoundary",
                "iam:PutRolePolicy"
            ],
            "Resource": "arn:aws:iam::@{AccountId}:role/partner.com/SQSAccessor",
            "Condition": {
                "StringEquals": {
                    "iam:PermissionsBoundary": "arn:aws:iam::partner:policy/permissions-boundary/partner.com/SQSAccessorBoundary_2025_01_15"
                }
            }
        }
    ]
}
```

### Esempio 2: utilizzo dei prefissi ARN
<a name="temporary-delegation-example-2"></a>

Il limite delle autorizzazioni può specificare un prefisso ARN della risorsa per limitare l'accesso:

```
"Resource": "arn:aws:sqs:*:@{AccountId}:PartnerPrefix*"
```

Ciò limita l'accesso solo alle risorse con quel prefisso, riducendo l'ambito delle risorse accessibili.

### Esempio 3: utilizzo dei tag per il controllo dell'accesso alle risorse
<a name="temporary-delegation-example-3"></a>

È possibile etichettare le risorse durante l'accesso temporaneo delegato e fare affidamento su tali tag per il controllo degli accessi a lungo termine.

Limite di autorizzazione che consente l'accesso alle risorse contrassegnate:

```
{
    "Effect": "Allow",
    "Action": [
        "sqs:DeleteMessage",
        "sqs:ReceiveMessage",
        "sqs:SendMessage"
    ],
    "Resource": "arn:aws:sqs:*:*:*",
    "Condition": {
        "Null": {
            "aws:ResourceTag/ManagedByPartnerDotCom": "false"
        },
        "StringEquals": {
            "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
    }
}
```

Modello di policy per etichettare le nuove code al momento della creazione:

```
{
    "Effect": "Allow",
    "Action": [
        "sqs:CreateQueue",
        "sqs:TagQueue"
    ],
    "Resource": "arn:aws:sqs:*:*:*",
    "Condition": {
        "Null": {
            "aws:RequestTag/ManagedByPartnerDotCom": "false"
        }
    }
}
```

Modello di policy per etichettare le code preesistenti e creare il ruolo:

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sqs:TagQueue"
            ],
            "Resource": "arn:aws:sqs:*:@{AccountId}:@{QueueName}",
            "Condition": {
                "ForAllValues:StringEquals": {
                    "aws:TagKeys": "ManagedByPartnerDotCom"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:CreateRole",
                "iam:PutRolePermissionsBoundary",
                "iam:PutRolePolicy"
            ],
            "Resource": "arn:aws:iam::@{AccountId}:role/partner.com/SQSAccessor",
            "Condition": {
                "StringEquals": {
                    "iam:PermissionsBoundary": "arn:aws:iam::partner:policy/permissions-boundary/partner.com/SQSAccessorBoundary_2025_01_15"
                }
            }
        }
    ]
}
```

Questo approccio consente ai clienti di confermare esplicitamente a quali risorse specifiche è possibile accedere a lungo termine.

### Esempio 4: aggiornamento del limite delle autorizzazioni
<a name="temporary-delegation-example-4"></a>

Per aggiornare un limite di autorizzazione, registra una nuova versione con un nuovo suffisso di data e richiedi l'autorizzazione per sostituirlo.

Limite di autorizzazione aggiornato con autorizzazione aggiuntiva:

```
{
    "Effect": "Allow",
    "Action": [
        "sqs:DeleteMessage",
        "sqs:PurgeQueue",
        "sqs:ReceiveMessage",
        "sqs:SendMessage"
    ],
    "Resource": "arn:aws:sqs:*:*:*",
    "Condition": {
        "StringEquals": {
            "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
    }
}
```

Come seconda versione, questa policy ha l'ARN: arn:aws:iam: :partner: -. policy/permissions boundary/partner com/SQSAccessorBoundary\_2025\_01\_20

Modello di policy per aggiornare il limite delle autorizzazioni sul ruolo esistente:

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:PutRolePermissionsBoundary"
            ],
            "Resource": "arn:aws:iam::@{AccountId}:role/partner.com/SQSAccessor",
            "Condition": {
                "StringEquals": {
                    "iam:PermissionsBoundary": "arn:aws:iam::partner:policy/permissions-boundary/partner.com/SQSAccessorBoundary_2025_01_20"
                }
            }
        }
    ]
}
```

I clienti devono approvare questa richiesta di delega per aggiornare il limite di autorizzazione sul ruolo esistente.