0Pricing
Terraform Infrastructure as Code · 강의

거버넌스를 위한 Sentinel 정책

Terraform 배포 전반에서 규정 준수와 거버넌스를 보장하도록 HashiCorp Sentinel을 사용해 정책을 코드로 작성하고 적용하는 방법을 학습합니다.

거버넌스를 위한 Sentinel 정책은(는) CoddyKit의 무료 Terraform Infrastructure as Code 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Terraform Infrastructure as Code 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Terraform Infrastructure as Code 강의에는 총 4개의 강의가 포함되어 있습니다.

코드로서의 정책 및 Sentinel 소개

인프라 배포가 특정 규칙을 충족하는지 자동으로 확인할 수 있다면 어떨까요? 이것이 바로 코드로서의 정책(PaC)의 힘입니다. PaC는 인프라 생성 및 수정에 대한 규칙을 프로그래밍 가능한 방식으로 정의하여 거버넌스를 개발 워크플로에 통합합니다. HashiCorp Sentinel은 이러한 목적에 맞게 설계된 강력한 PaC 프레임워크입니다.

Terraform에서 Sentinel의 역할

Sentinel은 Terraform Cloud 및 Terraform Enterprise와 직접 통합됩니다. Sentinel은 게이트키퍼 역할을 하며, 클라우드 환경에 변경 사항을 적용하기 전에 Terraform 실행 계획을 평가합니다. 이 중요한 단계는 규정을 준수하지 않거나 안전하지 않은 인프라가 프로비저닝되는 것을 사전에 방지하고, 규칙을 선제적으로 적용합니다.

정책 및 적용 수준

Sentinel 정책은 Sentinel 언어로 작성된 규칙 집합입니다. 정책이 실행되면 true(통과) 또는 false(실패)를 반환합니다. 정책은 서로 다른 적용 수준으로 구성할 수 있습니다.

  • 권고: 위반을 경고하지만 작업은 계속 진행할 수 있습니다.
  • 소프트 필수: 규정을 준수하지 않는 변경을 진행하려면 명시적인 재정의가 필요합니다.
  • 하드 필수: 규정을 준수하지 않는 작업을 완전히 차단하며 정책 준수를 요구합니다.

Sentinel 정책 구조

Sentinel 정책은 .sentinel 파일에 정의합니다. 일반적으로 가져오기, 규칙 및 기본 조건을 포함합니다. main 규칙은 정책의 통과 또는 실패 결과를 결정합니다.

기본적인 정책은 다음과 같은 형태입니다.

import "tfplan"

main = rule {
  tfplan.resource_changes is empty
}

Terraform 계획 데이터에 액세스하기

tfplan 가져오기는 Terraform 실행 계획을 구조화된 형태로 제공합니다. 정책은 이 데이터를 사용하여 다음을 검사합니다.

  • tfplan.resource_changes: 생성, 업데이트 또는 삭제되는 리소스에 대한 세부 정보입니다.
  • tfplan.variables: 구성에 제공된 입력 변수입니다.
  • tfplan.outputs: 구성에서 출력되는 값입니다.

이 데이터는 Terraform이 수행하려는 작업을 바탕으로 정보에 근거한 정책 결정을 내리는 데 매우 중요합니다.

예제: 승인되지 않은 리전 거부

모든 AWS 리소스가 us-east-1에만 배포되도록 Sentinel 정책을 작성해 보겠습니다. 이 정책은 계획에서 각 AWS 리소스에 구성된 리전을 확인합니다.

import "tfplan/v2" as tfplan

allowed_regions = ["us-east-1"]

is_region_allowed = func(resource_change) {
  if resource_change.provider.name is "aws" {
    region = resource_change.provider.config.region else "us-east-1"
    return region in allowed_regions
  }
  return true # Not an AWS resource, allow
}

all_regions_compliant = all tfplan.resource_changes as _, rc {
  is_region_allowed(rc)
}

main = rule {
  all_regions_compliant
}

정책 함수 및 연산자

Sentinel은 복잡한 논리를 작성할 수 있도록 강력한 기본 제공 함수와 연산자를 제공합니다.

  • 컬렉션 함수: 목록 또는 맵을 순회하기 위한 all, any, filter, map입니다.
  • 형식 함수: 데이터 형식을 확인하기 위한 is, type_of입니다.
  • 연산자: 논리 연산자(and, or, not)와 비교 연산자(==, !=, >, <)입니다.

