я запутался с управлением политикой IAM для Secrets manager.
Настройка:
- Учетная запись AWS с ролями IAM, определенными для пользователей
- Каждая роль IAM пользователя должна получать разрешения на хранение секретов в соответствии со схемой именования
Проблема:
Action: secretsmanager:*
не работает, пользователи могут создавать секреты, но не могут их читать.
, чтобы разрешить getSecretValue
, я должен указать второе утверждение политики, которое явно дает доступ.
Хотя условие ForAnyValue:StringLike
работает в первом операторе, если я добавлю его ко второму, чтобы ограничить количество пользователей, оно выдаст отказ в разрешении.
Вот мои политические заявления, которые являются единственным способом заставить его работать.Но, как я понимаю, было бы хорошо иметь только первое утверждение.
Я отображаю политики через оболочку Python.Так что, пожалуйста, не путайте со строками формата
{
"Effect": "Allow",
"Action": [
"secretsmanager:*"
],
"Resource": [
f"arn:aws:secretsmanager:{region}:{account_number}:secret:{role_name}-*"
],
"Condition": {
"ForAnyValue:StringLike": {
"secretsmanager:Name": f"{role_name}-*"
}
}
}
allow_user_to_list_secrets_manager = {
"Effect": "Allow",
"Action": [
"secretsmanager:DescribeSecret",
"secretsmanager:ListSecrets",
"secretsmanager:GetSecretValue"
],
"Resource": [
f"*"
]
}
ОБНОВЛЕНИЕ Я до сих пор не до конца понял, почему мне нужны две политики, но удаление элемента условия решило мою проблему.Я получил это из документов AWS, но это, кажется, запутывает заявление о политике.Также работает фильтрация по ресурсу.