Есть ли способ прикрепить какую-либо политику для любого пользователя в cloudfromation? Когда вы создаете стек через aws js, вы можете передать документ политики стека с Principal как "*"
. Но если вы создаете шаблон шаблона AWS :: IAM :: Policy внутри, вы должны указать роль, пользователя или группу, а "*"
не работает. Или как я могу прикрепить документ политики для вложенного стека?AWS :: IAM :: Политика для любого пользователя
ответ
Вложенные облачные шаблоны политики используют один и тот же документ политики стека в качестве родительского стека, который вы указываете в консоли AWS или через API при создании/обновлении стека (например, используя AWS SDK для JS, как вы упомянули). Как documented, для документов политики стека требуется элемент Principal
, но поддерживает только wild card (*
).
Вы можете дополнительно ограничить действия на вложенных стеков путем добавления заявления с Condition
где ResourceType
равно AWS::CloudFormation::Stack
, как описано в примере Prevent Updates to Nested Stacks в документации:
{
"Statement" : [
{
"Effect" : "Deny",
"Action" : "Update:*",
"Principal": "*",
"Resource" : "*",
"Condition" : {
"StringEquals" : {
"ResourceType" : ["AWS::CloudFormation::Stack"]
}
}
},
{
"Effect" : "Allow",
"Action" : "Update:*",
"Principal": "*",
"Resource" : "*"
}
]
}
AWS::IAM::Policy
ресурс не связанного с конкретным использования которых в случае указания политики для вложенного стека, но для справки, AWS::IAM::Policy
создает политику, которую вы прикрепляете к пользователям или группам, которые не позволяют указать элемент Principal
, как указано в документации:
Не используйте элемент Principal в правилах, которые вы прикрепляете к пользователям и группам IAM. Аналогично, вы не указываете принципала в политике доступа для роли IAM. В этих случаях принципал неявно является пользователем, к которому привязана политика (для пользователей IAM) или к пользователю, который принимает эту роль (для политик доступа к ролям). Когда политика привязана к группе IAM, основным является пользователь IAM в той группе, которая делает запрос.
Что я делаю, это политика доверительных отношений с той же (или другой) учетной записью. Он говорит о корне, но фактически применяется ко всему счету:
{
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123ACCNO4567:root"
},
"Action": "sts:AssumeRole",
"Condition": {
"Bool": {
"aws:MultiFactorAuthPresent": "true"
}
}
}
]
}
Я в замешательстве. Вы спрашиваете о применении политики обновления стека к вложенному стеку облаков? Или вы пытаетесь создать в cloudformation политику, применимую к IAM-устройствам? –
Я решил эту проблему, добавляя политику обновления через aws js sdk после создания вложенного стека – ne1s