brunch

You can make anything
by writing

C.S.Lewis

by DaeHyun Kim May 30. 2022

AWS 자습서 따라할 때 주의할 점

대체 왜 이렇게 만들어 놨는지?

0. AWS IoT Core 자습서를 그냥 따라하다 보면 매우 어색한 상황에 빠지게 된다. 오늘은 그 점을 이야기해보고 싶다.


1. AWS IoT Core 개발자 안내서의 IoT 자습서를 보면 아래와 같은 파트가 나온다.(참고 링크: https://docs.aws.amazon.com/ko_kr/iot/latest/developerguide/iot-dc-prepare-device-test.html)

디바이스에 AWS 계정 자격증명을 "추가"한다.

이게 겉보기에는 아무런 문제가 없어 보인다. 디바이스가 AWS에 붙어서 작동하려면 당연히 AWS와 연동할수 있는 계정 정보를 가지고 있어야할 것이다.

하지만 다시한번 생각해보자. 정말 문제가 없나? 자습서에서 이 과정은 IoT 단말에 IAM 계정 정보를 등록 후 바로 CLI로 작업을 수행하기 위한 절차다. CLI로 수행하는 절차는 단말 등록, 정책 등록, 단말과 정책 매칭등이 있다.

한마디로, 단말에서 Admin 작업을 수행하게 된다.


2. 일반적으로 단말은 정말 특수한 상황이 아닌한 수십개 이상의 단말을 등록해서 사용하게 된다. 이미 AWS에서는 그러한 경우를 위해 Fleet Provisioning을 마련해 두었다.(https://docs.aws.amazon.com/ko_kr/iot/latest/developerguide/iot-provision.html)

이 절차는 위에서 실시한것과 다르다. 단말에 주는것은 인증절차 시작에 필요한 인증서를 올리는 것이 전부다. 대부분의 관리작업은 AWS 콘솔에서 수행하거나 아니면 작업용 PC에서 CLI로 처리한다. 최소한 단말에서 뭔가 계정정보를 관리하거나, Admin 작업을 실시하지는 않는다.


3. AWS의 정책기반 설계는 매우 유용하고 강력하다. 예를 들어, IoT Core의 iot:connect에 accepted 권한을 주지 않으면, 방화벽상으로 열려있다 한들 단말이 접속하려 할때 connectionTimeOut이 발생한다.

얼핏 생각하기엔 "policy denied"같은 예외가 발생해야 하는게 맞지 않을까 싶지만, IoT edge 단에서 어떤 AWS 리소스가 있는지 무작위로 찌르고 다닐때 이렇게 명확히 나뉘어져 있는 에러 메시지는 오히려 크래커에게 허점을 노출할수도 있다. 다시말해, SDK 상에서조차 식별이 어렵도록 설계해놓은 것이다.


그렇다면 AWS는 계정에 대한 관리 방법론에 대해 제대로 체계화 해야 할 필요가 있지 않을까 싶다. 대부분의 개발자들이 그냥 편하다고 아무생각없이 계정과 정책을 운영하다보면 생각지도 않은곳에서 보안상 큰 구멍을 노출하게 된다. 단말에 IAM 정보를 심은 상태에서 누군가 단말을 훔쳐가 뜯어보기라도 한다면? 아무리 좋은 정책이라 한들 그것을 쓰는것에 익숙해지지 않으면 안된다. 이런 부분은 AWS에서도 좀 관심을 가지고 보완하는게 좋지 않을까 생각한다.


이 내용은 AWS IoT Core 워크샵때 이야기한 내용을 정리해서 적은 것이다. 개선에 도움이 되었으면 하는 바램과 나와 똑같은 바보짓을 하는 사람이 없기를 바라는 마음으로 적어둔다.

작가의 이전글 Krav Maga. 2년의 소고.
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari