Come posso risolvere gli errori Access Denied o i problemi di autorizzazione in CodePipeline?
Quando carico i miei file su AWS CodePipeline, ricevo un messaggio di errore "Access Denied".
Risoluzione
Potresti ricevere un messaggio "Access Denied" o un errore di autorizzazione a causa di autorizzazioni insufficienti per il bucket Amazon Simple Storage Service (Amazon S3). Potresti inoltre ricevere un errore se non hai associato le autorizzazioni corrette all'utente e al ruolo AWS Identity and Access Management (AWS IAM).
Autorizzazioni per l'utente
Verifica che le autorizzazioni delle policy gestite da AWS per creare e gestire le risorse di CodePipeline siano associate all'utente IAM.
Ruolo di servizio CodePipeline
Assicurati che il ruolo di servizio associato a CodePipeline abbia le autorizzazioni per interagire con i servizi AWS.
Modifica l'istruzione del ruolo di servizio per rimuovere o aggiungere l'accesso alle risorse che non usi. Per limitare le autorizzazioni a una particolare risorsa modificando l'istruzione del ruolo di servizio, includi il nome della risorsa Amazon (ARN) nel valore Risorsa. Collega il seguente esempio di policy del ruolo di servizio CodePipeline alla risorsa per concedere le autorizzazioni minime:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowS3BucketAccess", "Effect": "Allow", "Action": [ "s3:GetBucketVersioning", "s3:GetBucketAcl", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::[[pipeArtifactBucketNames]]" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "{{accountId}}" } } }, { "Sid": "AllowS3ObjectAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:GetObject", "s3:GetObjectVersion", "s3:PutObjectTagging", "s3:GetObjectTagging", "s3:GetObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::[[pipeArtifactBucketNames]]/*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "{{accountId}}" } } } ] }
Nota: sostituisci pipeArtifactBucketNames con il nome del tuo bucket S3 e accountId con l'ID del tuo account AWS.
Bucket di artefatti CodePipeline
Verifica di aver assegnato correttamente la policy di bucket e le autorizzazioni per il bucket S3 che memorizza gli artefatti della pipeline.
Per l'accesso multi-account, consulta la sezione Update the bucket policy for the CodePipeline artifact bucket in Account B (Aggiorna la policy di bucket per il bucket degli artefatti CodePipeline nell'Account B) in How do I configure a CodePipeline source stage with a cross-account CodeCommit repository? (Come posso configurare una fase dell'origine di CodePipeline con un repository CodeCommit multi-account?)
Autorizzazioni AWS KMS
Verifica che le chiavi del Servizio AWS di gestione delle chiavi (AWS KMS) utilizzate per la crittografia abbiano le policy della chiave che concedono l'autorizzazione per le risorse multi-account.Collega il seguente esempio di policy al ruolo IAM per aggiungere autorizzazioni e consentire l'uso della chiave KMS per un ruolo multi-account
{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account_B:role/cross_account_role_name", // allows access to cross account role "AWS": "arn:aws:iam::account_B:root" // allows access to any role for account_B }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }
Nota: sostituisci account_B:role/cross_account_role_name con il tuo ARN.
Autorizzazioni per CodeConnections
Per le pipeline che utilizzano AWS CodeConnections, assicurati che la connessione abbia le autorizzazioni per accedere al repository di origine. Se l'elenco include solo alcuni repository, potrebbe esserci una restrizione nell'applicazione del connettore installata nel sistema SCM (Source Control Management) di terze parti.
Per risolvere il problema, aggiorna l'applicazione nel sistema SCM con accesso ai repository. Per verificare l'accesso al repository nel sistema SCM, rivedi le impostazioni di accesso al repository. Puoi utilizzare CodeConnections per aggiungere provider di origine terzi alle pipeline.
- Argomenti
- Management & Governance
- Lingua
- Italiano
