具有多重身份验证的 AWS CodeCommit。不断出现致命错误:无法访问..请求的 URL 返回错误:403

2024-02-25

有什么问题?

我的 IAM 用户有两个策略:管理员访问 and 强制多因素身份验证. When 强制多因素身份验证策略已附加,从 Windows 命令行,尝试对存储库执行任何操作时出现 403 错误(例如:git clone ..)。当我删除策略时,我可以使用存储库(例如:git clone works).

我的问题

有什么关于我的强制多因素身份验证阻止代码提交工作的策略?如何通过多重身份验证正确设置 CodeCommit?

一般休闲步骤

  1. 创建名为“Admins”的 IAM 用户组,并具有 AdministratorAccess 和 ForceMultiFactorAuthentication 权限
  2. 创建非根 IAM 用户
  3. 将非根 IAM 用户添加到“Admins”组
  4. 以非根 IAM 用户身份登录,在“安全凭证”选项卡上设置 MFA 身份验证(扫描 QR 码等),并为 AWS CodeCommit 创建 HTTPS Git 凭证
  5. 在 CodeCommit 中创建存储库
  6. 从命令行,尝试git clone https://git-codecommit... locally
  7. 命令行返回fatal: unable to access 'https://git-codecommit...': The requested URL returned error: 403
  8. 我的非根 IAM 用户删除强制多因素身份验证来自“管理员”组的策略
  9. git clone ..它克隆了存储库。有用。

没有意义,因为...

我的 IAM 用户有管理员访问。另外,策略摘要显示 CodeCommit 拥有对所有资源的完全访问权限。


My 强制多因素身份验证政策如下(并且非常类似于AWS 提供的一个 https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_aws_my-sec-creds-self-manage.html):

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowViewAccountInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetAccountPasswordPolicy",
                "iam:GetAccountSummary",
                "iam:ListVirtualMFADevices",
                "iam:ListUsers"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowManageOwnPasswords",
            "Effect": "Allow",
            "Action": [
                "iam:ChangePassword",
                "iam:GetUser"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "AllowManageOwnAccessKeys",
            "Effect": "Allow",
            "Action": [
                "iam:CreateAccessKey",
                "iam:DeleteAccessKey",
                "iam:ListAccessKeys",
                "iam:UpdateAccessKey"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "AllowManageOwnSigningCertificates",
            "Effect": "Allow",
            "Action": [
                "iam:DeleteSigningCertificate",
                "iam:ListSigningCertificates",
                "iam:UpdateSigningCertificate",
                "iam:UploadSigningCertificate"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "AllowManageOwnSSHPublicKeys",
            "Effect": "Allow",
            "Action": [
                "iam:DeleteSSHPublicKey",
                "iam:GetSSHPublicKey",
                "iam:ListSSHPublicKeys",
                "iam:UpdateSSHPublicKey",
                "iam:UploadSSHPublicKey"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "AllowManageOwnGitCredentials",
            "Effect": "Allow",
            "Action": [
                "iam:CreateServiceSpecificCredential",
                "iam:DeleteServiceSpecificCredential",
                "iam:ListServiceSpecificCredentials",
                "iam:ResetServiceSpecificCredential",
                "iam:UpdateServiceSpecificCredential"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "AllowManageOwnVirtualMFADevice",
            "Effect": "Allow",
            "Action": [
                "iam:CreateVirtualMFADevice",
                "iam:DeleteVirtualMFADevice"
            ],
            "Resource": "arn:aws:iam::*:mfa/${aws:username}"
        },
        {
            "Sid": "AllowManageOwnUserMFA",
            "Effect": "Allow",
            "Action": [
                "iam:DeactivateMFADevice",
                "iam:EnableMFADevice",
                "iam:ListMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "DenyAllExceptListedIfNoMFA",
            "Effect": "Deny",
            "NotAction": [
                "iam:CreateVirtualMFADevice",
                "iam:EnableMFADevice",
                "iam:GetUser",
                "iam:ListMFADevices",
                "iam:ListVirtualMFADevices",
                "iam:ResyncMFADevice",
                "sts:GetSessionToken",
                "iam:ListUsers"
            ],
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "false"
                }
            }
        }
    ]
}

您的以下部分ForceMultiFactorAuthentication政策否认all请求(除了在NotAction部分)未使用 MFA 进行身份验证

{
            "Sid": "DenyAllExceptListedIfNoMFA",
            "Effect": "Deny",
            "NotAction": [
                "iam:CreateVirtualMFADevice",
                "iam:EnableMFADevice",
                "iam:GetUser",
                "iam:ListMFADevices",
                "iam:ListVirtualMFADevices",
                "iam:ResyncMFADevice",
                "sts:GetSessionToken",
                "iam:ListUsers"
            ],
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "false"
                }
            }
        }

