Получение ARN пользователя, отличного от root, в шаблоне облачной информации для системы управления ключами (AWS))

В настоящее время я пишу шаблон формирования облака (CFT) для KMS (службы управления ключами), где я хочу предоставить ключевые административные разрешения и разрешения на использование ключей пользователям, отличным от root. Я хочу, чтобы это вызывалось динамически через CFT. На данный момент я могу предоставить root эти разрешения. Ниже приводится политика:

  {
                        "Sid": "Allow attachment of persistent resources",
                        "Effect": "Allow",
                        "Principal": {
                            "AWS": [
                                "arn:aws:iam::111122223333:user/KMSUser"
                                {
                                    "Fn::Join": [
                                        ":",
                                        [
                                            "arn:aws:iam:",
                                            {
                                                "Ref": "AWS::AccountId"
                                            },
                                            "root"
                                        ]
                                    ]
                                }
                            ]
                        },
                        "Action": [
                            "kms:CreateGrant",
                            "kms:ListGrants",
                            "kms:RevokeGrant"
                        ],
                        "Resource": "*",
                        "Condition": {
                            "Bool": {
                                "kms:GrantIsForAWSResource": true
                            }
                        }
                    }

Как я могу получить arn и имя пользователя динамически?


person Community    schedule 14.02.2018    source источник


Ответы (1)


Вы можете использовать параметры.

Определите параметр для имени пользователя

"Username": {
  "Description": "Username details",
  "Type": "String"
}

В определении имени роли укажите на параметр вместо того, чтобы жестко указывать его на root.

"Fn::Join": [
    ":",
    [
        "arn:aws:iam:",
        {
            "Ref": "AWS::AccountId"
        },
        {
            "Ref": "Username"
        }
    ]
]
person krisnik    schedule 14.02.2018
comment
Спасибо за ответ. Мой вопрос: если мы поместим его в раздел параметров, всегда ли он будет просить пользователя ввести ARN / имя пользователя? Есть ли механизм, чтобы получить его прямо из реквизитов аккаунта? - person ; 14.02.2018
comment
Нет, вы должны указать это в параметрах. Если пользователь создан с использованием другого шаблона CF, вы можете экспортировать его вывод и использовать его в этом шаблоне. Для этого вы можете использовать Fn :: ImportValue. docs.aws.amazon.com/AWSCloudFormation/ последняя / UserGuide / - person krisnik; 14.02.2018