이러한 기능을 사용하면 다양한 시나리오를 다루는 견고하고 표현력 있는 정책을 작성할 수 있습니다.

예제: 필수 태그 적용

일반적인 거버넌스 요구 사항 중 하나는 비용 할당 또는 식별을 위해 리소스에 특정 태그를 적용하는 것입니다. 이 정책은 새로 생성되거나 업데이트되는 모든 aws_instance 리소스에 Project 태그가 있는지 확인합니다.

import "tfplan/v2" as tfplan

required_tags = ["Project"]

resource_has_required_tags = func(resource_change) {
  if resource_change.type is "aws_instance" {
    # Check if 'tags' attribute exists in the planned state
    if not ("tags" in resource_change.change.after) {
      return false
    }
    
    missing_tags = filter required_tags as tag {
      not (tag in resource_change.change.after.tags)
    }
    return missing_tags is empty
  }
  return true # Not an aws_instance, allow
}

all_instances_tagged = all tfplan.resource_changes as _, rc {
  (rc.change.actions contains "create" or rc.change.actions contains "update") ?
    resource_has_required_tags(rc) :
    true # Only check on create/update actions
}

main = rule {
  all_instances_tagged
}

로컬 정책 테스트

Terraform Cloud/Enterprise에 정책을 배포하기 전에 Sentinel CLI를 사용하여 로컬에서 테스트할 수 있습니다. sentinel test 명령을 사용하면 모의 tfplan 데이터를 사용하여 테스트 사례를 정의할 수 있습니다. 이를 통해 정책 동작을 확인하고 오류를 조기에 발견하여 실제 환경에 영향을 주지 않고 정책이 의도한 대로 작동하는지 확인할 수 있습니다.

정책 논리 확인

공개 읽기 액세스가 설정된 AWS S3 버킷이 생성되지 않도록 Sentinel 정책을 작성해야 합니다. 이를 적용하려면 tfplan 데이터의 어느 부분을 주로 검사해야 합니까?

복습: Sentinel을 사용한 거버넌스

강력한 거버넌스용 코드로서의 정책 프레임워크인 HashiCorp Sentinel을 살펴보았습니다.

  • Terraform Cloud/Enterprise와 통합하여 규칙을 적용합니다.
  • 정책은 인프라가 적용되기 전에 tfplan을 평가합니다.
  • 서로 다른 적용 수준(권고, 소프트, 하드)을 통해 정책의 영향 범위를 제어합니다.
  • 리전을 거부하고 태그를 적용하는 등 다양한 정책을 작성할 수 있습니다.
  • 로컬 테스트를 통해 배포 전에 정책이 의도한 대로 작동하는지 확인할 수 있습니다.

Sentinel은 인프라 배포 전반에서 규정 준수, 보안 및 운영 표준을 유지하는 데 핵심적인 역할을 합니다.

자주 묻는 질문

“거버넌스를 위한 Sentinel 정책” 강의는 무료인가요?

네 — “거버넌스를 위한 Sentinel 정책” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Terraform Infrastructure as Code 강의 전체를 잠금 해제할 수 있습니다. Terraform Infrastructure as Code 강의에는 총 4개의 강의가 포함되어 있습니다.

“거버넌스를 위한 Sentinel 정책”에서 뭘 배우나요?

Terraform 배포 전반에서 규정 준수와 거버넌스를 보장하도록 HashiCorp Sentinel을 사용해 정책을 코드로 작성하고 적용하는 방법을 학습합니다. 브라우저에서 직접 실행하는 실습 코드로 Terraform Infrastructure as Code을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Terraform Infrastructure as Code을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Terraform Infrastructure as Code은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“거버넌스를 위한 Sentinel 정책” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Terraform Infrastructure as Code 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Terraform Infrastructure as Code 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 멀티 클라우드 및 하이브리드 클라우드 패턴
  2. 거버넌스를 위한 Sentinel 정책
  3. Terraform Cloud와 Enterprise
  4. 사용자 지정 프로바이더 구축
← Terraform Infrastructure as Code(으)로 돌아가기