与 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 访问异常的主要内容,如果未能解决你的问题,请参考以下文章
在 env 中找到的部分凭证,缺少:AWS_SECRET_ACCESS_KEY 使用 Bitbucket 管道
使用 aws codebuild 未收到有关 bitbucket 拉取请求的 Sonar 评论
直接从 Bitbucket 部署到 AWS Elastic Beanstalk
AWS Lambda 使用 Java 与 AWS RDS 集成,但在加载类软件/amazon/awssdk/auth/credentials/AwsCredentialsProvider 时遇到错误