我的账户中有一个 AWS IAM 用户(我们称之为 originAccount),该用户可以访问另一个账户(targetAccount),我正在尝试使用我的 Windows 机器上的 originAccount 凭证克隆存在于 targetAccount 中的 CodeCommit 存储库。
我可以登录并将角色切换到 targetAccount 就好了,这就是我首先创建存储库的方式。除计费外,我拥有对 targetAccount 的完全访问权限。我确实为我的 IAM 用户启用了 MFA。我曾尝试暂时关闭此功能,但没有帮助。但是,在关闭 MFA 的情况下,我可以aws s3 ls
成功完成 targetAccount 而不会出错。
SSH 和 HTTPS 都不起作用。作为测试,我可以使用静态凭据克隆它,但从长远来看这是不可接受的。我很惊讶这些东西在 AWS 上有多难......
我在 originAccount 中的用户有这个政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sts:AssumeRole"
],
"Resource": [
"arn:aws:iam::000000000000:role/Administrator"
]
}
]
}
管理员角色可以访问所有内容。targetAccount 有这种信任关系:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111111111111:user/MyUser"
},
"Action": "sts:AssumeRole",
"Condition": {
"Bool": {
"aws:MultiFactorAuthPresent": "true"
}
}
}
]
}
我尝试删除 MFA 位;没有帮助。我什至在我的用户帐户上禁用了 MFA,但这也无济于事。
我的.aws\credentials
文件包含以下几行:
[default]
aws_access_key_id = [originAccountKey]
aws_secret_access_key = [originAccountSecret]
[targetAccount]
aws_access_key_id = [originAccountKey]
aws_secret_access_key = [originAccountSecret]
我正在使用环境变量来设置要使用的配置文件,例如:
set AWS_DEFAULT_PROFILE=targetAccount
我的.gitconfig
包含:
[credential "https://git-codecommit.us-east-1.amazonaws.com"]
helper = !'C:\\path\\to\\git-credential-AWSSV4.exe' --profile='targetAccount'
UseHttpPath = true
最初那是使用默认配置文件,但那也不起作用。
问题:
- 这可能吗?我究竟做错了什么?
- SSH 和 HTTPS 都可以用于跨账户访问吗?文档令人困惑,但似乎表明只有带有凭证助手的 HTTPS 才能工作(据称)。
- 这适用于多因素身份验证吗?如果没有,是否只能为 CodeCommit 关闭?
不幸的是,我发现的其他问题都没有对我有用的答案......
我卸载并重新安装了 Git for Windows 只是为了确保没有安装它的凭证管理器(我不记得了),但它仍然无法正常工作,说repository '...' not found
。不过,我可以通过 HTTPS 克隆 originAccount 中的存储库。