При работе с удостоверениями / разрешениями AWS важно понимать, что существует два типа политик:
- политики на основе идентификаторов (вы присоединяете их к удостоверениям)
- resource-основанные политики (вы присоединяете их к ресурсам)
Первые, основанные на идентификации политики, привязаны к пользователю, группе или роли IAM.Эти политики позволяют указать, что может делать это удостоверение (пользователь, группа или роль).Эти политики не имеют элемент Principal
, поскольку принципалом, к которому применяется политика, является неявно пользователь / процесс, представляющий учетные данные.
Последние, основанные на ресурсах политики, прикрепленына ресурс.Эти политики определяют, кто может получить доступ к данному ресурсу и что они могут делать.Чаще всего вы увидите их с сегментами S3, но они также могут быть связаны с другими типами ресурсов.Эти политики do имеют и требуют элемент Principal
.
В вашем случае вам необходимо настроить политику на основе ресурсов для секрета Secrets Manager, контролирующего, кто имеет доступ ксекрет.
Мне удалось добавить следующую политику в секрет диспетчера секретов (я сохранил эту политику в файле с именем mysecret.json
:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "secureme",
"Effect": "Allow",
"Action": "secretsmanager:GetSecretValue",
"Principal":
"AWS": "arn:aws:iam::123456789012:role/mylambdarole"
},
"Resource": "arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret-xyz"
}
]
}
Вы не можете использовать AWSКонсоль, чтобы применить эту политику к секрету, насколько я знаю, но вы можете использовать awscli или SDK. Я использовал awscli, следующее:
aws secretsmanager put-resource-policy \
--secret-id mysecret \
--resource-policy file://mysecret.json