Exemplos de políticas baseadas em identidade do AWS CodePipeline - AWS CodePipeline

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Exemplos de políticas baseadas em identidade do AWS CodePipeline

Por padrão, os usuários e os perfis do IAM não têm permissão para criar ou modificar recursos do CodePipeline . Eles também não podem realizar tarefas usando a AWS API AWS Management Console AWS CLI, ou. Um administrador do IAM deve criar políticas do IAM que concedam aos usuários e perfis permissão para executarem operações de API específicas nos recursos especificados de que precisam. O administrador deve anexar essas políticas aos usuários ou grupos do IAM que exigem essas permissões.

Para saber como criar uma política baseada em identidade do IAM usando esses exemplos de documentos de política JSON, consulte Criar políticas na guia JSON no Manual do usuário do IAM.

Para saber como criar um pipeline que usa recursos de outra conta e para ver os exemplos de políticas relacionadas, consulteCriar um pipeline no CodePipeline que usa recursos de outra conta da AWS..

Exemplos de política gerenciada pelo cliente

Nesta seção, você pode encontrar exemplos de políticas de usuário que concedem permissões para várias CodePipeline ações. Essas políticas funcionam quando você está usando a CodePipeline API, AWS os SDKs ou o. AWS CLI Ao usar o console, você deve conceder permissões adicionais específicas para o console. Para ter mais informações, consulte Permissões necessárias para usar o console do CodePipeline .

nota

Todos os exemplos usam a Região do Oeste dos EUA (Oregon) (us-west-2) e contêm IDs de conta fictícios.

Exemplos

Exemplo 1: conceder permissões para obter o estado de um pipeline

O exemplo a seguir concede permissões para obter o estado do pipeline chamado MyFirstPipeline:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:GetPipelineState" ], "Resource": "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline" } ] }

Exemplo 2: conceder permissões para habilitar e desabilitar transições entre estágios

