quorate/terraform/internal/versitygw/state.tf

55 lines
1.4 KiB
HCL

ephemeral "vault_kv_secret_v2" "terraform_state_user" {
mount = "secret"
name = var.terraform_state_vault_secret_path
}
locals {
terraform_state_secret_access_key = ephemeral.vault_kv_secret_v2.terraform_state_user.data["secretAccessKey"]
}
resource "versitygw_user" "terraform_state" {
access_key_id = var.terraform_state_principal
secret_access_key = local.terraform_state_secret_access_key
role = "user"
}
resource "minio_s3_bucket" "terraform_state" {
bucket = var.terraform_state_bucket_name
}
resource "minio_s3_bucket_policy" "terraform_state" {
bucket = minio_s3_bucket.terraform_state.bucket
depends_on = [
versitygw_user.terraform_state,
]
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Sid = "TerraformStateBucketList"
Effect = "Allow"
Principal = var.terraform_state_principal
Action = [
"s3:ListBucket",
]
Resource = [
"arn:aws:s3:::${var.terraform_state_bucket_name}",
]
},
{
Sid = "TerraformStateObjectReadWrite"
Effect = "Allow"
Principal = var.terraform_state_principal
Action = [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject",
]
Resource = [
"arn:aws:s3:::${var.terraform_state_bucket_name}/*",
]
},
]
})
}