

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

# Esempi di policy gestite dal cliente
<a name="customer-managed-policies"></a>

Puoi creare policy IAM personalizzate per consentire CodeCommit autorizzazioni per azioni e risorse. Puoi associare queste policy personalizzate agli utenti o ai gruppi IAM che richiedono tali autorizzazioni. Puoi anche creare policy IAM personalizzate per l'integrazione tra CodeCommit e altri AWS servizi.

**Topics**
+ [Esempi di politiche di identità gestite dai clienti](#customer-managed-policies-identity)

## Esempi di politiche di identità gestite dai clienti
<a name="customer-managed-policies-identity"></a>

I seguenti esempi di policy IAM concedono autorizzazioni per varie CodeCommit azioni. Utilizzale per limitare CodeCommit l'accesso degli utenti e dei ruoli IAM. Queste policy controllano la capacità di eseguire azioni con la CodeCommit console, l'API o il AWS CLI. AWS SDKs



**Nota**  
Tutti gli esempi utilizzano la regione degli Stati Uniti occidentali (Oregon) (us-west-2) e contengono account fittizi. IDs

 **Esempi**
+ [Esempio 1: consentire a un utente di eseguire operazioni in un'unica soluzione CodeCommit Regione AWS](#identity-based-policies-example-1)
+ [Esempio 2: consentire a un utente di utilizzare Git per un singolo repository](#identity-based-policies-example-2)
+ [Esempio 3: consentire a un utente che si connette da un intervallo di indirizzi IP specificato di accedere a un repository](#identity-based-policies-example-3)
+ [Esempio 4: negare o consentire azioni sulle filiali](#identity-based-policies-example-4)
+ [Esempio 5: negare o consentire azioni sui repository con tag](#identity-based-policies-example-5)

### Esempio 1: consentire a un utente di eseguire operazioni in un'unica soluzione CodeCommit Regione AWS
<a name="identity-based-policies-example-1"></a>

La seguente politica di autorizzazione utilizza un carattere jolly (`"codecommit:*"`) per consentire agli utenti di eseguire tutte le CodeCommit azioni nella regione us-east-2 e non da altre. Regioni AWS

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "codecommit:*",
            "Resource": "arn:aws:codecommit:us-east-2:111111111111:*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestedRegion": "us-east-2"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "codecommit:ListRepositories",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestedRegion": "us-east-2"
                }
            }
        }
    ]
}
```

------

### Esempio 2: consentire a un utente di utilizzare Git per un singolo repository
<a name="identity-based-policies-example-2"></a>

In CodeCommit, le autorizzazioni della policy `GitPull` IAM si applicano a qualsiasi comando client Git da cui vengono recuperati i dati CodeCommit, inclusi **git fetch****git clone**, e così via. Allo stesso modo, le autorizzazioni della policy `GitPush` IAM si applicano a qualsiasi comando client Git a CodeCommit cui vengono inviati i dati. Ad esempio, se l'autorizzazione della policy `GitPush` IAM è impostata su`Allow`, un utente può inviare l'eliminazione di un ramo utilizzando il protocollo Git. Tale push non è influenzato da alcuna autorizzazione applicata all'`DeleteBranch`operazione per quell'utente IAM. L'`DeleteBranch`autorizzazione si applica alle azioni eseguite con la console, il AWS CLI SDKs, e l'API, ma non il protocollo Git. 

L'esempio seguente consente all'utente specificato di estrarre e inviare messaggi dal CodeCommit repository denominato`MyDemoRepo`:

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement" : [
    {
      "Effect" : "Allow",
      "Action" : [
        "codecommit:GitPull",
        "codecommit:GitPush"
      ],
      "Resource" : "arn:aws:codecommit:us-east-2:111122223333:MyDemoRepo"
    }
  ]
}
```

------

### Esempio 3: consentire a un utente che si connette da un intervallo di indirizzi IP specificato di accedere a un repository
<a name="identity-based-policies-example-3"></a>

Puoi creare una policy che consente agli utenti di connettersi a un repository CodeCommit se il loro indirizzo IP rientra in un determinato intervallo di indirizzi IP. Sono disponibili due approcci altrettanto validi a questo scopo. È possibile creare una `Deny` politica che non consenta CodeCommit le operazioni se l'indirizzo IP dell'utente non si trova all'interno di un blocco specifico oppure creare una `Allow` politica che consenta CodeCommit le operazioni se l'indirizzo IP dell'utente si trova all'interno di un blocco specifico.

Puoi creare una policy `Deny` che rifiuta l'accesso a tutti gli utenti non inclusi in un determinato intervallo di indirizzi IP. Ad esempio, puoi collegare la policy gestita AWSCodeCommitPowerUser e una policy gestita dal cliente a tutti gli utenti che richiedono l'accesso al repository. La seguente politica di esempio nega tutte le CodeCommit autorizzazioni agli utenti i cui indirizzi IP non rientrano nel blocco di indirizzi IP specificato di 203.0.113.0/16:

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Effect": "Deny",
         "Action": [
            "codecommit:*"
         ],
         "Resource": "*",
         "Condition": {
            "NotIpAddress": {
               "aws:SourceIp": [
                  "203.0.113.0/16"
               ]
            }
         }
      }
   ]
}
```

------

La seguente politica di esempio consente all'utente specificato di accedere a un CodeCommit archivio denominato MyDemoRepo con le autorizzazioni equivalenti della politica AWSCode CommitPowerUser gestita solo se il relativo indirizzo IP si trova all'interno del blocco di indirizzi specificato di 203.0.113.0/16:

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Effect": "Allow",
         "Action": [
            "codecommit:BatchGetRepositories",
            "codecommit:CreateBranch",
            "codecommit:CreateRepository",
            "codecommit:Get*",
            "codecommit:GitPull",
            "codecommit:GitPush",
            "codecommit:List*",
            "codecommit:Put*",
            "codecommit:Post*",
            "codecommit:Merge*",
            "codecommit:TagResource",
            "codecommit:Test*",
            "codecommit:UntagResource",
            "codecommit:Update*"
         ],
         "Resource": "arn:aws:codecommit:us-east-2:111122223333:MyDemoRepo",
         "Condition": {
            "IpAddress": {
               "aws:SourceIp": [
                  "203.0.113.0/16"
               ]
            }
         }
      }
   ]
}
```

