Ответ от BMW правильный, если политика ключей отключает использование ролей IAM, однако, если политика ключей KMS была настроена для включения политик IAM, вам, возможно, не нужно ее обновлять.
В документации для использования ключевых политик объясняется, что вы должны иметь ключевую политику, но вы также можете использовать политики IAM для управления доступом.
Если политика ключей KMS содержит этот оператор, то политики IAM включены, и вы можете продолжить создание политик IAM для решения проблемы; вам не нужно беспокоиться об обновлении ключевой политики.
{
"Sid": "Enable IAM User Permissions",
"Effect": "Allow",
"Principal": {"AWS": "arn:aws:iam::111122223333:root"},
"Action": "kms:*",
"Resource": "*"
}
В Terraform вы можете создать политику IAM и привязать ее к временной роли.
Ниже предполагается, что у вас уже есть код в Terraform для роли Temp IAM, которую я здесь обозначил как temp_role_made_earlier
Создайте документ политики IAM (рекомендуемый метод, лучше, чем импорт json, и менее беспорядочный, чем использование шаблонов)
data "aws_iam_policy_document" "kms_use" {
statement {
sid = "Allow KMS Use"
effect = "Allow"
actions = [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey",
]
resources = [
"<arn of the key goes here>"
]
}
}
Создайте политику IAM из этого документа
resource "aws_iam_policy" "kms_use" {
name = "kmsuse"
description = "Policy to allow use of KMS Key"
policy = "${data.aws_iam_policy_document.kms_use.json}"
}
Прикрепите его к роли
resource "aws_iam_role_policy_attachment" "temp" {
role = "${aws_iam_role.temp_role_made_earlier.name}"
policy_arn = "${aws_iam_policy.kms_use.arn}"
}
ПРИМЕЧАНИЕ
aws_iam_role_policy_attachment
использует атрибут name
для роли, а не arn.
- Вы можете прикрепить к ролям столько политик, сколько захотите
- Если вы не знаете arn ключа, но знаете псевдоним ключа KMS, вы можете найти arn, используя источник данных aws_kms_key, который позволит вам получить arn без принятия терраформом контроля над ресурсом Key. Также может быть полезно проверить, существует ли ключ.
person
Davos
schedule
07.11.2018