- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以情况是这样的:我有一个 Cloudformation,它使用一些额外的资源创建 CodeCommit 存储库,以便其他 DevOps 流程正常工作。
我收到了阻止用户推送到特定分支的要求,在本例中为 master,我找到了执行此操作的策略。来源:https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-conditional-branch.html
因此,我编写了以下内容的角色和策略:
Resources:
CodeCommitRepository:
Type: AWS::CodeCommit::Repository
Properties:
RepositoryName: !Sub '${ProjectCode}-${ProjectName}-${ComponentName}'
RepositoryDescription: !Ref CodeCommitRepositoryDescription
Tags:
- Key: fdr:general:project-code
Value: !Ref ProjectCode
- Key: fdr:general:project-name
Value: !Ref ProjectName
DenyPushRole:
Type: AWS::IAM::Role
Properties:
RoleName: !Sub '${ProjectCode}-${ProjectName}-${ComponentName}-DenyPush-Role'
ManagedPolicyArns:
- !Ref DenyPushToMasterPolicy
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Action:
- sts:AssumeRole
Effect: Allow
Principal:
Service:
- codecommit.amazonaws.com
DenyPushToMasterPolicy:
Type: AWS::IAM::ManagedPolicy
Properties:
ManagedPolicyName: !Sub '${ProjectCode}-${ProjectName}-${ComponentName}-DenyPush-Policy'
Description: Policy to deny push to master
PolicyDocument:
Version: 2012-10-17
Statement:
- Action:
- codecommit:GitPush
- codecommit:PutFile
- codecommit:DeleteBranch
- codecommit:MergePullRequestByFastForward
Effect: Deny
Resource: !GetAtt CodeCommitRepository.Arn
Condition:
StringEqualsIfExists:
codecommit:References:
- refs/heads/master
'Null':
codecommit:References: 'false'
据我所知,我不会说太多,通过使用策略和 sts:AssumeRole 创建角色,我认为任何使用该存储库的用户都会假设该角色拒绝他们推送到 master 的能力,但是事实并非如此。
我想我们可能会让事情变得过于复杂,我们应该将该策略直接应用于 IAM 上的所有用户,但我们的想法是让它做得非常精细。我做错了什么或者有可能吗?
致以诚挚的问候
最佳答案
DenyPushRole
不适用于任何用户。您将其指定为仅适用于 codecommit.amazonaws.com
,这是不正确。
用户不会自动承担任何角色。他们必须使用AssumeRole明确承担您的DenyPushRole
API 调用。您的用户还必须拥有 sts:AssumeRole
权限。
因此,一般而言,您的角色应该是:
DenyPushRole:
Type: AWS::IAM::Role
Properties:
RoleName: !Sub '${ProjectCode}-${ProjectName}-${ComponentName}-DenyPush-Role'
ManagedPolicyArns:
- !Ref DenyPushToMasterPolicy
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Action:
- sts:AssumeRole
Effect: Allow
Principal:
AWS:
- !Ref AWS::AccountId
一旦角色存在,并且用户有 sts:AssumeRole
来代入该角色,他们将使用 AssumeRole
命令来实际代入该角色。这将提供新的临时 AWS 凭证来执行该角色指定的任何操作。在您的情况下,角色仅否认,因此他们无论如何都无法执行任何操作。您需要向角色添加一些 allow
语句,以便您的用户真正能够执行某些操作,而不仅仅是 deny
。
关于amazon-web-services - AWS Cloudformation - CodeCommit - 拒绝推送到 Master,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71594662/
我知道您可以使用语法 #L55 链接到 GitHub 上的特定行号,其中 55 是行号。如何链接到 AWS CodeCommit 中的特定行号?谢谢。 最佳答案 AWS CodeCommit 目前不支
我的 ec2 实例有以下设置,但没有成功。 还有 a same issue on aws forum但没有答案。 ~/.gitconfig: [credential] helper =
我刚开始使用 AWS CodeCommit,想知道如何将 Repos 组织到项目/组中。 来自 GitLab,我可以创建一个“组”,并在这个组中创建我的存储库。 例如,我有一个项目“MyApp”,其中
我有一个代码提交仓库。 我有一个带有“发送到”=“亚马逊 SNS”的推送触发器设置。 在 SNS,我有一些电子邮件订阅者与通知事件 Hook 。 因此,每当任何开发人员对 repo 执行 git pu
我正在使用 Windows 并且我正在尝试使用 git-remote-codecommit。 使用 git-remote-codecommit 将 HTTPS 连接到 AWS CodeCommit 的
我创建了如下所示的存储库,但我想在创建时添加具有特定名称的分支。 Resources: CodeCommitRepository: Type: AWS::CodeCommit:
我正在尝试从我们的私有(private)代码提交中克隆存储库,我有必要的访问权限,但是每当我尝试在本地克隆时,我都会收到错误消息: git clone codecommit::us-east-1://
我有一个 AWS 账户。我在 us-east-1 区域创建了一个存储库。当我尝试从我的 Mac 终端访问它时,出现错误 fatal: repository 'https://git-codecommi
对于我的用例,我需要使用 CodeCommit 存储库。但我也想使用 GitLab GUI 和功能。 如果我在我的服务器上安装 GitLab,有没有办法将它直接连接到 CodeCommit 存储库(我
AWS CodeCommit 中的 Pull Requests 是否有类似的概念或解决方法?我正在尝试使用 CodeCommit 存储库实现 CI 并帮助我们避免存储库中的断头(主分支应始终成功编译和
我正在尝试在 CodeCommit 存储库下创建 Eclipse springboot 项目,并对结构有疑问。假设我有一个项目 SpringBootSample ,其中包括 eclipse .proj
当尝试使用 boto3 的 codecommit 客户端创建提交时,不知怎的,我在 create_commit 上遇到了 AttributeError,但其他命令按预期工作。 这是我正在使用的代码:
比如说,我拥有 mydomain.com,我还在 Route 53 中托管这个域。我想设置一个子域,比如 git.mydomain.com 指向 codecommit 主机。例如,git.mydoma
我目前正在使用 SSH key 将存储库从 AWS Codecommit 克隆到我的本地机器。我的 ssh git-codecommit.us-east-2.amazonaws.com 已成功连接。
我是 AWS 的新手,如有任何错误,请耐心等待。我有两个 aws 帐户(假设“开发人员”、“生产者”)。开发人员在其 Codecommit 存储库中有一个代码存储库。我想将更改提交到生产者帐户的 Co
我正在尝试使用Mac上现有的本地项目来设置AWS CodeCommit存储库。创建存储库并设置ssh之后,我尝试进行初始提交并得到了此信息 unix_listener: "/Users//.ssh/c
我想将 sonarqube 与 codecommit 集成。我的 sonarqube 服务器运行在一台 Linux 服务器上。我想在有人在 codecommit 中 checkin 代码后立即使用 s
我是 golang 的新手,我们正尝试在 go 中创建一个包并使用我们想要使用的所有服务。 我尝试在 github 中创建一个 repo 并尝试去获取;我没有遇到任何问题。 现在我想在 amazon
我已经使用 AWS CodeCommit 设置了一个 git 存储库。我可以成功地从终端推、 pull 等。我也可以成功地引入 Xcode。我正在使用 SSH 作为协议(protocol)。 当我尝试
我遇到了以下问题。作为我工作的一部分,我处理多个 AWS 账户,每个账户都有一个单独的 AWS CodeCommit 存储库和特定于账户的 IAM 用户(产生不同的用户 ID) 我想找到一种方法来配置
我是一名优秀的程序员,十分优秀!