AWS Cognito 로 OpenSearch 대시보드 접근하기

2026. 2. 12. 20:39·기타

AWS Cognito 로 OpenSearch 대시보드 접근하기

문제상황

기존 OpenSearch에서 내부 데이터베이스 마스터 사용자를 생성해서 대시보드에 접근하고 외부 어플리케이션에서도 해당 아이디 비번으로 HTTP 기본 인증으로 접속했다.

근데 몇주 전, 원인을 알 수 없는 이슈가 발생해서 이틀연속으로 사용자 계정과 인덱스가 없어지는 사건이 발생했다.

로그를 보면 순차적으로 데이터가 지워진 모습..

답변을 보면 계정팀 부서라서 확인에 한계가 있는걸로 보입니다.. 지원 플랜을 이용하면 전문 부서의 솔루션이 이용가능하다는데 비용부담도 그렇고, 개인적으로 추측하건데 계속 업데이트를 미루던 상황에서 업데이트 이후 해당 이슈가 안 일어나는걸로 보아 일단은 오케이… 이런 상황이었습니다.

그래도 보완은 해야하므로 내부 사용자 대신에 IAM ARN 마스터 사용자로 설정하도록 바꿔볼 생각입니다.

Cognito

해당 답변을 듣자마자 바로 고민이 생겼습니다. 어플리케이션에서는 IAM 사용자로 접속한다치고

직접 대시보드(키바나 같은 환경)에 접근은 어떻게 하는거지? 왜냐하면 대시보드에서 입력한 아이디와 비밀번호는 내부 데이터베이스 관리자 계정이었기 때문입니다.

친절하게도, 답변 링크를 자세히 살펴보니 거기에 대한 답변까지 들어있었습니다.

💡
Amazon OpenSearch를 세분화된 액세스 제어로 구성하고 IAM ARN을 마스터 사용자로 설정한 경우, IAM 사용자 자격 증명을 사용하여 OpenSearch 대시보드에 직접 로그인할 수 없습니다. 대신 Amazon Cognito 인증을 사용하여 대시보드에 액세스해야 합니다. 다음은 설정 방법입니다.
  • OpenSearch 도메인에 대한 Amazon Cognito 인증을 구성합니다. 이 과정에는 Cognito 사용자 풀과 ID 풀을 생성하는 작업이 포함됩니다.
  • OpenSearch 서비스 콘솔에서 도메인의 보안 구성을 편집하여 OpenSearch 대시보드에 Amazon Cognito 인증을 활성화하십시오.
  • Cognito ID 풀에서 제공되는 역할 중 하나가 마스터 사용자로 지정한 IAM 역할과 일치하는지 확인하십시오.
  • 대시보드에 접속하려고 할 때 "역할 누락" 오류가 발생하는 경우 도메인의 보안 구성을 업데이트해야 할 수 있습니다.
    • OpenSearch 서비스 콘솔로 이동하세요.
    • 도메인을 선택하고 "작업"을 클릭한 다음 "보안 구성 편집"을 선택하세요.
    • "IAM ARN을 마스터 사용자로 설정"을 선택하세요.
    • "IAM ARN" 필드에 Amazon Cognito ID 풀 역할의 ARN을 입력하십시오.
    • 변경 사항을 저장하세요
  • 설정이 올바르게 완료되면 Cognito 로그인 페이지를 통해 OpenSearch 대시보드에 액세스할 수 있습니다.

IAM을 사용하여 세분화된 액세스 제어를 통해 사용자를 관리할 때는 IAM 자격 증명으로 대시보드에 직접 로그인할 수 없다는 점을 기억하십시오. Cognito 인증은 중간 역할을 하여 IAM 역할을 활용하는 동시에 대시보드에 대한 로그인 인터페이스를 제공합니다

https://repost.aws/questions/QUI8m-ccCCSTu93DKUoJZBhg/how-can-i-sign-in-opensearch-dashboard-if-master-user-is-set-to-iam-user

제가 이해한 바로는 Cognito 에서 별도의 로그인 인터페이스를 제공하는 것 같습니다.

흐름

  • 로그인 페이지 접속: 브라우저에서 대시보드 주소를 칩니다.
  • Cognito 로그인: AWS IAM 계정이 아니라, Cognito에서 생성한 아이디/비번으로 로그인합니다.
  • 권한 획득: 로그인이 성공하면, Cognito는 사용자에게 미리 설정된 '인증된 역할(Authenticated Role)'을 부여합니다.
  • OpenSearch 입장: OpenSearch는 이 '인증된 역할'에 마스터 권한이 있는지 확인하고 대시보드를 보여줍니다.

설정

사용자 풀 (인증)

처음 사용자풀을 만들면 여기에 속한 사용자들이 인증을 대신 처리해줄 클라이언트 하나를 만들게 됩니다.

  • 사용자 풀 (User Pool): 실제 회원 정보(이메일, 비밀번호 등)가 저장된 DB입니다.
  • 앱 클라이언트 (App Client): 이 DB를 외부(OpenSearch)에서 사용할 수 있게 열어주는 전용 입구(Interface)입니다.

사용자 풀에서 이메일과, 비밀번호로 로그인하도록

OpenSearch 는 AWS 가 호스팅하는 어플리케이션 이고사용자가 대시보드 URL에 접속하면 → Cognito 로그인 페이지로 리디렉션되고 → 로그인이 끝나면 다시 대시보드 페이지로 돌아오는 흐름이므로 해당 유형을 선택하면 될 것 같고

