

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 autorizzazioni con privilegi minimi per le risorse fornite tramite CloudFormation
<a name="permissions-cloudformation-provisioned-resources"></a>

AWS CloudFormation consente di fornire molti tipi diversi di AWS risorse. Le risorse assegnate richiedono un proprio set di autorizzazioni per funzionare come previsto e per configurare chi ha accesso a tali risorse. Nel capitolo precedente sono state esaminate le opzioni per la configurazione delle autorizzazioni di accesso e utilizzo del servizio. CloudFormation Questo capitolo illustra come applicare il principio del privilegio minimo alle risorse fornite tramite. CloudFormation

In questa guida, sarebbe praticamente impossibile esaminare le raccomandazioni e le migliori pratiche di sicurezza per ogni tipo di AWS risorsa tramite cui è possibile effettuare il provisioning. CloudFormation In caso di domande relative a un servizio specifico, si consiglia di consultare la documentazione relativa a tale servizio. La maggior parte dei Servizio AWS documenti contiene una sezione sulla sicurezza e informazioni sulle autorizzazioni necessarie per utilizzare quel servizio. Per un elenco completo della Servizio AWS documentazione, vedere [AWS Documentazione](https://docs.aws.amazon.com/index.html).

Di seguito sono riportati i passaggi di alto livello, indipendenti dal servizio, che è possibile eseguire per creare CloudFormation modelli che rispettino il principio del privilegio minimo:

1. Prepara un elenco di risorse che intendi utilizzare per il provisioning. CloudFormation

1. Consulta la [AWS documentazione](https://docs.aws.amazon.com/index.html) per i servizi corrispondenti e consulta le sezioni sulla sicurezza e la gestione degli accessi. Questo ti aiuta a comprendere i requisiti e i consigli specifici del servizio.

1. Utilizza le informazioni raccolte nei passaggi precedenti per progettare CloudFormation modelli e politiche associate che consentano solo le autorizzazioni richieste e neghino tutte le altre.

Successivamente, questa guida esamina un esempio di come applicare il principio del privilegio minimo nei CloudFormation modelli, utilizzando un caso d'uso reale.

## Esempio: bucket Amazon S3 per l'archiviazione degli artefatti della pipeline
<a name="example-s3-bucket"></a>

Questo esempio crea un bucket [Amazon Simple Storage Service (Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)) che viene utilizzato per archiviare gli artefatti del progetto. [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)utilizza questi artefatti memorizzati. Puoi consentire CodeBuild e accedere CodePipeline a questo bucket S3 tramite i ruoli di servizio e controllare tale accesso utilizzando una policy sui bucket di Amazon [S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html). Di seguito sono riportati i nomi delle risorse utilizzati in questo esempio:
+ `Deployfiles_build`è il nome del CodeBuild progetto.
+ `Deployment-Pipeline`è il nome della pipeline in CodePipeline.

*Definisci il bucket Amazon S3*

Innanzitutto, definisci il bucket S3 nel CloudFormation modello, che è un file di testo in formato YAML.

```
amzn-s3-demo-bucket:
  Type: AWS::S3::Bucket
  Properties:
    PublicAccessBlockConfiguration:
        BlockPublicAcls: true
        BlockPublicPolicy: true
        IgnorePublicAcls: true
        RestrictPublicBuckets: true
```

*Definizione della policy sui bucket di Amazon S3*

Successivamente, nel CloudFormation modello, crei una bucket policy che consenta solo al `Deployfiles_build` progetto e alla `Deployment-Pipeline` pipeline di accedere al bucket.

```
MyBucketPolicy:
  Type: AWS::S3::BucketPolicy
  Properties: 
    Bucket: !Ref amzn-s3-demo-bucket
    PolicyDocument:
      Version: "2012-10-17"
      Statement:
      - Sid: "S3ArtifactRepoAccess"
        Effect: Allow
        Action: 
          - ‘s3:GetObject'
          - ‘s3:GetObjectVersion'
          - ‘s3:PutObject'
          - ‘s3:GetBucketVersioning'
        Resource: 
          - !Sub ‘arn:aws:s3:::${amzn-s3-demo-bucket}'
          - !Sub ‘arn:aws:s3:::${amzn-s3-demo-bucket}/*'
        Principal:
          Service:
            - codebuild.amazonaws.com
            - codepipeline.amazonaws.com
        Condition:
          StringLike:
            ‘aws:SourceArn':
              - !Sub ‘arn:aws:codebuild:${AWS::Region}:${AWS::AccountId}:project/Deployfiles_build'
              - !Sub ‘arn:aws:codepipeline:${AWS::Region}:${AWS::AccountId}:Deployment-Pipeline'
              - !Sub ‘arn:aws:codepipeline:${AWS::Region}:${AWS::AccountId}:Deployment-Pipeline/*'
```

Tieni presente quanto segue su questa policy sui bucket:
+ L'`Resource`elemento elenca due diversi tipi di risorse che utilizzano i seguenti formati Amazon Resource Name (ARN):
  + Il formato ARN di un oggetto S3 è. `arn:${{<Partition>}}:s3:::${{<BucketName>}}/${{<ObjectName>}}`
  + Il formato ARN di un bucket S3 è. `arn:${{<Partition>}}:s3:::${{<BucketName>}}`

  `s3:GetObject``s3:GetObjectVersion`, e `s3:PutObject` richiedono un tipo di risorsa oggetto S3 e `s3:GetBucketVersioning ` richiedono un tipo di risorsa bucket S3. Per ulteriori informazioni sui tipi di risorse richiesti per ogni azione, consulta [Azioni, risorse e chiavi di condizione per Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html).
+ L'`Principal`elemento elenca le entità autorizzate a eseguire le azioni di Amazon S3 definite nell'istruzione. In questo caso, solo CodeBuild e CodePipeline sono autorizzati a eseguire queste azioni.
+ L'`Condition`elemento limita ulteriormente l'accesso al bucket S3 in modo che solo il `Deployfiles_build` CodeBuild progetto, la pipeline e le azioni della `Deployment-Pipeline` CodePipeline pipeline possano accedere al bucket.

*Crea i ruoli di servizio*

Sebbene la policy del bucket controlli l'accesso al bucket, non concede autorizzazioni CodeBuild e CodePipeline per accedervi. Per concedere l'accesso, è necessario creare un ruolo di servizio per ogni servizio e aggiungere la seguente dichiarazione a ciascuno di essi. I ruoli dei servizi CodeBuild e CodePipeline consentono ai servizi di accedere al bucket S3 e ai suoi oggetti.

```
Sid: "ViewAccessToS3ArtifactRepo"
Effect: Allow
Action: 
  - ‘s3:GetObject'
  - ‘s3:GetObjectVersion'
  - ‘s3:PutObject'
  - ‘s3:GetBucketVersioning'
Resource: 
  - !Sub ‘arn:aws:s3:::${BuildArtifactsBucket}'
  - !Sub ‘arn:aws:s3:::${BuildArtifactsBucket}/*'
```