2023.08.05 - [AWS] - AWS Config 테라폼 모듈 구현
AWS Config 테라폼 모듈 구현
AWS Config 정책을 코드로 작성해서 관리하고, 재사용이 가능하도록 terraform 으로 구현해보자! Managed rule 생성 aws config에서 기본적으로 사용할 수 있는 정책들이다. 웬만한 정책들은 제공해주고 있
secblog.tistory.com
이전에 terraform을 통해 AWS Config 규칙을 작성하는 방법을 알아봤었다. 이것도 좋은 방법이지만 Config 규칙을 더 효과적이고 빠르게 조직 단위에 배포할 수 있는 방법을 찾아서 추가로 작성하려고 한다.
AWS Docs에서 OU단위로 Config 규칙을 적용하는 방법이 자세히 나와있었다. 이 방식도 terraform을 통해 사용할 수 있다. 이전과 같은 방법으로 terraform을 통해 작성해봤다.
Managed & Custom Guard Rule 작성
resource "aws_config_organization_managed_rule" "api-gw-endpoint-type-check" {
count = var.api-gw-endpoint-type-check ? 1 : 0
name = "api-gw-endpoint-type-check"
description = "Checks if Amazon API Gateway APIs are of the type specified in the rule parameter endpointConfigurationType. The rule returns NON_COMPLIANT if the REST API does not match the endpoint type configured in the rule parameter."
input_parameters = local.api-gw-endpoint-type-check
rule_identifier = "API_GW_ENDPOINT_TYPE_CHECK"
excluded_accounts = var.excluded_accounts
}
aws_config_organization_managed_rule 리소스를 통해 Managed 규칙을 만들어낼 수 있다.
docs에 설명되어 있는 값들을 보면서 필요한 내용들을 하나씩 작성해서 사용하면 된다! 중요한 포인트는 exclued_accounts 내 아래와 같이 List 형태로 계정ID을 넣게되면 특정 계정에 Config 규칙이 생성되는걸 제한할 수 있어서 적용하고 싶지 않는 계정에 대한 예외처리가 용이하다. (OU 단위의 예외는 지원하지 않는 듯 하다..)
- excluded_accounts = ["000000000000", "111111111111"]
resource "aws_config_organization_custom_policy_rule" "restrict-internet-alb" {
count = var.restrict-internet-alb ? 1 : 0
name = "restrict-internet-alb"
description = "Custom Rule"
trigger_types = ["ConfigurationItemChangeNotification"]
policy_runtime = "guard-2.x.x"
policy_text = templatefile("${path.module}/config-policies/restrict-internet-alb.tpl", {})
excluded_accounts = var.excluded_accounts
}
aws_config_organization_custom_policy_rule 리소스는 Guard를 사용한 Custom 규칙을 만들 수 있게 해준다.
적용 테스트
적용 테스트를 위해 조직단위를 생성하고 계정을 추가로 생성했다. root 계정에서 정책을 적용하면, 아래 Config라는 별칭을 가지는 계정에도 정책이 자동으로 적용되는지? Config 계정에서 규칙 편집이나 삭제가 가능한지? 를 확인해보려고 했다.
우선 Root 계정에서 terraform apply 이후 config 계정에서 규칙이 잘 생성된걸 확인했다.
신기했던 부분은 테라폼에서 선언했던 정책 이름 앞뒤로 특정 prefix(OrgConfigRule / 랜덤문자)가 자동으로 붙는다. 정책에 이런 prefix가 붙어있으면 config 관리자계정에서 배포된 정책이란걸 바로 알 수 있다.
Config 관리계정이 아닌 하위 계정들에서 정책 편집이나 삭제가 불가능하다! 이 서비스를 잘 활용하면 사용자들이 정책을 임의로 변경 또는 삭제하거나 평가결과를 삭제하는 행위를 사전에 방지할 수 있고 관리계정에서 유연하게 정책 컨트롤이 가능하다. 조직단위로 여러 계정들을 묶어서 관리하고 있는 환경이라면 충분히 적용시켜볼만한 기능인 것 같다.
'AWS' 카테고리의 다른 글
RDS CCE 취약점 진단하기 (0) | 2023.08.06 |
---|---|
Multi-Account 환경에서 사용중인 서비스 조회 (0) | 2023.08.06 |
AWS Config 테라폼 모듈 구현 (0) | 2023.08.05 |