与 BitBucket 集成时 AWS CodePipeline 的 AWS IAM 访问异常

Posted

技术标签:

【中文标题】与 BitBucket 集成时 AWS CodePipeline 的 AWS IAM 访问异常【英文标题】:AWS IAM access exception with AWS CodePipeline when integrating with BitBucket 【发布时间】:2020-08-17 14:55:20 【问题描述】:

我正在尝试使用 AWS CodePipeline 为我们的 CICD 流程构建管道。我单击“创建管道”,提供名称并使用第一个面板的默认值。在下一个面板上,选择“BitBucket(beta)”作为源提供程序时,我得到以下访问异常:

AccessDeniedException: 用户:arn:aws:iam::280945876345:user/Roger 无权执行:codestar-connections:ListConnections on resource:arn:aws:codestar-connections:us-west-2:280945876345:*

我浏览了文档并向 IAM 用户提供了对 CodePipeline、CodeDeploy、CodeStar、CodeBuildAdmin、CloudFormation、AmazonS3、AmazonECS、AWSCodeCommit 的完全访问权限。我没有找到任何可以添加的与 codestar-connections:* 相关的策略。我了解 CodePipeline-BitBucket 集成处于 Beta 阶段,但只是想检查是否有其他人遇到此问题并已解决。

【问题讨论】:

您必须将 codestar-connections:* 添加到 Roger 角色。 感谢您的回复。如何将 codestar-connections:* 添加到用户 Roger ?我找不到具有该名称的政策。我尝试创建如下所示的策略: "Version": "2012-10-17", "Statement": [ "Effect": "Allow", "Action" : "codestar-connections:*", "Resource " : "*" ] 我收到一条消息“此策略不授予任何权限。要授予访问权限,策略必须具有具有适用资源或条件的操作”,我认为这意味着服务不可用。 一种方法是:转到 IAM->Roles->Roger 角色。将内联策略直接添加到角色。您必须自己构建策略。控制台应该会指导您。 我继续向用户添加了 codestar-connections* 策略,并忽略了服务不可用的消息。现在可以了。感谢您的帮助。 没问题。如果您不介意,我会添加一个答案以供将来参考。 【参考方案1】:

根据 cmets,问题是由于缺少对 codestar-connections 的权限。

解决方案是在具有codestar-connections:* 权限的相关角色中创建内联策略。

【讨论】:

【参考方案2】:

通过执行以下步骤更新用户权限对我有用:

    通过此链接访问列出 IAM 中所有用户的页面:https://console.aws.amazon.com/iamv2/home?#/users 选择我们需要授予权限的用户 点击左侧的+ Add inline policy按钮 点击Service字段前面的Choose a service 在搜索栏输入CodeStar Connections并在搜索结果中点击 我选择了All CodeStar Connections actions (codestar-connections:*) 复选框,而您可以根据需要选择任何访问级别。 这有时会产生警告并要求您从Resources 字段中添加ARN。在这种情况下,请点击 Add ARN 并填写字段。 点击底部的Review Policy 继续将此策略添加到用户。

另一个选项是更新整个user group的权限

【讨论】:

【参考方案3】:

Marcin 和 Adil 的答案都对我有用,但是在尝试部署时收到此错误“用户无权执行:iam:CreateRole”。

然后我发现这个link 帮助我制定了最终政策:


    "Version": "2012-10-17",
    "Statement": [
        
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "codestar-connections:GetIndividualAccessToken",
                "codestar-connections:CreateConnection",
                "codestar-connections:ListInstallationTargets",
                "codestar-connections:StartOAuthHandshake",
                "codestar-connections:GetInstallationUrl",
                "codestar-connections:ListHosts",
                "codestar-connections:StartAppRegistrationHandshake",
                "codestar-connections:RegisterAppCode",
                "codestar-connections:ListConnections",
                "codestar-connections:CreateHost"
            ],
            "Resource": "*"
        ,
        
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "codestar-connections:*",
            "Resource": [
                "arn:aws:codestar-connections:*:474678791249:connection/*",
                "arn:aws:codestar-connections:*:474678791249:host/*"
            ]
        ,
        
            "Sid": "VisualEditor2",
            "Effect": "Allow",
            "Action": [
                "iam:CreateRole",
                "iam:CreatePolicy",
                "iam:PutRolePolicy",
                "iam:AttachRolePolicy",
                "iam:DetachRolePolicy"
            ],
            "Resource": [
                "*"
            ]
        
    ]

将其粘贴到 JSON 编辑器而不是可视编辑器中会使用以前的 JSON 创建策略。

【讨论】:

以上是关于与 BitBucket 集成时 AWS CodePipeline 的 AWS IAM 访问异常的主要内容,如果未能解决你的问题,请参考以下文章

Bot 与 bitbucket 集成的问题

在 env 中找到的部分凭证,缺少:AWS_SECRET_ACCESS_KEY 使用 Bitbucket 管道

使用 aws codebuild 未收到有关 bitbucket 拉取请求的 Sonar 评论

直接从 Bitbucket 部署到 AWS Elastic Beanstalk

AWS Lambda 使用 Java 与 AWS RDS 集成,但在加载类软件/amazon/awssdk/auth/credentials/AwsCredentialsProvider 时遇到错误

从Bitbucket管道中的Amazon ECR中提取图像