------



### Esempio 4: negare o consentire azioni sulle filiali
<a name="identity-based-policies-example-4"></a>

Puoi creare una policy che rifiuta agli utenti le autorizzazioni per eseguire le operazioni specificate su uno o più rami. In alternativa, puoi creare una policy che consente di eseguire operazioni su uno o più rami che altrimenti non sarebbero consentite in altri rami di un repository. Puoi utilizzare queste policy con le policy gestite (predefinite) appropriate. Per ulteriori informazioni, consulta [Limita i push e le unioni ai rami in AWS CodeCommit](how-to-conditional-branch.md).

Ad esempio, è possibile creare una `Deny` politica che neghi agli utenti la possibilità di apportare modifiche a un ramo denominato main, inclusa l'eliminazione del ramo, in un repository denominato. *MyDemoRepo* Puoi usare questa policy con la policy gestita **AWSCodeCommitPowerUser**. Gli utenti con queste due politiche applicate sarebbero in grado di creare ed eliminare rami, creare richieste pull e tutte le altre azioni consentite da **AWSCodeCommitPowerUser**, ma non sarebbero in grado di inviare modifiche al ramo denominato *main*, aggiungere o modificare un file nel ramo *principale* della CodeCommit console o unire rami o una richiesta pull nel ramo *principale*. Poiché la policy `Deny` viene applicata a `GitPush`, devi includervi un'istruzione `Null` per consentire l'analisi della validità delle chiamate `GitPush` iniziali quando gli utenti eseguono push dai loro repository locali.

