작년에 보안팀으로 복귀하고나서 감 떨어지지 않도록 테라폼 스터디를 진행했었을때 삽질을 하던게 생각이 났다.
테라폼으로 sso의 권한세트를 이용하여 여러 ou 어카운트에 iam 정책을 별도로 정하고싶었다.
근데 고객 관리형 정책(Service managed Policy)은 어카운트에 해당 iam이 배포되어있어야 사용할 수 있었다.
물론 미리 각 어카운트에 알맞는 iam을 배포해두면 가능하지만, 실무하는 입장에서는 어카운트 마다 apply가 번거로울 수 밖에 없다.
iam 작성 -> git push -> plan -> apply
그래서 "테라폼 프로바이더를 동적으로 사용할 수 있을까?" 를 고민했었는데
삽질해본 결과 지원되지는 않았다.
결국 인라인 정책으로 일괄 적용해서 쓰는 수 밖에 없었다...
시간이 좀 지나서 문득 혹시나 해서 gpt가 알고있는게 있지 않을까 해서 물어보다보니 stackset이라는걸 알려주더라
오?
가능성이 있어보였다.
AWS Docs에서 Stackset을 확인해보니 다음과 같았다.
이를 통해 테라폼 Security Account로 apply 시도했을때 Stackset을 이용해서 여러 멤버 어카운트에 iam 생성하고 고객관리형 정책 배포가 가능한것으로 보였다.
이후 stackset 자료를 찾아보니 control tower도 stackset을 이용하더라.
개념은 대충 알았으니 빠르게 테라폼 코드를 작성해서 테스트를 진행해봤다.
처음써보는거다 보니 permission model을 SELF_MANAGED로 사용했었다. 그러다 보니 관리자 역할, stackset을 실행할 역할을 다 설정해줘야했다.
물론 여러 어카운트에 각각 테라폼 배포를 하기 위한 롤은 있었기 때문에 문제는 없었지만 너무 번거로웠다
그러다 테라폼 docs에서 aws_cloudformation_stack_set의 Argument를 살펴보니 SERVICE_MANAGED로 사용하면 롤 설정이 필요가 없었다.
Cloudformation docs에서도 확인할 수 있다.
내용을 확인했으니 SERVICE_MANAGED로 코드를 재작성하고 배포를 진행했다.
secops 어카운트에 iam 정책이 잘 배포 된걸 확인할 수 있었다.
sso center에도 권한세트에 고객 관리형 정책으로 잘 적용되었다.
프로비저닝 된 계정도 알맞게 들어갔다.
테라폼 apply 한번에 여러 어카운트에 정책을 배포하고 sso senter에서 컨트롤 할수있게 설정했다는것에 뿌듯 했다.
aws_cloudformation_stack_set을 잘 활용하면 sso senter 컨트롤하기 위한 정책 뿐만 아니라 다른 방향으로 괜찮을것 같다.
이렇게 까지 해서 실무에서 쓰일까 고민이 된다.
테라폼도 러닝커브가 있을텐데 aws_cloudformation_stack_set 리소스 배포를 위해 테라폼에서 사용될 cloudformation 문법도 고려해야된다.
테라폼에도 비슷한 기능이 출시했다. 앞서 고민했던 Provider를 동적으로 사용할 수 있는것 같다. 아직 베타인것 같고 일정 라이선스 이상일때 사용이 가능한것으로 보인다
그나저나 언제 보안팀에서 테라폼을 써볼 수 있을까...?ㅋㅋㅋㅋ