Пользователь 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"
},
Как я могу понять, что происходит и какие дополнительные разрешения необходимы?