Exemplos de políticas baseadas em identidade (IAM) - AWS CodePipeline

Exemplos de políticas baseadas em identidade (IAM)

Você pode anexar políticas a identidades do IAM. Por exemplo, você pode fazer o seguinte:

  • Anexar uma política de permissões a um usuário ou grupo na sua conta: para conceder a um usuário permissões para visualizar pipelines no console do CodePipeline, você pode anexar uma política de permissões a um usuário ou ao grupo ao qual o usuário pertence.

  • Anexar uma política de permissões a uma função: você pode anexar uma política de permissões baseada em identidade a um perfil do IAM para conceder permissões entre contas. Por exemplo, o administrador na conta A pode criar um perfil para conceder permissões entre contas para outra conta da AWS (por exemplo, conta B) ou um AWS service (Serviço da AWS), da seguinte maneira:

    1. Um administrador da Conta A cria uma função do IAM e anexa uma política de permissões à função que concede permissões em recursos da Conta A.

    2. Um administrador da Conta A anexa uma política de confiança à função identificando a Conta B como a entidade principal, que pode assumir a função.

    3. O administrador da conta B pode delegar permissões para assumir o perfil a todos os usuários na conta B. Isso permite que os usuários na conta B criem ou acessem recursos na conta A. A entidade principal na política de confiança também pode ser a entidade principal de um AWS service (Serviço da AWS), se você quiser conceder permissões a um AWS service (Serviço da AWS) para assumir o perfil.

    Para obter mais informações sobre o uso do IAM para delegar permissões, consulte Gerenciamento de acesso no Guia do usuário do IAM.

O exemplo a seguir mostra um exemplo de política de permissões que permite que um usuário desabilite e habilite transições entre todos os estágios no pipeline MyFirstPipeline na us-west-2 region:

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

O exemplo a seguir mostra uma política na conta 111222333444 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": [ { "Action": [ "codepipeline:GetPipeline", "codepipeline:GetPipelineState", "codepipeline:GetPipelineExecution", "codepipeline:ListPipelineExecutions", "codepipeline:ListActionExecutions", "codepipeline:ListActionTypes", "codepipeline:ListPipelines", "codepipeline:ListTagsForResource", "iam:ListRoles", "s3:ListAllMyBuckets", "codecommit:ListRepositories", "codedeploy:ListApplications", "lambda:ListFunctions", "codestar-notifications:ListNotificationRules", "codestar-notifications:ListEventTypes", "codestar-notifications:ListTargets" ], "Effect": "Allow", "Resource": "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline" }, { "Action": [ "codepipeline:GetPipeline", "codepipeline:GetPipelineState", "codepipeline:GetPipelineExecution", "codepipeline:ListPipelineExecutions", "codepipeline:ListActionExecutions", "codepipeline:ListActionTypes", "codepipeline:ListPipelines", "codepipeline:ListTagsForResource", "iam:ListRoles", "s3:GetBucketPolicy", "s3:GetObject", "s3:ListBucket", "codecommit:ListBranches", "codedeploy:GetApplication", "codedeploy:GetDeploymentGroup", "codedeploy:ListDeploymentGroups", "elasticbeanstalk:DescribeApplications", "elasticbeanstalk:DescribeEnvironments", "lambda:GetFunctionConfiguration", "opsworks:DescribeApps", "opsworks:DescribeLayers", "opsworks:DescribeStacks" ], "Effect": "Allow", "Resource": "*" }, { "Sid": "CodeStarNotificationsReadOnlyAccess", "Effect": "Allow", "Action": [ "codestar-notifications:DescribeNotificationRule" ], "Resource": "*", "Condition": { "ArnLike": { "codestar-notifications:NotificationsForResource": "arn:aws:iam::*:role/Service*" } } } ] }

Após criar essa política, crie o perfil do IAM na conta 111222333444 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 que permite que os usuários da conta 111111111111 da AWS assumam as funções definidas na conta 111222333444:

JSON
{ "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 da AWS que permite que os usuários assumam a função chamada CrossAccountPipelineViewers na conta 111222333444:

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

Você pode criar políticas do IAM para restringir as chamadas e os recursos a que os usuários em sua conta têm acesso e anexar essas políticas ao seu usuário administrativo. Para obter mais informações sobre como criar perfis do IAM e ver exemplos de declarações de política do IAM para o CodePipeline, consulte Exemplos de política gerenciada pelo cliente.