63 lines
1.5 KiB
Terraform
63 lines
1.5 KiB
Terraform
|
|
ephemeral "vault_kv_secret_v2" "forgejo_user" {
|
||
|
|
mount = "secret"
|
||
|
|
name = var.forgejo_vault_secret_path
|
||
|
|
}
|
||
|
|
|
||
|
|
locals {
|
||
|
|
forgejo_secret_access_key = ephemeral.vault_kv_secret_v2.forgejo_user.data["secretAccessKey"]
|
||
|
|
}
|
||
|
|
|
||
|
|
resource "versitygw_user" "forgejo" {
|
||
|
|
access_key_id = var.forgejo_principal
|
||
|
|
secret_access_key = local.forgejo_secret_access_key
|
||
|
|
role = "user"
|
||
|
|
}
|
||
|
|
|
||
|
|
resource "minio_s3_bucket" "forgejo" {
|
||
|
|
bucket = var.forgejo_bucket_name
|
||
|
|
}
|
||
|
|
|
||
|
|
resource "minio_s3_bucket_policy" "forgejo" {
|
||
|
|
bucket = minio_s3_bucket.forgejo.bucket
|
||
|
|
|
||
|
|
depends_on = [
|
||
|
|
versitygw_user.forgejo,
|
||
|
|
]
|
||
|
|
|
||
|
|
policy = jsonencode({
|
||
|
|
Version = "2012-10-17"
|
||
|
|
Statement = [
|
||
|
|
{
|
||
|
|
Sid = "ForgejoBucketAccess"
|
||
|
|
Effect = "Allow"
|
||
|
|
Principal = var.forgejo_principal
|
||
|
|
Action = [
|
||
|
|
"s3:GetBucketAcl",
|
||
|
|
"s3:GetBucketLocation",
|
||
|
|
"s3:ListBucket",
|
||
|
|
"s3:ListBucketMultipartUploads",
|
||
|
|
]
|
||
|
|
Resource = [
|
||
|
|
"arn:aws:s3:::${var.forgejo_bucket_name}",
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
Sid = "ForgejoObjectAccess"
|
||
|
|
Effect = "Allow"
|
||
|
|
Principal = var.forgejo_principal
|
||
|
|
Action = [
|
||
|
|
"s3:AbortMultipartUpload",
|
||
|
|
"s3:DeleteObject",
|
||
|
|
"s3:GetObject",
|
||
|
|
"s3:GetObjectAcl",
|
||
|
|
"s3:ListMultipartUploadParts",
|
||
|
|
"s3:PutObject",
|
||
|
|
"s3:PutObjectAcl",
|
||
|
|
]
|
||
|
|
Resource = [
|
||
|
|
"arn:aws:s3:::${var.forgejo_bucket_name}/*",
|
||
|
|
]
|
||
|
|
},
|
||
|
|
]
|
||
|
|
})
|
||
|
|
}
|