With HTTPS GIT credentials,您将使用用户名和密码向 CodeCommit 存储库进行身份验证。没有使用会话令牌(基本上是 MFA 代码)。因此无法验证 MFA 进行身份验证。结果您的请求被拒绝。 CodeCommit 的 SSH 密钥对身份验证的情况与此类似。

要解决此问题,您可以添加必需的codecommit中的行动NotAction政策清单。您需要包括kms行动也是如此。因为 CodeCommit 存储库中的数据在传输过程中和静态时都是加密的。因此,当您从存储库执行克隆、拉取或推送活动时,需要获得加密和解密操作的权限。

以下策略修复您的 CodeCommit 403 错误。

{
            "Sid": "DenyAllExceptListedIfNoMFA",
            "Effect": "Deny",
            "NotAction": [
                "iam:CreateVirtualMFADevice",
                "iam:EnableMFADevice",
                "iam:GetUser",
                "iam:ListMFADevices",
                "iam:ListVirtualMFADevices",
                "iam:ResyncMFADevice",
                "sts:GetSessionToken",
                "iam:ListUsers",
                "codecommit:GitPull",
                "codecommit:GitPush",
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:GenerateDataKey",
                "kms:GenerateDataKeyWithoutPlaintext",
                "kms:DescribeKey"

            ],
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "false"
                }
            }
        }

