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 AWS CodePipeline di basate su identità
Per impostazione predefinita, gli utenti e i ruoli IAM non dispongono dell'autorizzazione per creare o modificare risorse CodePipeline . Inoltre, non possono eseguire attività utilizzando l' AWS API AWS Management Console AWS CLI, o. Un amministratore IAM deve creare policy IAM che concedono a utenti e ruoli l'autorizzazione per eseguire operazioni API specifiche sulle risorse specificate di cui hanno bisogno. L'amministratore deve quindi allegare queste policy a utenti o IAM che richiedono tali autorizzazioni.
Per informazioni su come creare una policy basata su identità IAM utilizzando questi documenti di policy JSON di esempio, consulta Creazione di policy nella scheda JSON nella Guida per l'utente IAM.
Per informazioni su come creare una pipeline che utilizzi le risorse di un altro account e per i relativi esempi di policy, consultaCrea una pipeline CodePipeline che utilizzi le risorse di un altro account AWS.
Argomenti
- Best practice per le policy
- Visualizzazione di risorse nella console
- Consentire agli utenti di visualizzare le loro autorizzazioni
- Esempi di politiche basate sull'identità (IAM)
- Utilizzo dei tag per controllare l'accesso alle risorse CodePipeline
- Autorizzazioni necessarie per l'uso della console CodePipeline
- Autorizzazioni necessarie per visualizzare i log di calcolo nella console CodePipeline
- AWS politiche gestite per AWS CodePipeline
- Esempi di policy gestite dal cliente
Esempi di policy gestite dal cliente
In questa sezione, puoi trovare esempi di politiche utente che concedono autorizzazioni per varie azioni. CodePipeline Queste politiche funzionano quando si utilizza l' CodePipeline API o AWS SDKs il AWS CLI. Quando si utilizza la console, devi concedere autorizzazioni specifiche aggiuntive alla console. Per ulteriori informazioni, consulta Autorizzazioni necessarie per l'uso della console CodePipeline .
Nota
Tutti gli esempi utilizzano la regione degli Stati Uniti occidentali (Oregon) (us-west-2
) e contengono account fittizi. IDs
Examples (Esempi)
-
Esempio 1: concessione di autorizzazioni per ottenere lo stato di una pipeline
-
Esempio 2: concessione delle autorizzazioni per abilitare e disabilitare le transizioni tra fasi
-
Esempio 6: allega o modifica una politica per l'integrazione di Jenkins con AWS CodePipeline
-
Esempio 7: configurazione dell'accesso tra account a una pipeline
-
Esempio 8: utilizzo delle risorse AWS associate a un altro account in una pipeline
Esempio 1: concessione di autorizzazioni per ottenere lo stato di una pipeline
L'esempio seguente concede le autorizzazioni per ottenere lo stato della pipeline denominata MyFirstPipeline
:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:GetPipelineState" ], "Resource": "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline" } ] }
Esempio 2: concessione delle autorizzazioni per abilitare e disabilitare le transizioni tra fasi
L'esempio seguente concede le autorizzazioni per disabilitare e abilitare le transizioni tra tutte le fasi nella pipeline denominata MyFirstPipeline
:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:DisableStageTransition", "codepipeline:EnableStageTransition" ], "Resource": "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline/*" } ] }
Per consentire all'utente di disabilitare e abilitare le transizioni per una singola fase in una pipeline, occorre specificare la fase. Ad esempio, per permettere all'utente di abilitare e disabilitare le transizioni per una fase denominata Staging
in una pipeline denominata MyFirstPipeline
:
"Resource": "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline/Staging"
Esempio 3: concessione delle autorizzazioni per ottenere un elenco di tutti i tipi di operazione disponibili
L'esempio seguente concede le autorizzazioni per ottenere un elenco di tutti i tipi di operazione disponibili per pipeline nella regione us-west-2
:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:ListActionTypes" ], "Resource": "arn:aws:codepipeline:us-west-2:111222333444:actiontype:*" } ] }
Esempio 4: concessione delle autorizzazioni per approvare o rifiutare operazioni di approvazione manuali
L'esempio seguente concede le autorizzazioni per approvare o rifiutare operazioni di approvazione manuale in una fase denominata Staging
in una pipeline denominata MyFirstPipeline
:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:PutApprovalResult" ], "Resource": "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline/Staging/*" } ] }
Esempio 5: concessione delle autorizzazioni per eseguire il polling di processi per un'operazione personalizzata
L'esempio seguente concede le autorizzazioni per eseguire il polling di processi per l'operazione personalizzata denominata TestProvider
, che è un tipo di operazione di Test
nella sua prima versione, in tutte le pipeline:
Nota
Il job worker per un'azione personalizzata potrebbe essere configurato con un AWS account diverso o richiedere un ruolo IAM specifico per funzionare.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:PollForJobs" ], "Resource": [ "arn:aws:codepipeline:us-west-2:111222333444:actionType:
Custom
/Test
/TestProvider
/1
" ] } ] }
Esempio 6: allega o modifica una politica per l'integrazione di Jenkins con AWS CodePipeline
Se configuri una pipeline per utilizzare Jenkins per la compilazione o il test, crea un'identità separata per tale integrazione e allega una policy IAM con le autorizzazioni minime richieste per l'integrazione tra Jenkins e. CodePipeline Questa policy è identica alla policy gestita AWSCodePipelineCustomActionAccess
. L'esempio seguente mostra una politica per l'integrazione con Jenkins:
{ "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:AcknowledgeJob", "codepipeline:GetJobDetails", "codepipeline:PollForJobs", "codepipeline:PutJobFailureResult", "codepipeline:PutJobSuccessResult" ], "Resource": "*" } ], "Version": "2012-10-17" }
Esempio 7: configurazione dell'accesso tra account a una pipeline
Puoi configurare l'accesso a pipeline per utenti e gruppi in un altro account AWS . Il modo consigliato consiste nel creare un ruolo nell'account in cui è stata creata la pipeline. Il ruolo dovrebbe consentire agli utenti dell'altro AWS account di assumere quel ruolo e accedere alla pipeline. Per ulteriori informazioni, consulta Procedura guidata: accesso tra account mediante i ruoli.
L'esempio seguente mostra una politica nell'account 80398EXAMPLE che consente agli utenti di visualizzare, ma non modificare, la pipeline denominata nella console. MyFirstPipeline
CodePipeline Questa policy è basata sulla policy gestita AWSCodePipeline_ReadOnlyAccess
, ma poiché è relativa alla pipeline MyFirstPipeline
, non può utilizzare direttamente la policy gestita. Se non desideri limitare la policy a una pipeline specifica, valuta se utilizzare una delle policy gestite create e mantenute da CodePipeline. Per ulteriori informazioni, consulta la sezione relativa all'utilizzo di policy gestite. È necessario collegare questa policy a un ruolo IAM creato per l'accesso, ad esempio un ruolo denominato: CrossAccountPipelineViewers
{ "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:GetPipeline", "codepipeline:GetPipelineState", "codepipeline:ListActionTypes", "codepipeline:ListPipelines", "iam:ListRoles", "s3:GetBucketPolicy", "s3:GetObject", "s3:ListAllMyBuckets", "s3:ListBucket", "codedeploy:GetApplication", "codedeploy:GetDeploymentGroup", "codedeploy:ListApplications", "codedeploy:ListDeploymentGroups", "elasticbeanstalk:DescribeApplications", "elasticbeanstalk:DescribeEnvironments", "lambda:GetFunctionConfiguration", "lambda:ListFunctions" ], "Resource": "arn:aws:codepipeline:us-east-2:80398EXAMPLE:MyFirstPipeline" } ], "Version": "2012-10-17" }
Dopo aver creato questa policy, crea il ruolo IAM nell'account 80398EXAMPLE e collega la policy a quel ruolo. Nelle relazioni di fiducia del ruolo, devi aggiungere l' AWS account che assume questo ruolo. L'esempio seguente mostra una politica che consente agli utenti dell'account di assumere i ruoli definiti nell'111111111111
AWS account 80398EXAMPLE:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
111111111111
:root" }, "Action": "sts:AssumeRole" } ] }
L'esempio seguente mostra una politica creata nell'111111111111
AWS account che consente agli utenti di assumere il ruolo denominato CrossAccountPipelineViewers
nell'account 80398EXAMPLE:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::80398EXAMPLE:role/
CrossAccountPipelineViewers
" } ] }
Esempio 8: utilizzo delle risorse AWS associate a un altro account in una pipeline
È possibile configurare politiche che consentano a un utente di creare una pipeline che utilizza le risorse di un altro account. AWS Ciò richiede la configurazione di policy e ruoli sia nell'account che crea la pipeline (AccountA) sia nell'account che ha creato le risorse da utilizzare nella pipeline (AccountB). È inoltre necessario creare una chiave gestita dal cliente AWS Key Management Service da utilizzare per l'accesso tra account diversi. Per ulteriori informazioni ed step-by-step esempi, consulta Crea una pipeline CodePipeline che utilizzi le risorse di un altro account AWS eConfigura la crittografia lato server per gli artefatti archiviati in Amazon S3 per CodePipeline.
Nell'esempio seguente viene illustrata una policy configurata da AccountA per un bucket S3 utilizzato per archiviare gli artefatti della pipeline. La policy concede l'accesso ad AccountB. Nel seguente esempio, l'ARN per AccountB è 012ID_ACCOUNT_B
. L'ARN per il bucket S3 è codepipeline-us-east-2-1234567890
. Sostituiscili ARNs con ARNs quelli per il bucket S3 e l'account a cui desideri consentire l'accesso:
{ "Version": "2012-10-17", "Id": "SSEAndSSLPolicy", "Statement": [ { "Sid": "DenyUnEncryptedObjectUploads", "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::
codepipeline-us-east-2-1234567890
/*", "Condition": { "StringNotEquals": { "s3:x-amz-server-side-encryption": "aws:kms" } } }, { "Sid": "DenyInsecureConnections", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::codepipeline-us-east-2-1234567890
/*", "Condition": { "Bool": { "aws:SecureTransport": false } } }, { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::012ID_ACCOUNT_B:root
" }, "Action": [ "s3:Get*", "s3:Put*" ], "Resource": "arn:aws:s3:::codepipeline-us-east-2-1234567890
/*" }, { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::012ID_ACCOUNT_B:root
" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::codepipeline-us-east-2-1234567890
" } ] }
L'esempio seguente mostra una policy configurata da AccountA che consente ad AccountB di assumere un ruolo. Questa policy deve essere applicata al ruolo del servizio per CodePipeline (CodePipeline_Service_Role
). Per ulteriori informazioni su come applicare le policy ai ruoli in IAM, consulta Modifying a Role. Nell'esempio seguente, 012ID_ACCOUNT_B
è l'ARN per AccountB:
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": [ "arn:aws:iam::
012ID_ACCOUNT_B
:role/*" ] } }
L'esempio seguente mostra una politica configurata da AccountB e applicata al ruolo dell'EC2istanza per. CodeDeploy Questa policy concede l'accesso al bucket S3 utilizzato da AccountA per archiviare gli artefatti della pipeline (codepipeline-us-east-2-1234567890
):
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*" ], "Resource": [ "arn:aws:s3:::
codepipeline-us-east-2-1234567890
/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::codepipeline-us-east-2-1234567890
" ] } ] }
L'esempio seguente mostra una politica relativa alla posizione AWS KMS dell'ARN della chiave gestita dal cliente creata in AccountA e configurata per consentire a AccountB di utilizzarla: arn:aws:kms:us-east-1:012ID_ACCOUNT_A:key/2222222-3333333-4444-556677EXAMPLE
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:GenerateDataKey*", "kms:Encrypt", "kms:ReEncrypt*", "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-east-1:
012ID_ACCOUNT_A:key/2222222-3333333-4444-556677EXAMPLE
" ] } ] }
L'esempio seguente mostra una policy in linea per un ruolo IAM (CrossAccount_Role
) creato da accountB che consente l'accesso CodeDeploy alle azioni richieste dalla pipeline in accounTa.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codedeploy:CreateDeployment", "codedeploy:GetDeployment", "codedeploy:GetDeploymentConfig", "codedeploy:GetApplicationRevision", "codedeploy:RegisterApplicationRevision" ], "Resource": "*" } ] }
L'esempio seguente mostra una policy in linea per un ruolo IAM (CrossAccount_Role
) creato da accountB che consente l'accesso al bucket S3 per scaricare artefatti di input e caricare artefatti di output:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject*", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::
codepipeline-us-east-2-1234567890
/*" ] } ] }
Per ulteriori informazioni su come modificare una pipeline per l'accesso tra più account alle risorse, consulta Fase 2: modifica della pipeline .