Always-Try(정보보안 및 일상)

AWS Elasticsearch(Opensearch) 와 AWS Cognito 연동 1편 (기본 연동 방법) 본문

AWS

AWS Elasticsearch(Opensearch) 와 AWS Cognito 연동 1편 (기본 연동 방법)

Always-Try 2021. 12. 8. 22:22

1. AWS Cognito란?

간단하게 말하자면 로그인 기능을 지원해주는 서비스이다. 더 자세한 설명은 AWS의 공식 설명을 참고해본다.

 

Amazon Cognito는 웹 및 모바일 앱에 대한 인증, 권한 부여 및 사용자 관리를 제공합니다. 사용자는 사용자 이름과 암호를 사용하여 직접 로그인하거나 Facebook, Amazon, Google 또는 Apple 같은 타사를 통해 로그인할 수 있습니다.

Amazon Cognito의 두 가지 주요 구성 요소는 사용자 풀과 자격 증명 풀입니다. 사용자 풀은 앱 사용자의 가입 및 로그인 옵션을 제공하는 사용자 디렉터리입니다. 자격 증명 풀을 통해 사용자에게 기타 AWS 서비스에 액세스할 수 있는 권한을 부여할 수 있습니다. 자격 증명 풀과 사용자 풀을 별도로 또는 함께 사용할 수 있습니다.

 

 

2. AWS Cognito 사용자 풀 & 자격 증명 풀 생성

먼저 사용자 풀 관리를 클릭해서 사용자 풀을 생성하자.

 

다음으로 자격 증명 풀 관리를 통해 자격 증명 풀을 생성하자.

여기서 중요한 것은 인증 공급자이다. 어떤 공급자가 있는지 확인하기 위해 아래 그림에 있는 '인증 공급자'를 클릭해보자.

다양한 인증 공급자를 생성할 수 있는 필자는 기본 공급자인 Cognito를 선택해서 테스트했다. 사용자 풀 ID와 앱 클라이언트 ID는 조금 전에 생성한 사용자 풀에서 정보를 확인할 수 있다. 해당 정보를 입력해주면 Cognito 자격 증명 풀도 생성이 완료된다.

 

 

3. AWS Elasticsearch(Opensearch)에 AWS Cognito를 연결

이제 AWS Elasticsearch(Opensearch)에 AWS Cognito를 연결해보겠다. AWS Elasticsearch(Opensearch)로 가서 생성한 도메인의 보안 구성 편집 메뉴를 들어가보자. (참고로 퍼블릭 액세스 환경이다.)

그리고 Amazon Cognito 인증 활성화를 체크하고 방금 생성한 cognito 정보를 선택해준다.

이후 elasticsearch 도메인으로 접근했더니 아래와 같은 에러가 뜬다.

Something went wrong during authentication between Kibana and Amazon Cognito.

아래와 같이 액세스 정책을 수정하여 해결했다.



{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::----------:role/Cognito_testcase3Auth_Role"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:ap-northeast-2:-----------:domain/test-case3/*"
    }
  ]
}

 

이후 다시 키바나 도메인으로 접속해보면 기존과는 다르게 아래와 같은 로그인 ID/PW를 입력하는 메뉴가 뜬다. 그럼 성공이다.

 

지금은 Cognito 기본 설정으로 진행해서 MFA를 포함한 Cognito의 다른 기능을 살펴보진 못했다. 이와 관련해서는 다음 포스팅을 통해 추가적으로 더 알아보자.

Comments