由于您已将管理员访问策略附加到您的用户,因此您不需要 ForceMultiFactorAuthentication 策略的全部内容。上述政策就足够了。如果您想为所有 IAM 用户(非管理员用户)启用 MFA 限制,请使用策略的全部内容将其附加到用户。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有多重身份验证的 AWS CodeCommit。不断出现致命错误:无法访问..请求的 URL 返回错误:403 的相关文章

  • 使用 AWS SSO 时 AWS Java SDK 未找到配置文件

    当我使用 AWS SSO 登录时 我无法访问 aws 我使用以下方式从计算机登录 aws sso login profile staging 配置文件的配置如下 profile staging sso start url https som
  • S3 存储桶可以生成自己的对象键名称吗?

    我正在将 Amazon API Gateway 配置为 S3 存储桶的代理 理想情况下 我希望客户端能够将文件发布到存储桶 让 S3 为其分配一个文件名 然后在响应中返回该名称 我不想让客户端能够指定文件名 这可能吗 设置代理的文档根本没有
  • 同一 Kinesis 流的多个不同消费者

    我有一个 Kinesis 生产者 它将单一类型的消息写入流 我想在多个完全不同的消费者应用程序中处理这个流 因此 对于给定的主题 流 具有单个发布者的发布 订阅 我还想利用检查点来确保每个消费者处理写入流的每条消息 最初 我为所有消费者和生
  • AWS DMS 无法截断 SQL 事务日志

    我们正在运行 AWS DMS 以 SQL 作为源 以 DynamoDB 作为目标 我们很难截断事务日志 我们看到每个 AWS DMS 有 2 个 SQL 任务 如下所示 begin transaction WVGLQ7HFWFWJCCPK4
  • 从表单发布触发 AWS Lambda

    我创建了一个小型 AWS Lambda 它使用 SES 发送电子邮件 我正在寻找将联系我们表单从静态网站连接到此 lambda 是否可以将联系我们表单直接发布到 lambda 的 url 我没有使用服务器端框架 并且真的想避免它 我有什么选
  • 将多个平台部署到 Elastic Beanstalk (PHP/Python)

    是否可以将多个平台部署到AWS 我有一个 PHP 应用程序 我还想运行一个小的 python 脚本 我看到 PHP 平台默认安装 Python 但是使用eb deployAWS 没有接听requirements txt并安装依赖项 我已经尝
  • 如何将 kubernetes LoadBalancer Ingress URL 发布到 aws Route53

    今天 当我通过 aws 使用 kubernetes 启动一个应用程序时 它公开了一个公开可见的 LoadBalancer Ingress URL 但是要将其链接到我的域以使公众可以访问该应用程序 我需要在每个设备上的浏览器中手动进入 aws
  • 使用 AWS API Gateway 和 Lambda 从 multipart/form-data 获取非文件正文

    我正在尝试从multipart form data POST通过 API 网关连接到我的 AWS Lambda Web 服务 超文本传输 协议POST具有内容类型 multipart form data 和 URL 编码的正文 文件数据也在
  • 如何运行指定 node.js 版本 8 的 eb init?

    I run eb init并部署 我得到了node js版本6 如何在执行时指定我想要node js版本8eb init命令 这是一个有趣的问题 我很想知道是否有更简单的方法 但我是这样实现的 确定最新的SolutionStack名称如所列
  • 从本地计算机连接到 AWS 上的 Neptune

    我正在尝试从办公室的本地计算机连接到 AWS 实例中的 Neptune DB 就像从办公室连接到 RDS 一样 是否可以从本地计算机连接 Neptune 数据库 Neptune 数据库是否公开可用 开发人员有什么方法可以从办公室连接 Nep
  • AWS SQS Batch SendMessageBatchRequest 非常慢

    我的应用程序使用 SendMessageBatchRequest 将每个请求发布 10 条消息到 AWS SQS 每条消息的大小小于250字节 该应用程序预计每天发布约一百万条记录 但要实现这一目标 消息发布的速度非常慢 AmazonSQS
  • 将 Django 部署到 AWS;傻瓜静态文件

    我对这个项目的最后一步完全迷失了 到目前为止 我已经能够开发一个 Django 应用程序 它可以在本地主机上按照我想要的方式工作 我已经能够将网站部署到 AWS EC2 但我一定错过了有关提供静态文件的一些基本知识 我什至还没有尝试过媒体文
  • 如何将域添加到 aws 上的现有 SSL 证书

    我有一个与 Amazon Web Services 上的负载均衡器关联的 SSL 证书 我想在该证书上有一个额外的域 我的问题是 是否可以向 aws 上现有的 ssl 证书添加额外的域 我发现您可以在创建证书时添加其他名称 但我不知道如何使
  • 将 zip 从 Blazor WASM 应用程序上传到 AWS-S3 - 遵循教程,没有观察到错误,但存储桶中也没有文件

    我有一个 Blazor WASM 应用程序 即客户端 用户可以向其中上传一些数据 对数据进行一些完整性和安全性检查后 我想将这些数据上传到 AWS S3 中的 zip 文件中 目前我已经构建了 zip 文件 如下所示 using var o
  • 如何使用具有自定义身份验证的 AWS cognito 创建临时 s3 上传安全令牌

    因此 我对 Cognito 的 Amazon 文档中有关其声明的用例之一的内容感到有点困惑 使用您自己的身份系统 允许您的应用程序将数据保存到 AWS 云 就我而言 我想给他们 aws 令牌 以便他们从移动客户端直接上传到 s3 而无需将我
  • 从 Amazon S3 存储桶下载文件的脚本

    尝试编写脚本以从 Amazon S3 存储桶下载文件 cURL 网站上的示例遇到问题 下面的脚本产生 我们计算的请求签名与您的签名不匹配 假如 检查您的密钥和签名方法 感谢任何帮助 bin sh file filename php buck
  • 无法使用 aws 无服务器离线从另一个 lambda 调用 lambda

    我想从 serverless offline 内的另一个 lambda 调用 lambda 我想创建一个无服务器离线 Web 应用程序 但我收到此错误 UnknownError 不支持的媒体类型 在 Object extractError
  • 如何在 Elastic Beanstalk 上添加 PATH

    我想将 PATH 添加到包上eb deploy 软件包安装到 var www html vendor bin 可以通过SSH手动添加 但是如何使用配置文件添加PATH 我有这样的配置文件 ebextensions ec2 config 01
  • Spring JMS监听器即使在异常时也会确认

    我正在使用 JMS 向 SQS 队列发送 接收消息 但是即使在使用 client acknowledge 时出现异常 我也无法重新传递消息 如何实现这一目标 我尝试了一个简单的测试 JmsListener destination test
  • AWS S3 公共对象与私有对象?

    回到 S3 我的存储桶中有图像的 URL 我将在我的应用程序中呈现这些图像 但它们被设置为私有 当我尝试单击该链接时 它显示 访问被拒绝 当我将链接的设置更改为公共时 它会通过 但是我读到公共访问并不是最安全的事情 所以这本质上是一个由两部

