テラフォームを使用したマルチ領域キーの作成
組織がクラウドネイティブのアプローチでデータを暗号化するためにAWS KMS , 自己管理に比べてコスト削減と管理負担軽減のための有料有料モデルによる高性能鍵管理システムhardware security module (HSM) .
AWS KMS組織を選ぶことによって、暗号鍵管理のための3つのオプションが得られます 顧客またはAWS管理キー付きのAWS AWS KMSについて KMSカスタムキーストアキー管理CloudHSM
Terraform AWS provider バージョン3.64.0 新資源紹介
このブログ記事では、リソースを使用してマルチ領域CMKを作成する手順をウォークスルーします
マルチリージョンキーは、データセキュリティのシナリオに便利です-災害復旧、グローバルデータ管理、分散署名アプリケーション、アクティブなアプリケーションをアクティブに複数の領域を展開します.
リソース型を必要とするので
我々のケースでは、我々はシドニーとジャカルタでそれぞれのレプリカがシンガポール地域で作成された主要キーを持ちます.
これは
他のAWSリソースポリシーとは異なり、AWS KMSキーポリシーはアカウントまたはユーザーの許可を自動的に与えません.アカウント管理者に許可を与えるには、このような権限を提供する明示的なステートメントを含める必要があります.
マルチ領域キーである
あなたはKMSキーを削除するための7(分)- 30(最大、デフォルト)日の待機期間を設定する必要があります.
このように、我々はシドニーとジャカルタでそのレプリカでシンガポール地域で主要なキーを持っています.
上記のセットアップのソースコードhere
AWS KMS組織を選ぶことによって、暗号鍵管理のための3つのオプションが得られます
aws_kms_replica_key
これで我々は創造できるCustomer Managed Key (CMK) . このブログ記事では、リソースを使用してマルチ領域CMKを作成する手順をウォークスルーします
aws_kms_replica_key
新しく導入されたのはTerraform AWS provider バージョン3.64.0 .マルチリージョンキーは、データセキュリティのシナリオに便利です-災害復旧、グローバルデータ管理、分散署名アプリケーション、アクティブなアプリケーションをアクティブに複数の領域を展開します.
リソース型を必要とするので
aws_kms_replica_key
Torraform AWSプロバイダーから、以下のブロックは我々のプロジェクトにこれを加えるのを助けます.これを達成するために、少なくとも3.64.0バージョンがあることを確認してください.terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 3.64.0"
}
}
}
マルチ領域キーはグローバルではありません.マルチ領域プライマリキーを作成し、AWSパーティション内で選択した領域に複製します.その後、各地域の独立した複数のキーを管理します.我々のケースでは、我々はシドニーとジャカルタでそれぞれのレプリカがシンガポール地域で作成された主要キーを持ちます.
# Singapore
provider "aws" {
region = "ap-southeast-1"
}
# Sydney
provider "aws" {
alias = "secondary"
region = "ap-southeast-2"
}
# Jakarta
# 3.70.0 Terraform AWS Provider release will use AWS SDK v1.42.23
# which adds ap-southeast-3 to the list of regions for the standard AWS partition.
# https://github.com/hashicorp/terraform-provider-aws/issues/22252
provider "aws" {
alias = "tertiary"
region = "ap-southeast-3"
skip_region_validation = true
}
NOTE: If you are trying to create a KMS replica in
JAKARTA
region you will encounter an error as below
Error: Invalid AWS Region: ap-southeast-3
with provider["registry.terraform.io/hashicorp/aws"].tertiary,
これは
ap-southeast-3
が追加されました.42.23とterraform AWSプロバイダーv 3で使用されます.70.0 .このための一時的な解決策はskip_region_validation = true
プロバイダーブロック内のステートメント.他のAWSリソースポリシーとは異なり、AWS KMSキーポリシーはアカウントまたはユーザーの許可を自動的に与えません.アカウント管理者に許可を与えるには、このような権限を提供する明示的なステートメントを含める必要があります.
data "aws_iam_policy_document" "kms" {
# Allow root users full management access to key
statement {
effect = "Allow"
actions = [
"kms:*"
]
resources = ["*"]
principals {
type = "AWS"
identifiers = ["arn:aws:iam::${data.aws_caller_identity.current.account_id}:root"]
}
}
# Allow other accounts limited access to key
statement {
effect = "Allow"
actions = [
"kms:CreateGrant",
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey",
]
resources = ["*"]
# AWS account IDs that need access to this key
principals {
type = "AWS"
identifiers = var.account_ids
}
}
}
多領域主キーの作成
resource "aws_kms_key" "primary" {
description = "CMK for AWS CB Blog"
enable_key_rotation = true
policy = data.aws_iam_policy_document.kms.json
multi_region = true
}
リソースaws_kms_key
は、1つの領域または複数領域プライマリKMSキーを作成するために使用されます.マルチ領域キーである
id
& key_id
MRK -接頭語として.terraform show -json terraform.tfstate | jq '.values.root_module.resources[0].values.id'
"mrk-01641fdcadec421f9ed2665c7d78ef9c"
terraform show -json terraform.tfstate | jq '.values.root_module.resources[0].values.key_id'
"mrk-01641fdcadec421f9ed2665c7d78ef9c"
別名を使用してKMSキーを参照することもできます.リソースaws_kms_alias
を使用してエイリアスを作成します.resource "aws_kms_alias" "alias" {
target_key_id = aws_kms_key.primary.id
name = format("alias/%s", lower("AWS_CB_CMK"))
}
NOTE: "name" must begin with 'alias/' and be comprised of only [a-zA-Z0-9:/_-]
多領域レプリカキーの作成
resource "aws_kms_replica_key" "secondary" {
provider = aws.secondary
description = "Multi-Region replica key"
deletion_window_in_days = 7
primary_key_arn = aws_kms_key.primary.arn
}
resource "aws_kms_replica_key" "tertiary" {
provider = aws.tertiary
description = "Multi-Region replica key"
deletion_window_in_days = 7
primary_key_arn = aws_kms_key.primary.arn
}
リソースaws_kms_replica_key
はマルチ領域レプリカキーを作成するために使用されます.ここでは、シドニーとジャカルタ地域のキーを作成するために、明示的にプロバイダー別名(AWS . Second & AWS . Tertiary)を渡しています.あなたはKMSキーを削除するための7(分)- 30(最大、デフォルト)日の待機期間を設定する必要があります.
このように、我々はシドニーとジャカルタでそのレプリカでシンガポール地域で主要なキーを持っています.
While you implement this and in continuation of this blog we will see
- Configure an SQS
- Integrating Azure Sentinel to consume AWS CloudTrail data.
上記のセットアップのソースコードhere
Reference
この問題について(テラフォームを使用したマルチ領域キーの作成), 我々は、より多くの情報をここで見つけました https://dev.to/aws-builders/creating-a-multi-region-key-using-terraform-51o4テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol