Рейтинг:0

Как выглядит хорошая политика ключей KMS для AWS Landing Zone (Control Tower)?

флаг ml

Недавно я «сломал» Control Tower, вручную добавив ключ KMS в SNS-темы Control Tower. Это не очень хорошо работало, когда Control Tower выполняла проверку или обновление стеков. Мне пришлось удалить ключ и подтолкнуть несколько стеков, чтобы привести его в работоспособное состояние, но теперь SNS-темы не зашифрованы, и Security Hub недоволен.

Раньше я развернул ключ KMS для использования в SNS-темах для всех учетных записей организации (по одной в каждой), но теперь я понимаю, что Control Tower может сделать это за меня, если я дам ему ключ при создании или изменении Landing Zone. Насколько я понимаю, этот ключ должен быть единым ключом в учетной записи управления и с политикой, которая разрешает как минимум службы Config и CloudTrail, но также доступна для использования во всех моих учетных записях.

Если кто-то может предоставить мне шаблон того, как это будет выглядеть, я был бы очень признателен. Пожалуйста и спасибо. :)

Tim avatar
флаг gp
Tim
Не совсем понятно, о чем ваш вопрос. Можете ли вы отредактировать его, чтобы удалить лишние детали и сосредоточиться на текущем состоянии и проблеме? Уточнения, такие как объяснение того, что такое «ключ SNS», были бы полезны, например, вы могли бы иметь в виду ключ, управляемый клиентом KMS, предназначенный для использования SNS.
флаг ml
@тим Извини! Это была опечатка/сокращение. Кроме того: я немного поэкспериментировал с решением, и я думаю, что получил его. Я отвечу на свой вопрос, когда у меня будет время проверить это.
Massimo avatar
флаг ng
Я не перестаю удивляться тому, насколько непонятным может быть AWS для пользователя, не являющегося пользователем AWS.
Рейтинг:0
флаг ml

Я не мог оставить это, поэтому я провел тестирование и обнаружил, что следующее, вероятно, является хорошим решением.

Ключевые моменты, которые я усвоил:

  • Похоже, службам нужны только разрешения «kms: GenerateDataKey».
  • Используйте условие "StringLike", а не "StringEquals", если вы хотите *-подстановочный знак

Этот документация был весьма полезен. Мне не удалось создать политику с использованием «aws:SourceArn» или «aws:SourceAccount», но мне удалось создать политику с «kms:EncryptionContext:context».

Вот моя политика, номер аккаунта отредактирован:

{
    «Версия»: «2012-10-17»,
    «Идентификатор»: «Ключ SNS-KMS»,
    "Заявление": [
        {
            "Sid": "Ключевой администратор в учетной записи управления",
            «Эффект»: «Разрешить»,
            "Главный": {
                «AWS»: «arn:aws:iam::112211221122:root»
            },
            "Действие": "км:*",
            "Ресурс": "*"
        },
        {
            "Sid": "Разрешения AWS-сервисов во всех аккаунтах",
            «Эффект»: «Разрешить»,
            "Главный": {
                "Оказание услуг": [
                    "config.amazonaws.com",
                    "cloudtrail.amazonaws.com"
                ]
            },
            "Действие": [
                "кмс:СгенерироватьКлючДанных",
                "кмс:Зашифровать",
                "кмс:Расшифровать",
                "кмс:ОписатьКлюч",
                "кмс:Повторное шифрование*"
            ],
            "Ресурс": "*"
        }
    ]
}

Я надеюсь, что кто-то найдет это полезным. Обратите внимание, что я подозреваю, что вы можете и, возможно, должны использовать условия для ограничения последнего оператора. Сам не заработал.

Рейтинг:0
флаг jp

Мне удалось заставить это работать с помощью комбинации приведенного выше ответа, а также разрешения использовать ключ следующим ролям службы AWS:

"arn:aws:iam::112211221122:role/service-role/AWSControlTowerConfigAggregatorRoleForOrganizations",
"arn:aws:iam::112211221122:role/service-role/AWSControlTowerStackSetRole",
"arn:aws:iam::112211221122:роль/служебная-роль/AWSControlTowerAdmin",
"arn:aws:iam::112211221122:role/service-role/AWSControlTowerCloudTrailRole"

Я не знаю, нужно ли все это или нет, я просто предположил.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.