메뉴 닫기

[AWS] ElasticSearch(OpenSearch) 권한 오류 (feat. IAM VisualEditor 버그)

배경

업무 중 사용자 계정에 ElasticSearch(현재 서비스명은 OpenSearch) 권한을 추가해달라는 요청이 들어왔다.

평소와 동일하게 Managed Policy를 추가하려다가, SSO Permission Set에 이미 10개의 관리형 정책이 들어가 있어서, 추가적으로 관리형 정책을 추가하는것이 불가능했다. 그래서 권한 정책을 이용해서 수동으로 정책을 추가해주었다.

물론 SSO PermissionSet에 할당될 수 있는 ManagedPolicy를 확장하는 것도 가능하지만, 어짜피 Permission Set 중에서 특정 유저에게만 권한을 부여해야 했기에, 권한정책을 이용했다.

문제발생

1차적인 문제는 Principal ARN과 Condition을 이용해서 특정 사용자에게만 해당 권한을 주도록 설정하는 과정에서 발생했다.

Condition이 List 명령에는 적용되지 않아서, 오류가 발생하는 것이었다.

그래서 Read 권한과 쓰기 권한을 분리해서 부여하였다.

먼저 Read 권한을 Condition 없이, Allow 시킨 후에 Condition을 걸어서 쓰기 동작을 같이 Allow 해주었다.

여기서도 잘 되는듯 싶었지만, 다른 문제가 발생했다.

ElasticSearch 메뉴에 보면, Notifications 창이 있는데, 해당 Notifications가 조회가 되지 않는 것이었다.

정책은 IAM에서 Visual Editor를 이용해서 만들었기 때문에 , 문제가 없었을 거라고 생각했지만 확인해본 결과

Visual Editor에서 List, Read 권한을 확장해봤는데, 해당 getNotificatino이라는 동작이 누락이 되어있었다.

VisualEditor 관련한 버그로 파악이 된다.

해결

그래서 결국 기존에 Read권한과 List 권한을 선택해서 Allow하는 방식이 아니라,

es:* 권한에 대해서 Allow 하고, 쓰기 권한에 대해서 특정 Principal ARN이 아닌 경우에 Deny하는 정책을 설정해 주었다.

결론

AWS Visual Editor에서 List, Read권한을 선택했을 때, 해당 권한이 VisualEditor 리스트에 들어있지 않아서, List Action을 전부 선택했음에도, 문제가 발생할 수 있다.

해결 방법으로는 명시적으로 VisualEditor에서 작성 시 누락된 기능을 추가하거나, * 를 이용해서 문제가 발생하는 그룹의 액션을 전체적으로 Allow 해주는 방법이 있다.

IAM 정책에 대한 실제 예시는 조금 시간이 날 때 추가적으로 업데이트 할 예정이다.

Related Posts

답글 남기기

이메일 주소는 공개되지 않습니다.

%d 블로거가 이것을 좋아합니다: