У меня есть пользователь AWS IAM в моей учетной записи (назовем его originAccount), который имеет доступ к другой учетной записи (targetAccount), и я пытаюсь клонировать репозиторий CodeCommit, который существует в targetAccount используя мои учетные данные originAccount на моей машине Windows.AWS CodeCommit доступ к репозиторию межсетевого обмена не работает
Я могу войти и переключить роли в targetAccount просто отлично, вот как я создал репозиторий в первую очередь. У меня есть полный доступ к targetAccount, за исключением выставления счетов. У меня есть MFA для моего пользователя IAM. Я попытался временно отключить это, но это не помогло. Однако при выключенном MFA я могу сделать aws s3 ls
успешно без ошибок для targetAccount.
Ни SSH, ни HTTPS не работают. I может клонировать его со статическими учетными данными, как тест, но это не приемлемо в долгосрочной перспективе. Я поражен тем, насколько труден этот материал на 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 для Windows, просто чтобы убедиться, что не был установлен диспетчер учетных данных для этого (я не мог не помню), но он все равно не работает, говорит repository '...' not found
. Я могу клонировать репозитории в originAccount через HTTPS.
Я получил это, чтобы работать на Linux, собирается попробовать Windows следующий ... – Josh
Это сработало, спасибо! Чтобы уточнить, идентификатор учетной записи 'role_arn' является целевой учетной записью (где существует Администратор), а идентификатор учетной записи' mfa_serial' - это начальная учетная запись. Я даже не знал, что существует «mfa_serial». Наконец, в моих файлах 'credentials' нет префикса' profile' в заголовке '[]', т. Е. Я просто '[target_account]'. – Josh