**Suggerimento**  
Se desideri creare una politica che si applichi a tutti i rami denominati *main* in tutti i repository del tuo account Amazon Web Services, per`Resource`, specifica un asterisco (`*`) anziché un ARN del repository.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "codecommit:GitPush",
                "codecommit:DeleteBranch",
                "codecommit:PutFile",
                "codecommit:Merge*"
            ],
            "Resource": "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo",
            "Condition": {
                "StringEqualsIfExists": {
                    "codecommit:References": [
                        "refs/heads/main"   
                    ]
                },
                "Null": {
                    "codecommit:References": "false"
                }
            }
        }
    ]
}
```

------

La seguente politica di esempio consente a un utente di apportare modifiche a un ramo denominato main in tutti i repository di un account Amazon Web Services. Non consente modifiche a nessun altro ramo. È possibile utilizzare questa politica con la politica AWSCode CommitReadOnly gestita per consentire push automatici al repository nel ramo principale. Poiché l'effetto è `Allow`, questa policy di esempio non funzionerebbe con le policy gestite come AWSCodeCommitPowerUser.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codecommit:GitPush",
                "codecommit:Merge*"
            ],
            "Resource": "*",
            "Condition": {
                "StringEqualsIfExists": {
                    "codecommit:References": [
                        "refs/heads/main"
                    ]
                }
            }
        }
    ]
}
```

------



### Esempio 5: negare o consentire azioni sui repository con tag
<a name="identity-based-policies-example-5"></a>

Puoi creare una policy che consenta o neghi azioni sui repository in base ai AWS tag associati a tali repository e quindi applicare tali policy ai gruppi IAM configurati per la gestione degli utenti IAM. Ad esempio, puoi creare una policy che neghi tutte le CodeCommit azioni su qualsiasi repository con il AWS tag key *Status* e il valore chiave *Secret*, quindi applicare tale policy al gruppo IAM che hai creato per sviluppatori generici (). *Developers* Devi quindi assicurarti che gli sviluppatori che lavorano su quei repository con tag non siano membri di quel *Developers* gruppo generale, ma appartengano invece a un gruppo IAM diverso a cui non viene applicata la politica restrittiva (). *SecretDevelopers*

