В чем проблема?
У моего пользователя IAM есть две политики: AdministratorAccess и ForceMultiFactorAuthentication. Когда политика ForceMultiFactorAuthentication подключена, из командной строки Windows я получаю сообщение об ошибке 403 при попытке сделать что-либо с репозиторием (например: git clone ..
). Когда я удаляю политику, я могу работать с репозиторием (например, git clone
работает).
Мой вопрос
Есть ли что-то в моей политике ForceMultiFactorAuthentication, что мешает работе codecommit? Как правильно настроить CodeCommit с многофакторной аутентификацией?
Общие этапы отдыха
- Создайте группу пользователей IAM с именем «Администраторы» с разрешениями AdministratorAccess и ForceMultiFactorAuthentication.
- Создайте пользователя IAM без полномочий root
- Добавить пользователя IAM без полномочий root в группу администраторов
- Войдите в систему как пользователь IAM без полномочий root, на вкладке «Учетные данные безопасности» настройте аутентификацию MFA (сканируйте QR-код и т. д.) И создайте учетные данные HTTPS Git для AWS CodeCommit.
- Создайте репозиторий в CodeCommit
- Из командной строки попробуйте
git clone https://git-codecommit...
локально - Командная строка возвращает
fatal: unable to access 'https://git-codecommit...': The requested URL returned error: 403
- Мой пользователь IAM без полномочий root удаляет политику ForceMultiFactorAuthentication из группы администраторов
git clone ..
и клонирует репо. Оно работает.
Не имеет смысла, потому что...
У моего пользователя IAM есть AdministratorAccess. Кроме того, сводка политики показывает, что CodeCommit имеет полный доступ ко всем ресурсам.
Моя политика ForceMultiFactorAuthentication приведена ниже (и очень похожа на предоставляется AWS):
{
"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"
}
}
}
]
}