Dans cet article, nous allons créer une clé multi region via Terraform, en créant une Primary Key et ses Replica Keys, sans passer par la console.
Pré-requis Terraform
On va travailler avec plusieurs providers AWS, un par région.
provider "aws" { alias = "primary" region = "eu-west-1"}provider "aws" { alias = "replica" region = "eu-central-1"} |
Création de la Primary Multi-Region Key
data "aws_caller_identity" "current" {}resource "aws_kms_key" "primary_mrk" { provider = aws.primary description = "Primary Multi-Region Key" multi_region = true enable_key_rotation = true # Key policy controlling who can use and manage this key policy = jsonencode({ Version = "2012-10-17" Statement = [ { Sid = "EnableRootAccountFullAccess" Effect = "Allow" Principal = { AWS = "arn:aws:iam::${data.aws_caller_identity.current.account_id}:root" } Action = "kms:*" Resource = "*" }, # On peut ajouter des administrateurs de clé { Sid = "AllowAdmins" Effect = "Allow" Principal = { AWS = var.key_admin_arns } Action = [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ] Resource = "*" }, # Ici on peut ajouter la liste des users qui vont utiliser la clé { Sid = "AllowUsers" Effect = "Allow" Principal = { AWS = var.key_user_arns } Action = [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ] Resource = "*" } ] }) tags = { Name = "vprisme-key" }}resource "aws_kms_alias" "primary_alias" { provider = aws.primary name = "alias/mrk-global-ebs" target_key_id = aws_kms_key.primary_mrk.key_id} |
Création du Replica dans une autre région
Ensuite, on crée un replica basé sur la primary.
resource "aws_kms_replica_key" "replica_mrk" { provider = aws.replica description = "Replica of Primary MRK" primary_key_arn = aws_kms_key.primary_mrk.arn}resource "aws_kms_alias" "replica_alias" { provider = aws.replica name = "alias/mrk-global-ebs" target_key_id = aws_kms_replica_key.replica_mrk.key_id} |
Et on peut appliquer: terraform apply

Vérification côté AWS
Dans les deux régions :
- Les clés auront un ID commençant par
mrk- - Elles apparaîtront liées dans l’onglet Regionality



0 Commentaires