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

AWS CodePipelineExemplos de políticas baseadas em identidade do

Por padrão, os usuários e perfis do IAM não têm permissão para criar ou modificar recursos do CodePipeline. Eles também não podem executar tarefas usando o Console de gerenciamento da AWS, a AWS CLI ou uma API da AWS. 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 conferir exemplos de políticas relacionados, consulte Criar um pipeline no CodePipeline que usa recursos de outra conta da AWS..

Exemplos de política gerenciada pelo cliente

Nesta seção, você encontrará exemplos de políticas de usuário que concedem permissões para diversas ações do CodePipeline. Estas políticas funcionam quando você está usando a API do CodePipeline, os SDKs da AWS ou a AWS CLI. Ao usar o console, você deve conceder permissões adicionais específicas para o console. Para obter 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:

JSON
{ "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:

JSON
{ "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:

JSON
{ "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:

JSON
{ "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.

JSON
{ "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 a integração do Jenkins ao AWS CodePipeline

Se você configurar um pipeline para usar o Jenkins para criação ou teste, 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 o Jenkins e o CodePipeline. Essa política é a mesma da política gerenciada AWSCodePipelineCustomActionAccess. O exemplo a seguir mostra uma política para integração do Jenkins:

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

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 conta da AWS 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 aos usuários visualizar, mas não alterar, o pipeline MyFirstPipeline no console do 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 o uso de 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:

JSON
{ "Version":"2012-10-17", "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:111122223333:MyFirstPipeline" } ] }

Após criar essa política, crie o perfil do IAM na conta 80398EXAMPLE e anexe a política a esse perfil. Nos relacionamentos de confiança da função, você deve adicionar a conta da AWS que assumirá essa função.

O exemplo a seguir mostra uma política criada na conta 111111111111 da AWS que permite aos usuários assumir o perfil CrossAccountPipelineViewers na conta 80398EXAMPLE:

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