티스토리 뷰
테스트 환경 구성 : https://www.runatlantis.io/guide/testing-locally.html#install-terraform
conftest policy : https://www.runatlantis.io/docs/policy-checking.html#how-it-works
./atlantis server \
--atlantis-url="$URL" \
--gh-user="atlantis" \
--gh-token="$TOKEN" \
--gh-webhook-secret="$SECRET" \
--repo-allowlist="$REPO_ALLOWLIST" \
--enable-policy-checks \
--repo-config=atlantis.yaml
위와 같이 실행해서 테스트를 진행했다.
주의할 점은 --enable-policy-checks 옵션과 --repo-config=atlantis.yaml 을 지정해줘야 한다.
또한, atlantis.yaml 파일에 설정 시 아래와 같이 꼭! 버전 지정을 해줘야 한다.
미지정시 오류 관련 이슈 : https://github.com/runatlantis/atlantis/issues/1632
# atlantis.yaml
policies:
conftest_version: 0.23.0
owners:
users:
- qwer
policy_sets:
- name: null_resource_warning
path: /Users/[USERNAME]/Downloads/atlantis_test/null_resource_warning/
source: local
path에 전체 경로로 넣어줘야되며, 현재는 source를 local만 지원한다.(참고)
users에 검증이 실패하더라도 허용해줄수있는 유저를 명시해주면 된다.(예를들어 0.0.0.0/0 오픈을 막는다고 가정하면, 서비스 시에는 꼭 필요하므로 실제 필요한지 점검 후 허용해주는 식이다.)
유저가 맞지 않으면 아래 명령어를 입력해도 승인이 실패한다.
atlantis approve_policies
당연히 apply 도 실패한다.
이제 users를 qwer에서 cjsrkd3321로 변경해준다. 그 후 다시 시도한다.
정책상 안되도록 되어있지만 atlantis.yaml 파일 수정 후 서버 재기동했기 때문에 cjsrkd3321이 정책 승인 가능하다.
승인 후 apply 까지 완료하면 Merge pull request 버튼이 초록색으로 활성화된다.
아래는 실제 null_resource_warning 검사하는 파일이며, 확장자 꼭! 붙여줘야한다.
# null_resource_warning.rego
package main
resource_types = {"null_resource"}
# all resources
resources[resource_type] = all {
some resource_type
resource_types[resource_type]
all := [name |
name:= input.resource_changes[_]
name.type == resource_type
]
}
# number of creations of resources of a given type
num_creates[resource_type] = num {
some resource_type
resource_types[resource_type]
all := resources[resource_type]
creates := [res | res:= all[_]; res.change.actions[_] == "create"]
num := count(creates)
}
deny[msg] {
num_resources := num_creates["null_resource"]
num_resources > 0
msg := "null resources cannot be created"
}
원래는 apply 부분도 X 표시가 들어오는데, 사진을 잘못찍었다. 나중에 더 고급지게 사용하게 될 때 수정하도록 하자.
'퍼블릭클라우드 > Terraform' 카테고리의 다른 글
Finding latest version of hashicorp/teplate... (0) | 2021.08.02 |
---|
- Total
- Today
- Yesterday
- scp
- defaulttheme
- security
- 계정정보저장
- CIS
- findinglatestversion
- fleet manager
- REACT
- conftest policy
- temlate
- web
- AWS #CIS
- platform
- .get()
- Cloud
- 2xx
- 4xx
- teplate
- opensource
- IAM
- compliance
- stateType
- ControlTower
- 우주와컴퓨터
- terraform
- ViaAWSService
- aws
- cloudsecurity
- JavaScript
- steampipe
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |