Рейтинг:1

Ошибка «доступ к kms запрещен» возвращается при попытке получить секрет из AWS Secrets Manager

флаг ae

Пользователь IAM в нашей учетной записи aws пытается получить определенный секрет из Secrets Manager через aws cli, но он не может этого сделать, хотя у него должны быть необходимые разрешения:

aws secretsmanager get-secret-value --secret-id "config/my/secret"

Это не удается с ошибкой доступ к кмс запрещен. Мы используем Ключ шифрования по умолчанию для шифрования секрета и политики ключей (управляемой AWS) мне кажется разумной:

    "Заявление": [
    {
        «Sid»: «Разрешить доступ через AWS Secrets Manager для всех субъектов в учетной записи, которым разрешено использовать AWS Secrets Manager»,
        «Эффект»: «Разрешить»,
        "Главный": {
            "АВС": "*"
        },
        "Действие": [
            "кмс:Зашифровать",
            "кмс:Расшифровать",
            "кмс:Повторное шифрование*",
            "кмс:СоздатьГрант",
            "kms:Ключ описания"
        ],
        "Ресурс": "*",
        "Условие": {
            "StringEquals": {
                "kms:CallerAccount": "<УДАЛЕНО>",
                "kms:ViaService": "secretsmanager.eu-west-1.amazonaws.com"
            }
        }
    },
    {
        «Sid»: «Разрешить доступ через AWS Secrets Manager для всех субъектов в учетной записи, которым разрешено использовать AWS Secrets Manager»,
        «Эффект»: «Разрешить»,
        "Главный": {
            "АВС": "*"
        },
        "Действие": "kms:GenerateDataKey*",
        "Ресурс": "*",
        "Условие": {
            "StringEquals": {
                "kms:CallerAccount": "<отредактировано>"
            },
            "StringLike": {
                "kms:ViaService": "secretsmanager.*.amazonaws.com"
            }
        }
    }

В Разрешения для ключа KMS они говорят, что тебе нужно

  • кмс:Генератедатакей
  • кмс: расшифровать

Это предусмотрено ключевой политикой.

Пользователь прикрепил политику IAM, чтобы предоставить ему разрешения на использование Secrets Manager через API, как описано здесь: https://curiousprogrammer.net/posts/2022-02-16-aws-secrets-manager-least-привилегия#_2_create_the_iam_policy

Я посмотрел в Cloudtrail и не нашел ничего полезного, только сообщение «неизвестная ошибка»:

"eventSource": "secretsmanager.amazonaws.com",
"eventName": "Получить секретное значение",
"awsRegion": "ЕС-запад-1",
"userAgent": "aws-cli/2.4.18 Python/3.9.10 Darwin/21.2.0 source/arm64 prompt/off command/secretsmanager.get-secret-value",
"код_ошибки": "Внутренний отказ",
"errorMessage": "Произошла неизвестная ошибка",
"параметры запроса": {
  "secretId": "config/my/secret"
},

Как я могу понять, что происходит и какие дополнительные разрешения необходимы?

Tim avatar
флаг gp
Tim
Я бы временно дал пользователю полные разрешения KMS, чтобы посмотреть, поможет ли это, проверяет ли CloudTrail используемые вызовы API или просто добавляет вероятные вызовы один за другим. Также проверьте политику ключей KMS.
флаг ae
Спасибо за указатель! Теперь я подозреваю, что проблема заключается в том, как мы применяем MFA для пользователей IAM.
Рейтинг:1
флаг ae

Это было вызвано нашим Применение политики MFA В частности, эта часть:

{
        "Sid": "DenyAllExceptListedIfNoMFA",
        «Эффект»: «Запретить»,
        "Не действие": [
            "iam:CreateVirtualMFADevice",
            "iam:EnableMFADevice",
            "ЯМ:ПолучитьПользователя",
            "iam:ListMFADevices",
            "iam:ListVirtualMFADevices",
            "iam:ResyncMFADevice",
            "sts:GetSessionToken"
        ],
        "Ресурс": "*",
        "Условие": {
            "BoolIfExists": {"aws:MultiFactorAuthPresent": "false"}
        }
    }

Поскольку aws cli обычно не использует MFA, политика была применена, а правило «Запретить» переопределяло рабочие разрешения, указанные в политике ключа.

Решение заключалось в использовании временных токенов сеанса: https://aws.amazon.com/premiumsupport/knowledge-center/authenticate-mfa-cli/

$ aws sts get-session-token --serial-number arn-of-mfa-device --token-code code-from-token

Подробнее об этом я рассказывал в своем блоге: https://curiousprogrammer.net/posts/2022-02-16-aws-secrets-manager-least-привилегия#_update_2022_02_22_the_perils_of_mfa

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.