随机推荐

  • 如何在通知区域显示进度条?

    你好 我正在做一个 Android 应用程序 在其中我将视频上传到 PHP 服务器 我在用HTTPURLConnection进行上传 我陷入了在通知区域显示进度条并更新它的困境 我搜索了近一周的时间来做到这一点 但找不到提示 如果有人知道
  • 修复 WCF 4.0 REST 的 XmlDictionaryReaderQuotas 最大长度配额 [已关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果 POST 正文长度超过 819
  • Safari 在重定向/表单提交时暂停所有动画

    我有一个点击链接时触发的动画 这是一个放大 div 然后淡出的 jQuery 动画 为了确保速度 在单击链接的同时 会触发重定向 这是必须发生的 我不能将重定向放在 jQuery 的 animate 的成功函数中 此重定向是通过表单提交完成
  • Django manage.py runserver 抛出 ImportError: AdminMediaHandler

    问题 当我跑步时python manage py runserver我收到错误ImportError cannot import name AdminMediaHandler ex venv agconti agconti Inspiron
  • 在远程节点上的 ssh 命令中使用 SED

    我编写了一个脚本来 ssh 到某些节点并运行sed节点内的命令 脚本看起来像 NODES compute 0 3 for i in NODES do echo i ssh i sed i s 172 16 48 70 172 20 54 1
  • Spark from_json 也不例外

    我正在使用 Spark 2 1 scala 2 11 我想将具有定义模式的 json 格式字符串从一个数据帧加载到另一个数据帧中 我尝试了一些解决方案 但最便宜的是标准列函数 from json 我尝试了一个例子 https jacekla
  • AWS Lambda 处理来自 DynamoDB 的流

    我正在尝试创建一个消耗 dynamoDB 表中的流的 lambda 函数 但是我想知道处理在执行过程中可能因某些错误而未处理的数据的最佳实践是什么 例如 我的 lambda 失败并且丢失了部分流 这是重新处理丢失数据的最佳方法 这是为你处理
  • Ruby 中的波形可视化

    我即将启动一个记录和编辑音频文件的项目 并且我正在寻找一个好的库 最好是 Ruby 但会考虑 Java 或 NET 以外的任何库 来实现波形的动态可视化 有谁知道我应该从哪里开始搜索 有大量数据要流入浏览器 Flash 或 Flex 图表可
  • 有没有办法转换客户 ID 及其最近的订单日期?

    我有一个查询 它为我提供了所有客户及其最后三个订单日期 EX CustomerId DateOrdered 167 2006 09 16 01 25 38 060 167 2006 09 21 13 11 53 530 171 2006 0
  • 默认按钮大小?

    如何创建按钮控件 使用CreateWindow of a BUTTON窗口类 是否具有与其他 Windows 应用程序一致的标准系统范围尺寸 尤其是高度 我当然应该考虑 DPI 和可能的其他设置 Remark Using USE CW DE
  • Gitolite 3 - 设置仓库描述(未授权)

    我正在使用 Gitolite 3 6 ssh git host info hello you this is got Git running gitolite3 v3 6 1 6 gdc8b590 on git 1 7 10 4 R W m
  • 阻止 ScrollView 将焦点设置在 EditText 上

    Android 的 ScrollView 当滚动或滑动时 喜欢在 EditText 是其子级之一时设置其焦点 当您滚动然后释放时会发生这种情况 有什么办法可以阻止这种行为吗 我几乎尝试了所有我能想到的以及我在 StackOverflow 上
  • iOS 14 Widget 闪烁或冻结,chronod 崩溃

    我已经为我的应用程序实现了一个小部件扩展 即 iOS 14 小部件 使用 WidgetKit 通常 该小部件工作得很好 但有时它会进入反复闪烁并最终冻结的状态 我尝试将调试器连接到小部件进程 但它没有捕获任何崩溃或异常 然而 我确实在我的设
  • 如何在 C 预处理器中生成错误或警告?

    我有一个必须仅在调试模式下编译的程序 测试目的 如何让预处理器阻止在 RELEASE 模式下进行编译 放置在任何地方 ifndef DEBUG error Only Debug builds are supported endif 以供参考
  • 如何在 Xamarin.Forms 中使用 ToolBarItems 的本机平台图标(以编程方式)?

    我拥有的 我有一个Xamarin Forms应用程序与ToolBar ActionBar在安卓上 Navigation Bar在 iOS 上 内ToolBar我有一个ToolBarItem删除某些东西 我想要的是 For the ToolB
  • 仅从 Bash 脚本中的路径获取文件名 [重复]

    这个问题在这里已经有答案了 如何只获取没有扩展名和路径的文件名 以下内容没有给我扩展名 但我仍然附加了路径 source file filename no ext source file 许多类 UNIX 操作系统都有一个basename出
  • VS Code 显示“mvn”未被识别为内部或外部命令

    我正在尝试使用 VS Code 创建一个 Maven 项目 但是当我运行命令时 它显示 mvn is not recognized as an internal or external command operable program or
  • 如何在Python中为接口分配IP地址?

    我有 python 脚本为我的无线和有线接口设置 IP4 地址 到目前为止 我使用subprocess命令如下 subprocess call ip addr add local 192 168 1 2 24 broadcast 192 1
  • 使用 async/await 时如何更好地处理已释放的控件

    考虑在 UI 线程上运行的这段代码 dividends await Database GetDividends if IsDisposed return Do expensive UI work here earnings await Da
  • 具有多重身份验证的 AWS CodeCommit。不断出现致命错误:无法访问..请求的 URL 返回错误:403

    有什么问题 我的 IAM 用户有两个策略 管理员访问 and 强制多因素身份验证 When 强制多因素身份验证策略已附加 从 Windows 命令行 尝试对存储库执行任何操作时出现 403 错误 例如 git clone 当我删除策略时 我