*L'esempio seguente nega tutte le CodeCommit azioni sui repository contrassegnati con la chiave *Status e il valore* chiave di Secret:*

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "codecommit:Associate*",
        "codecommit:Batch*",
        "codecommit:CancelUploadArchive",
        "codecommit:CreateBranch",
        "codecommit:CreateCommit",
        "codecommit:CreatePullRequest*",
        "codecommit:CreateRepository",
        "codecommit:CreateUnreferencedMergeCommit",
        "codecommit:DeleteBranch",
        "codecommit:DeleteCommentContent",
        "codecommit:DeleteFile",
        "codecommit:DeletePullRequest*",
        "codecommit:DeleteRepository",
        "codecommit:Describe*",
        "codecommit:DisassociateApprovalRuleTemplateFromRepository",
        "codecommit:EvaluatePullRequestApprovalRules",
        "codecommit:GetBlob",
        "codecommit:GetBranch",
        "codecommit:GetComment*",
        "codecommit:GetCommit",
        "codecommit:GetDifferences*",
        "codecommit:GetFile",
        "codecommit:GetFolder",
        "codecommit:GetMerge*",
        "codecommit:GetObjectIdentifier",
        "codecommit:GetPullRequest*",
        "codecommit:GetReferences",
        "codecommit:GetRepository*",
        "codecommit:GetTree",
        "codecommit:GetUploadArchiveStatus",
        "codecommit:Git*",
        "codecommit:ListAssociatedApprovalRuleTemplatesForRepository",
        "codecommit:ListBranches",
        "codecommit:ListPullRequests",
        "codecommit:ListTagsForResource",
        "codecommit:Merge*",
        "codecommit:OverridePullRequestApprovalRules",
        "codecommit:Post*",
        "codecommit:Put*",
        "codecommit:TagResource",
        "codecommit:TestRepositoryTriggers",
        "codecommit:UntagResource",
        "codecommit:UpdateComment",
        "codecommit:UpdateDefaultBranch",
        "codecommit:UpdatePullRequest*",
        "codecommit:UpdateRepository*",
        "codecommit:UploadArchive"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/Status": "Secret"
        }
      }
    }
  ]
}
```

------

È possibile perfezionare ulteriormente questa strategia specificando repository specifici, anziché tutti i repository, come risorse. È inoltre possibile creare politiche che consentano CodeCommit azioni su tutti gli archivi che non sono etichettati con tag specifici. Ad esempio, la seguente politica consente l'equivalente delle **AWSCodeCommitPowerUser** CodeCommit autorizzazioni per le azioni, tranne per il fatto che consente solo CodeCommit azioni su repository non contrassegnati con i tag specificati:

**Nota**  
Questo esempio di politica include solo azioni per. CodeCommit Non include azioni per altri AWS servizi inclusi nella politica **AWSCodeCommitPowerUser**gestita. Per ulteriori informazioni, consulta [AWS politica gestita: AWSCode CommitPowerUser](security-iam-awsmanpol.md#managed-policies-poweruser)..

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codecommit:Associate*",
        "codecommit:Batch*",
        "codecommit:CancelUploadArchive",
        "codecommit:CreateBranch",
        "codecommit:CreateCommit",
        "codecommit:CreatePullRequest*",
        "codecommit:CreateRepository",
        "codecommit:CreateUnreferencedMergeCommit",
        "codecommit:DeleteBranch",
        "codecommit:DeleteCommentContent",
        "codecommit:DeleteFile",
        "codecommit:DeletePullRequest*",
        "codecommit:Describe*",
        "codecommit:DisassociateApprovalRuleTemplateFromRepository",
        "codecommit:EvaluatePullRequestApprovalRules",
        "codecommit:GetBlob",
        "codecommit:GetBranch",
        "codecommit:GetComment*",
        "codecommit:GetCommit",
        "codecommit:GetDifferences*",
        "codecommit:GetFile",
        "codecommit:GetFolder",
        "codecommit:GetMerge*",
        "codecommit:GetObjectIdentifier",
        "codecommit:GetPullRequest*",
        "codecommit:GetReferences",
        "codecommit:GetRepository*",
        "codecommit:GetTree",
        "codecommit:GetUploadArchiveStatus",
        "codecommit:Git*",
        "codecommit:ListAssociatedApprovalRuleTemplatesForRepository",
        "codecommit:ListBranches",
        "codecommit:ListPullRequests",
        "codecommit:ListTagsForResource",
        "codecommit:Merge*",
        "codecommit:OverridePullRequestApprovalRules",
        "codecommit:Post*",
        "codecommit:Put*",
        "codecommit:TagResource",
        "codecommit:TestRepositoryTriggers",
        "codecommit:UntagResource",
        "codecommit:UpdateComment",
        "codecommit:UpdateDefaultBranch",
        "codecommit:UpdatePullRequest*",
        "codecommit:UpdateRepository*",
        "codecommit:UploadArchive"
      ],
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
          "aws:ResourceTag/Status": "Secret",
          "aws:ResourceTag/Team": "Saanvi"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "codecommit:CreateApprovalRuleTemplate",
        "codecommit:GetApprovalRuleTemplate",
        "codecommit:ListApprovalRuleTemplates",
        "codecommit:ListRepositories",
        "codecommit:ListRepositoriesForApprovalRuleTemplate",
        "codecommit:UpdateApprovalRuleTemplateContent",
        "codecommit:UpdateApprovalRuleTemplateDescription",
        "codecommit:UpdateApprovalRuleTemplateName"
      ],
      "Resource": "*"
    }
  ]
}
```

------