간단하게 이메일로 로그인

  • 셀프등록 : OpenSearch 는 모두가 계정하고 가입하면 안되니 해제

  • 이메일 로그인이면 필수속성을 이메일로 지정해야되지 않나 하는데 그러면 강제로 설정되게 만들어뒀겠지라 생각하고 넘어간다

복귀 URL 은 OpenSearch 에서 Cognito 연결할 때 제공해주지 않을까 하고 일단 넘어간다.

사용자 생성

사용자 풀 들어가서 대시보드로 로그인할 사용자를 생성합니다.

  • 바로 내가 쓸 계정 만드는거라 이메일 초대를 보내지 않아도된다.

위에서 만든 어플리케이션은 결국 사용하지 않습니다. OpenSearch 콘솔의 보안 구성에서 Cognito를 활성화하면 전용 클라이언트가 자동으로 생성되어 사용됩니다. 생각해보면 OpenSearch 가 원하는 기본규격으로부터 연결 후 수정하는게 연결부터 에러가 나는 것 보다 여러모로 편해서 그렇지 않을까 싶습니다.

💡

정리하면 위 과정에서는 사용자 풀과 사용자 생성만 해주면 됩니다.

자격 증명 풀 (권한 부여)

사용자 풀이 로그인만 담당한다면, 자격 증명 풀은 "로그인한 사람에게 AWS 권한(IAM Role)을 빌려주는 역할"을 합니다.

  • 로그인 성공! → 자격 증명 풀이 "오, 너 우리 회원 맞구나?" 확인 → 임시 IAM 키 발급 → OpenSearch 입장 허가.

위에서 만든 사용자풀에 권한을 부여해야하니깐 이렇게 설정해주고

Cognito로 로그인에 성공한 사용자에게 어떤 역할을 줄 것인가?를 결정하는 과정

설명을 보면 자동으로 새 역할을 생성하게 된다는 아마 OpenSearch 에서 Cognito에 연결하면 그 때 연결에 필요한 역할을 자동으로 업데이트 해주지 않을까 싶다.

사용자풀, 클라이언트 지정해주고

역할설정은 앞에서 설정한 IAM 역할을 그대로 사용하게, 나머지 설정은 뭐지 싶어서 제미나이에게 물어봤다

  • 규칙으로 역할 선택
    • 의미: "이메일 주소가 @company.com인 사람은 관리자 역할을 주고, 그 외엔 일반 사용자 역할을 주겠다"처럼 조건부로 역할을 나눌 때 씁니다.
  • 토큰에서 preferred_role 클레임으로 역할 선택
    • 의미: 사용자 정보(토큰) 안에 아예 어떤 역할을 가질지 써놓는 방식입니다. (고급 설정)
  • 액세스 제어 : 예를 들어 "부서가 '개발팀'인 사람만 특정 인덱스를 보게 해라"처럼 아주 세밀하게 IAM 정책을 짜고 싶을 때, 사용자의 '부서' 정보를 태그로 넘겨주는 기능

마찬가지로 기본인증이 뭐지 싶어서 물어보니

  • 향상된 흐름 (Enhanced Flow - 권장): 현재 AWS의 표준 방식입니다. 로그인이 성공하면 Cognito가 알아서 임시 보안 토큰을 발급해 줍니다. 보안성이 더 높고 단계가 단순합니다.
  • 기본 흐름 (Classic Flow): 아주 예전 방식입니다. 앱이 토큰을 받은 뒤, 다시 한 번 AWS STS 서비스에 "이 토큰 줄 테니 임시 키로 바꿔줘"라고 요청하는 단계를 하나 더 거쳐야 합니다.

OpenSearch 대시보드 연동은 기본적으로 '향상된 흐름'을 사용하므로, 굳이 보안상 더 취약하고 복잡한 '기본 흐름'을 켤 필요가 없습니다.

설명을 들으니 딱 oauth2.0 에서 oidc 가 나오게 된 배경과 똑같은 흐름이지 않나 생각한다.

시스템 구성 후 인증된 역할을 들어가서 확인해보니

Cognito-authenticated-1770374623484 역할이 할당되었습니다.

OpenSearch 보안설정

해당 IAM IRN 은

자격 증명 풀에 인증된 역할 ARN 을 입력해주면된다

Cognito 인증 활성화

오류

💡

Login pages unavailable

Please contact an administrator.

대쉬보드에 접속하니깐 오류가 뜨는데 이게 로그인 페이지를 설정하지 않아서 그렇다.

앱 클라이언트마다 사용자풀 - 관리형로그인 - 브랜딩 - 스타일

로그인 스타일을 적용해야한다.

  • 관리형 로그인

https://www.reddit.com/r/aws/comments/1m15xyt/cognito_after_ading_custom_domain_login_page_url/

이후에 똑같은 문제가 발생했는데, 이미 저장된 스타일을 눌러 변경된 내용을 저장 버튼을 다시 눌러주니 해결된다.

'기타' 카테고리의 다른 글

Opensearch 데이터/설정/인덱스 초기화 이슈  (0) 2026.02.26
ElasticSearch to OpenSearch(라이센스 체크우회)  (1) 2026.01.16
'기타' 카테고리의 다른 글
  • Opensearch 데이터/설정/인덱스 초기화 이슈
  • ElasticSearch to OpenSearch(라이센스 체크우회)
gucoding
gucoding
gucoding 님의 블로그 입니다.
  • gucoding
    gucoding 님의 블로그
    gucoding
  • 전체
    오늘
    어제
    • 분류 전체보기 (14)
      • spring (1)
      • 회고 (1)
      • DB (3)
      • 개념잡기 (4)
      • Java (2)
      • 기타 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    opensearch
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
gucoding
AWS Cognito 로 OpenSearch 대시보드 접근하기
상단으로

티스토리툴바