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
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.
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:
-
Prepara un elenco di risorse che intendi utilizzare per il provisioning. CloudFormation
-
Consulta la AWS documentazione 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.
-
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
Questo esempio crea un bucket Amazon Simple Storage Service (Amazon S3) che viene utilizzato per archiviare gli artefatti del progetto. AWS CodeBuild AWS CodePipelineutilizza 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. 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'
Resourceelemento 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:GetObjects3:GetObjectVersion, es3:PutObjectrichiedono un tipo di risorsa oggetto S3 es3:GetBucketVersioningrichiedono 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. -
-
L'
Principalelemento 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'
Conditionelemento limita ulteriormente l'accesso al bucket S3 in modo che solo ilDeployfiles_buildCodeBuild progetto, la pipeline e le azioni dellaDeployment-PipelineCodePipeline 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}/*'