Terraform-S3 액세스 제어 업데이트 : acl을 grant로 대체하는 방법에 대한 질문
액세스 로깅 버킷으로 사용되는 S3 버킷이 있습니다.
이에 대한 현재 모듈 및 리소스 TF 코드는 다음과 같습니다.
module "access_logging_bucket" {
source = "../../resources/s3_bucket"
environment = "${var.environment}" region = "${var.region}"
acl = "log-delivery-write"
encryption_key_alias = "alias/ab-data-key"
name = "access-logging"
name_tag = "Access logging bucket"
}
resource "aws_s3_bucket" "default" {
bucket = "ab-${var.environment}-${var.name}-${random_id.bucket_suffix.hex}" acl = "${var.acl}"
depends_on = [data.template_file.dependencies]
tags = {
name = "${var.name_tag}"
. . .
}
lifecycle {
ignore_changes = [ "server_side_encryption_configuration" ]
}
}
내 경우에는 변수 acl 의 기본값 이 variable "acl" { default = "private" }
있습니다. 또한 Terraform S3 버킷 속성 참조 문서에 명시된 바와 같습니다 .
이 버킷의 경우로 설정됩니다 log-delivery-write
.
다음 부여 를 추가 하고 서로 충돌 할 때 acl 을 제거 하도록 업데이트하고 싶습니다 .
grant {
permissions = ["READ_ACP", "WRITE"]
type = "Group"
uri = "http://acs.amazonaws.com/groups/s3/LogDelivery"
}
grant {
id = data.aws_canonical_user_id.current.id
permissions = ["FULL_CONTROL"]
type = "CanonicalUser"
}
내 질문은 다음과 같습니다.
acl
속성을 제거하고 위에서 언급 한 내용을 추가해도grants
버킷에 대한 올바른 액세스 제어가 유지됩니다. 즉, 액세스 로깅 버킷으로 사용하는 것이 여전히 좋은 권한 구성입니다.- 리소스 구성에서 acl을 제거
private
하면 기본값이됩니다. 그게 올바른 일입니까, 아니면 null로 만들어야합니까?
몇 가지 문서를 Log Delivery group
확인하면 내가 언급 한 보조금으로 acl 을 대체 할 수 있다고 생각하게 됩니다.
로그 전달 그룹 – 대표자 http://acs.amazonaws.com/groups/s3/LogDelivery. 버킷에 대한 WRITE 권한을 통해이 그룹은 버킷에 서버 액세스 로그 (Amazon S3 서버 액세스 로깅 참조)를 쓸 수 있습니다. ACL을 사용할 때 피부 여자는 AWS 계정이거나 사전 정의 된 Amazon S3 그룹 중 하나 일 수 있습니다.
답변
에 기초 보조금 로그인 배달 권한-일반 문서, 내가 나서서 및 실행 terraform이 적용됩니다 .
처음 실행할 때 Bucket owner
권한을 올바르게 설정 했지만 S3 log delivery group
. 그래서 나는 terraform plan
다시 실행 했고 다음과 같은 acl grant 차이점을 보여주었습니다. 에 acl
대한 보조금을 제거한 값을 처음 업데이트했을 가능성이 큽니다 log delivery group
.
따라서 나는 다시 실행했고 terraform apply
잘 작동하고 로그 전달 그룹 도 수정했습니다 .
# module.buckets.module.access_logging_bucket.aws_s3_bucket.default will be updated in-place
~ resource "aws_s3_bucket" "default" {
acl = "private"
bucket = "ml-mxs-stage-access-logging-9d8e94ff"
force_destroy = false
. . .
tags = {
"name" = "Access logging bucket"
. . .
}
+ grant {
+ permissions = [
+ "READ_ACP",
+ "WRITE",
]
+ type = "Group"
+ uri = "http://acs.amazonaws.com/groups/s3/LogDelivery"
}
+ grant {
+ id = "ID_VALUE"
+ permissions = [
+ "FULL_CONTROL",
]
+ type = "CanonicalUser"
}
. . .
}
Plan: 0 to add, 1 to change, 0 to destroy.