O exemplo a seguir concede permissões para permitir e desativar transições entre todos os estágios no pipeline chamado MyFirstPipeline:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:DisableStageTransition", "codepipeline:EnableStageTransition" ], "Resource": "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline/*" } ] }

Para permitir que o usuário permita ou desative transições de um único estágio em um pipeline, você deve especificar o estágio. Por exemplo, para permitir que o usuário habilite e desabilite transições de um estágio chamado Staging em um pipeline chamado MyFirstPipeline:

"Resource": "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline/Staging"

Exemplo 3: conceder permissões para obter uma lista de todos os tipos de ação disponíveis

O exemplo a seguir concede permissões para obter uma lista de todos os tipos de ação disponíveis para os pipelines na região us-west-2:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:ListActionTypes" ], "Resource": "arn:aws:codepipeline:us-west-2:111222333444:actiontype:*" } ] }

Exemplo 4: conceder permissões para aprovar ou rejeitar ações de aprovação manual

O exemplo a seguir concede permissões para aprovar ou rejeitar ações de aprovação manual em um estágio chamado Staging em um pipeline chamado MyFirstPipeline:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:PutApprovalResult" ], "Resource": "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline/Staging/*" } ] }

Exemplo 5: conceder permissões para pesquisar por trabalhos para uma ação personalizada

O exemplo a seguir concede permissões para pesquisar por trabalhos para a ação personalizada chamada TestProvider, que é um tipo de ação de Test na primeira versão, em todos os pipelines:

nota

O operador de trabalho de uma ação personalizada pode ser configurado em outra conta da AWS ou exigir um perfil do IAM específica para funcionar.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:PollForJobs" ], "Resource": [ "arn:aws:codepipeline:us-west-2:111222333444:actionType:Custom/Test/TestProvider/1" ] } ] }

Exemplo 6: anexar ou editar uma política para integração do Jenkins com AWS CodePipeline

Se você configurar um pipeline para usar o Jenkins para criar ou testar, crie uma identidade separada para essa integração e anexe uma política do IAM que tenha as permissões mínimas necessárias para a integração entre Jenkins e. CodePipeline Essa política é a mesma da política gerenciada AWSCodePipelineCustomActionAccess. O exemplo a seguir mostra uma política para integração do Jenkins:

{ "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:AcknowledgeJob", "codepipeline:GetJobDetails", "codepipeline:PollForJobs", "codepipeline:PutJobFailureResult", "codepipeline:PutJobSuccessResult" ], "Resource": "*" } ], "Version": "2012-10-17" }

Exemplo 7: configurar o acesso entre contas em um pipeline

Você pode configurar o acesso a pipelines para usuários e grupos em outra conta do AWS . A maneira recomendada é criar uma função na conta onde o pipeline foi criado. A função deve permitir que os usuários da outra AWS conta assumam essa função e acessem o pipeline. Para obter mais informações, consulte Passo a passo: acesso entre contas usando funções.

O exemplo a seguir mostra uma política na conta 80398EXAMPLE que permite que os usuários visualizem, mas não alterem, o pipeline nomeado MyFirstPipeline no console. CodePipeline Essa política é baseada na política gerenciada AWSCodePipeline_ReadOnlyAccess, mas, como ela é específica ao pipeline MyFirstPipeline, a política gerenciada não pode ser usada diretamente. Se você não desejar restringir a política a um pipeline específico, leve em consideração usar uma das políticas gerenciadas criadas e mantidas pelo CodePipeline. Para obter mais informações, consulte Como trabalhar com políticas gerenciadas. Você deve anexar essa política a um perfil do IAM criado para acesso, por exemplo, a um perfil chamado 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" }

Após criar essa política, crie o perfil do IAM na conta 80398EXAMPLE e anexe a política a esse perfil. Nas relações de confiança da função, você deve adicionar a AWS conta que assume essa função. O exemplo a seguir mostra uma política que permite que os usuários da conta 111111111111 assumam funções definidas na AWS conta 80398EXAMPLE:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111111111111:root" }, "Action": "sts:AssumeRole" } ] }

O exemplo a seguir mostra uma política criada na conta 111111111111 que permite que os usuários assumam a função nomeada CrossAccountPipelineViewers na AWS conta 80398EXAMPLE:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::80398EXAMPLE:role/CrossAccountPipelineViewers" } ] }

Exemplo 8: usar os recursos da AWS associados a outra conta em um pipeline

Você pode configurar políticas que permitam que um usuário crie um pipeline que usa recursos em outra AWS conta. Isso requer configurar políticas e funções na conta que criará o pipeline (AccountA) e na conta que criou os recursos a serem usados no pipeline (AccountB). Você também deve criar uma chave gerenciada pelo cliente AWS Key Management Service para usar no acesso entre contas. Para obter mais informações e step-by-step exemplos, consulte Criar um pipeline no CodePipeline que usa recursos de outra conta da AWS. Configure a criptografia do lado do servidor para artefatos armazenados no Amazon S3 para CodePipeline e.

O exemplo a seguir mostra uma política configurada por AccountA para um bucket do S3 usado para armazenar artefatos de pipeline. A política concede acesso à AccountB. No exemplo a seguir, o ARN para AccountB é 012ID_ACCOUNT_B. O ARN para o bucket do S3 é codepipeline-us-east-2-1234567890. Substitua esses ARNs pelos ARNs do bucket do S3 e da conta à qual você deseja permitir o acesso:

{ "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" } ] }

O exemplo a seguir mostra uma política configurada pela Conta A que permite que a Conta B assuma uma função. Essa política deve ser aplicada à função de serviço do CodePipeline (CodePipeline_Service_Role). Para obter mais informações sobre como aplicar políticas a perfis do IAM, consulte Como modificar um perfil. No exemplo a seguir, 012ID_ACCOUNT_B é o ARN para AccountB:

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": [ "arn:aws:iam::012ID_ACCOUNT_B:role/*" ] } }

O exemplo a seguir mostra uma política configurada pelo AccountB e aplicada à função de instância do EC2 para. CodeDeploy Essa política concede acesso ao bucket do S3 usado pela AccountA para armazenar artefatos codepipeline-us-east do pipeline (-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" ] } ] }

O exemplo a seguir mostra uma política de AWS KMS onde arn:aws:kms:us-east-1:012ID_ACCOUNT_A:key/2222222-3333333-4444-556677EXAMPLE está o ARN da chave gerenciada pelo cliente criada na AccountA e configurada para permitir que a AccountB a use:

{ "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" ] } ] }

O exemplo a seguir mostra uma política embutida para uma função (CrossAccount_Role) do IAM criada pelo AccountB que permite acesso CodeDeploy às ações exigidas pelo pipeline no AccountA.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codedeploy:CreateDeployment", "codedeploy:GetDeployment", "codedeploy:GetDeploymentConfig", "codedeploy:GetApplicationRevision", "codedeploy:RegisterApplicationRevision" ], "Resource": "*" } ] }

O exemplo a seguir mostra uma política em linha para um perfil do IAM (CrossAccount_Role) criado por AccountB que permite o acesso ao bucket do S3 para fazer download dos artefatos de entrada e upload dos artefatos de saída:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject*", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::codepipeline-us-east-2-1234567890/*" ] } ] }

Para obter mais informações sobre como editar um pipeline para acesso entre contas a recursos, consulte Etapa 2: Editar o pipeline .